【MQL4勉強プログラミング】EAでロジックごとに別々のエントリーと決済を分ける方法は?サンプルコードあり!

ザフナーラボブログ

OrderComment()関数は、選択した注文に付したコメントを取得するために使用します。

OrderComment()関数は、以下のように定義されています。

string OrderComment();

OrderComment()関数には引数がないので、()内には何も記述しません。

戻り値

選択した注文に付したコメントが返されます。

注意点

OrderComment()関数を使用するためには、あらかじめOrderSelect()関数で注文を選択していなければなりません。

具体例

複数のロジック(「Logic_1」と「Logic_2」とします。)を搭載したEAにおいて、それぞれのロジックごとにエントリーと決済を分ける場合は、以下のように記述します。


#property strict

input int Magic         = 2222;      //マジックナンバー
input double Lots       = 0.1;       //取引ロット数
input string Comments_1 = "Logic_1"; //「Logic_1」のコメント
input string Comments_2 = "Logic_2"; //「Logic_2」のコメント

void OnTick()
{
 ……
 //決済
 for(int i = OrdersTotal() - 1; i >= 0; i--)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
       {
        if(OrderComment() == Commnents_1)
          {
           if(Logic_1の決済条件)
             {
              bool Closed = OrderClose(OrderTicket(),OrderLots(),
                                       OrderClosePrice(),Magenta);
             }
          }
        else if(OrderComment() == Comments_2)
               {
                if(Logic_2の決済条件)
                  {
                   bool Closed = OrderClose(OrderTicket(),OrderLots(),
                                            OrderClosePrice(),Aqua);
                  }
               }
       }
    }
    
 //エントリー
 if(Logic_1のエントリー条件)
   {
    int Ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,Comments_1,Magic,0,Magenta);
   }
 if(Logic_2のエントリー条件)
   {
    int Ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,10,0,0,Comments_1,Magic,0,Aqua);
   }
}