香烟 发表于 2019-9-4 13:33:03

动态移动止损、止盈代码

if(OrderType() == OP_BUY)
{
            dSl=OrderStopLoss();
            if( dSl == 0 )
               if( dInitialSL != 0)
                  dSl = dnAsk - dInitialSL;         
            ArrayResize(arrSL,5);
            ArrayInitialize(arrSL,dSl);
            LogSL("OP_BUY-check",dSl,arrSL,arrSL,arrSL,arrSL);
            if( dPropSLRatio > 0 )
            {
               if( Bid >= (OrderOpenPrice() + dPropSLThreshold) )
               {
                  dSl = NormalizeDouble( OrderOpenPrice() + dPropSLRatio*(Bid - OrderOpenPrice()) - dSpread,4 );
                  if(OrderStopLoss() < dSl)
                  arrSL=dSl;
               }
               else
               {
                  if(dTrailingStop != 0)
                     arrSL=dnBid - dTrailingStop;
               }
            }                        
            dSl=arrSL;
            LogSL("OP_BUY - max",dSl,arrSL,arrSL,arrSL,arrSL);
            if( dSl > OrderStopLoss() || OrderStopLoss() == 0 )
               {
                  OrderModify(OrderTicket(), OrderOpenPrice(),
                     dSl, OrderTakeProfit(), 0, Yellow);
                  Log("Buy - modify", OrderOpenPrice(), dSl, OrderTakeProfit());
               }
            // Escape buy
            //if( dEscape != 0 && dnBid < OrderOpenPrice() - dEscape - 5 * Point )
            if( nUseEscape == 1 && dnBid < OrderOpenPrice() - dEscapeLevel - 5 * Point )
            {
               OrderModify(OrderTicket(), OrderOpenPrice(),
               OrderStopLoss(), OrderOpenPrice() + dEscapeTP, 0, Aqua);
               Log("Buy - EscapeLevel", OrderOpenPrice(), dSl, OrderTakeProfit());
            }
   
上述代码中,使用dSl = NormalizeDouble( OrderOpenPrice() + dPropSLRatio*(Bid - OrderOpenPrice()) - dSpread,4 );进行动态调整,dPropSLRatio可以考虑设置为0.382这个黄金比例。 另外当现价低于一定程度时,设置一个较小的止盈目标位,及时逃脱。

捉鱼的羊 发表于 2019-9-4 13:34:31

学习{:1_186:}看看

啸星 发表于 2019-9-4 13:36:52

O(∩_∩)O哈哈~

kouuok 发表于 2019-11-4 17:32:52

学习再学习。谢谢了
页: [1]
查看完整版本: 动态移动止损、止盈代码