MT4 トレーリングストップ&イーブンイフ

トレーリングストップ&イーブンイフ


トレーリングストップとイーブンイフ機能を兼ね合わせたサンプルソースをご紹介します。 保持中の全てのオーダを対象にトレーリングストップとイーブンイフの判定を行います。複数ペア通貨でも対応しています。

サンプルソース


/*------------------------------------------------------
関数名  openOrderTraling

内容    トレーリング

引数    なし
   
戻り値   なし

-------------------------------------------------------*/
extern double TrailingStopS = 50;//トレーリングスタート
extern double TrailingStopW = 25;//トレーリング幅

extern double lossLimit = 5;
extern double lossLimitdiff = 40;

void openOrderTralingEvenIf(){
   
   for( int i=0; i < OrdersTotal(); i++){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){   
            
            // sl値変更
            bool ret = false;
            if(OrderType() == OP_BUY ){
            
               //トレーリングストップ
               if(MarketInfo(OrderSymbol(),MODE_BID) - OrderOpenPrice() > TrailingStopS*Point && OrderStopLoss() < MarketInfo(OrderSymbol(),MODE_BID)-TrailingStopW*Point){
                 ret = OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStopW,OrderTakeProfit(),0,Green);
               }
              
               //イーブンイフ
               if( MarketInfo(OrderSymbol(),MODE_BID) > OrderOpenPrice()+(lossLimit+lossLimitdiff)*Point && OrderStopLoss() < OrderOpenPrice()+lossLimit*Point ){
                 ret = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+lossLimit*Point,OrderTakeProfit(),0,Green);
               }
            }

            if(OrderType() == OP_SELL ){
            
               //トレーリングストップ
               if(OrderOpenPrice() - MarketInfo(OrderSymbol(),MODE_ASK) > TrailingStopS*Point && OrderStopLoss()> MarketInfo(OrderSymbol(),MODE_ASK)+TrailingStopW*Point){
                 ret = OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStopW,OrderTakeProfit(),0,Orange);
               }

               //イーブンイフ               
               if( MarketInfo(OrderSymbol(),MODE_ASK) < OrderOpenPrice()-(lossLimit+lossLimitdiff)*Point && OrderStopLoss() > OrderOpenPrice()-lossLimit*Point ){
                 ret = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-lossLimit*Point,OrderTakeProfit(),0,Orange);
               }
            }

      }
   }

}

関連記事


http://www.finance-lab.yokohama/system-trade/mt4/trail/