动态移动止损、止盈代码
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这个黄金比例。 另外当现价低于一定程度时,设置一个较小的止盈目标位,及时逃脱。 学习{:1_186:}看看 O(∩_∩)O哈哈~ 学习再学习。谢谢了
页:
[1]