MQL4でクラスの作成方法
書式
まず、クラスを宣言して、修飾子を宣言してクラス変数とメソッドを宣言します。
class Closer{ private: //クラス変数 int Close_Ticket; double Close_Lots; double Close_Price; int Close_Slippage; color Close_ArrowColor; public: //コンストラクタ(クラス名と同じ名前でメソッドを宣言することをいう) void Closer(int ticket, double lots, double price, int slippage, color arrow_color); //クラスのメソッド bool Settlement(); };
クラスのカッコ”};”で閉じてメソッドの内容を記述します。
Closer::Closer(int ticket, double lots, double price, int slippage, color arrow_color){ //引数をクラス変数に代入 Close_Ticket = ticket; Close_Lots = lots; Close_Price = price; Close_Slippage = slippage; Close_ArrowColor = arrow_color; } bool Closer::Settlement(){ //クラス変数を引数に代入 bool res = OrderClose(Close_Ticket,Close_Lots,Close_Price,Close_Slippage,Close_ArrowColor); return (res); }
使用方法
クラスのインスタンス(new)を作成してコンストラクタで初期化します。
//クラス名 *変数を宣言 = new クラス名(コンストラクタ)(引数) Closer *close_ticket = new Closer(buyTicket,OrderLots(),OrderOpenPrice(),Slippage,clrNONE); //変数.メソッド名 close_ticket.Settlement();
サンプル
クラスの作成
Includeフォルダにmylibを作成して適当なクラスファイルを作成します。(.mqh)

class Closer{
private:
int Close_Ticket;
double Close_Lots;
double Close_Price;
int Close_Slippage;
color Close_ArrowColor;
public:
void Closer(int ticket, double lots, double price, int slippage, color arrow_color);
bool Settlement();
};
Closer::Closer(int ticket, double lots, double price, int slippage, color arrow_color){
Close_Ticket = ticket;
Close_Lots = lots;
Close_Price = price;
Close_Slippage = slippage;
Close_ArrowColor = arrow_color;
}
bool Closer::Settlement(){
bool res = OrderClose(Close_Ticket,Close_Lots,Close_Price,Close_Slippage,Close_ArrowColor);
return (res);
}
//クラスファイルを読み込み
#include < mylib/Order.mqh >
//グローバル変数
extern int MagicNumber = 12345;
int buyTicket = 0;
bool flag = true;
int Slippage = 30;
void OnTick(){
if(flag){
//エントリー
buyTicket = OrderSend(Symbol(),OP_BUY,MarketInfo(Symbol(),MODE_MINLOT),MarketInfo(Symbol(),MODE_ASK)
,Slippage,0,0,"OP_BUY",MagicNumber,0,clrNONE);
if(buyTicket == -1){
Print(GetLastError());
}
OrderSelect(buyTicket,SELECT_BY_TICKET,MODE_TRADES);
Closer *close_ticket = new Closer(buyTicket,OrderLots(),OrderOpenPrice(),Slippage,clrNONE);
close_ticket.Settlement();
flag = false;
}
}
テスターで実行すると下記の画像のようになります。
![]()
