MT4(MQL4)/MT5(MQL5)のFor 反復演算子
指定条件下の場合に処理をループします。
for(式 1 ; 式 2 ; 式 3 )
演算子;
変数を式1で初期化し、式2で判定、式2の判定でtrueの場合は演算子を実行し、変数に対して式3を実行します。式2がfalseになった時点でforを抜けます。
MT4→MT5になっても変わらず使えます。
サンプルコード
void OnInit()
{
for(int i = 0; i < 5; i++)
{
Print("i=",i);
}
}
結果
i=0
i=1
i=2
i=3
i=4
サンプルコード EAでの使用例 -建玉、未決注文検索を行う-
for構文がよく使われる場面に、建玉や未決注文検索があります。
建玉や未決注文のチケット番号をforの変数でカウントアップし、MagicNumberが一致した建玉や未決注文に対して任意ののコマンドを発行する・・・のように使います。
void OnTick()
{
int MagicNumber=123; //マジックナンバー
ulong position_ticket=0;
ulong order_ticket=0;
////////--------建玉の検索はこちら-------///////
for(int i = PositionsTotal() - 1; i >= 0; i--)
//----(参考)この書き方でもOK→ for(int i=0;i<PositionsTotal();i++)
if((position_ticket=PositionGetTicket(i))>0)
if(PositionGetInteger(POSITION_MAGIC)==MagicNumber)
{
/*
ここにOrderSendなどを記載
*/
}
////////--------未決注文の検索はこちら-------///////
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if((order_ticket=OrderGetTicket(i))>0)
//MagicNumberが同じ未決注文がある場合、括弧内の処理を実行
if(OrderGetInteger(ORDER_MAGIC) == MagicNumber)
{
/*
ここにOrdersend等を記載する
*/
}
}
return;
}
【参考】MQL5公式ページ
コメント / Comments