查看完整版本: 追踪止损子程序

cdf888 2007-11-6 13:28

追踪止损子程序

///////////////////////追踪止损子程序////////////////////////////////////
void TrailStop()
{
  double mstp;
  if(OrderType() == OP_BUY)
   {
    if(((Bid - OrderOpenPrice()) / Point > OverTakeProfit) && Auto_stp == true)
    mstp = Bid - 20 * Point;
    if(mstp > OrderStopLoss())
    OrderModify(OrderTicket(),OrderOpenPrice(),mstp,0,0,Green);
   }

  if(OrderType() == OP_SELL)
   {
    if(((OrderOpenPrice() - Ask) / Point > OverTakeProfit) && Auto_stp == true)
    mstp = Ask +20 * Point;
    if(mstp < OrderStopLoss())
    OrderModify(OrderTicket(),OrderOpenPrice(),mstp,0,0,Green);
   }
}
////////////////////////////////////////////////////////////////////////
上面这个子程序,如果屏蔽,ea的功能就正常,这段代码的问题是:运行后自动将sell单的止损改为0
请老师帮忙查下是哪里的错误?谢谢

xfxyldj 2007-11-6 13:41

请开自己的帖子。
嵌套不对。
后面两个语句应该是前一个if的一部分。
if(((OrderOpenPrice() - Ask) / Point > OverTakeProfit) && Auto_stp == true)
[b][color=red]{[/color]  [/b]  
    mstp = Ask +20 * Point;//[color=red]这个语句执行了才执行后面两条语句
[/color]    if(mstp < OrderStopLoss())
    OrderModify(OrderTicket(),OrderOpenPrice(),mstp,0,0,Green);
[color=red][b]}[/b][/color]
买单的处理也一样的问题。
红色的大括号是必需的。
页: [1]
查看完整版本: 追踪止损子程序