見出し画像

MT4/MQLソースサンプル:ポジションを一定時間後に清算する

処理内容

ポジション建て後、一定時間後に決済する場合のソースコードです
用途としてはエントリー後一定時間でポジションを清算(決済)させたい。
必ず、短期売買にしたいので、保険をかけておくとか
スキャルピングでポジション後必ず1分後に清算するとか
でしょうか。

ソースコード


関数側のソースコードです。


//タイムリミット決済関数
void TimeLimitPOS(int profitflg,int ExitMinutes)//profitflg 1-利益時のみ、0-利益なくても決済
  {
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      int res;
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
        {
         if(OrderMagicNumber()==MAGIC && OrderSymbol()==Symbol())
           {
            if(OrderType()==OP_SELL) //売りポジション決済関数呼び出し
              {
               if(TimeCurrent()-OrderOpenTime() >= ExitMinutes*60 && (OrderProfit()>0 || profitflg==0))
                 {res=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),10,Silver);}
              }
            else
               if(OrderType()==OP_BUY)   //買いポジション決裁関数呼び出し
                 {
                  if(TimeCurrent()-OrderOpenTime() >= ExitMinutes*60 && (OrderProfit()>0 || profitflg==0))
                    {res=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),10,Silver);}
                 }
           }
        }
     }
  }


実際の使用部分です。OnTick()、OnInit()とかOnTimer()の中で記述してみてください。オーダーロジック後がよいかと思います。



//ポジション保持期間限定
int TimeLimit=0;//1-利益時のみ決済する、0-利益なくても決済する
input int TimeLimitMin=1;//単位分 何分間ポジションを保持するか 最大値59分後

//時間指定決済関数呼び出し
      TimeLimitPOS(TimeLimit,TimeLimitMin);

以上です。間違いなどあればご指摘ください。

この記事が気に入ったらサポートをしてみませんか?