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);
以上です。間違いなどあればご指摘ください。
この記事が気に入ったらサポートをしてみませんか?