动态移动止损、止盈代码

楼主  收藏   举报   帖子创建时间:  2019-05-05 12:06 回复:0 关注量:436
  1. if(OrderType() == OP_BUY)
  2. {
  3.             dSl=OrderStopLoss();
  4.             if( dSl == 0 )
  5.                if( dInitialSL != 0)
  6.                   dSl = dnAsk - dInitialSL;           
  7.             ArrayResize(arrSL,5);
  8.             ArrayInitialize(arrSL,dSl);
  9.             LogSL("OP_BUY-check",dSl,arrSL[0],arrSL[1],arrSL[2],arrSL[3]);
  10.             if( dPropSLRatio > 0 )
  11.             {
  12.                if( Bid >= (OrderOpenPrice() + dPropSLThreshold) )
  13.                {
  14.                   dSl = NormalizeDouble( OrderOpenPrice() + dPropSLRatio*(Bid - OrderOpenPrice()) - dSpread,4 );
  15.                   if(OrderStopLoss() < dSl)
  16.                   arrSL[1]=dSl;
  17.                }
  18.                else
  19.                {
  20.                   if(dTrailingStop != 0)
  21.                      arrSL[2]=dnBid - dTrailingStop;
  22.                }
  23.             }                        
  24.             dSl=arrSL[ArrayMaximum(arrSL)];
  25.             LogSL("OP_BUY - max",dSl,arrSL[0],arrSL[1],arrSL[2],arrSL[3]);
  26.             if( dSl > OrderStopLoss() || OrderStopLoss() == 0 )
  27.                {
  28.                   OrderModify(OrderTicket(), OrderOpenPrice(),
  29.                      dSl, OrderTakeProfit(), 0, Yellow);
  30.                   Log("Buy - modify", OrderOpenPrice(), dSl, OrderTakeProfit());
  31.                }
  32.             // Escape buy
  33.             //if( dEscape != 0 && dnBid < OrderOpenPrice() - dEscape - 5 * Point )
  34.             if( nUseEscape == 1 && dnBid < OrderOpenPrice() - dEscapeLevel - 5 * Point )
  35.             {
  36.                OrderModify(OrderTicket(), OrderOpenPrice(),
  37.                OrderStopLoss(), OrderOpenPrice() + dEscapeTP, 0, Aqua);
  38.                Log("Buy - EscapeLevel", OrderOpenPrice(), dSl, OrderTakeProfit());
  39.             }
打赏