最新のローソク足にて決済が発生したかを判定する関数 isClosed

MetaTrader 4
GogoJungle
2019/08/02 20:49
35

TPやSLによって決済が発生したローソク足では、たとえエントリー条件が揃っていてもエントリーさせたくない場合があります。
現在のローソク足で決済が発生しているかを判定する方法をご紹介します。

bool isClosed(int magic){
   int magic
}

パラメータ
magic
対象とするポジションのマジックナンバー

戻り値
最新のローソク足にて決済が発生していればtrueを、決済が発生していない場合はfalseを返す。
ただし決済情報の取得に失敗して正しく処理が行われなかった場合もfalseとなることに注意が必要。

bool isClosed(int magic){
   for(int i = OrdersHistoryTotal() - 1; i >= 0; i--){
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) == false) return(false);
      if(OrderMagicNumber() != magic) continue;
      if(OrderSymbol() != Symbol()) continue;
      
      if(Time[0] <= OrderCloseTime()){
         return(true);
      }
   }
   return(false);
}

決済が発生したローソク足でのエントリーを制限するには発注処理の直前でこの関数を実行し、結果がfalseであることを確認して下さい。

void OnTick(){
   if(isClosed( /*マジックナンバー*/ ) == false){
      // 発注処理...
   }
}

コメント

関連項目

検索結果がありません。