我常用的一段移动止损的MQL代码

2008年9月15日 22:30  |  分类:其它

经常有朋友问我关于如何实现移动止损的问题,我把我常用的一段移动止损的实现代码贴出来,当然不一定是最好的,只是说让初学的朋友有个模板参照一下。

void tr(int magic,int triling_i){ 
  for (int k=0;k<OrdersTotal();k++){
    OrderSelect(k,SELECT_BY_POS);
    if (OrderMagicNumber()==magic){       
      if (OrderType()==OP_BUY && NormalizeDouble(Ask-OrderOpenPrice(),Digits)>=triling_i*Point && OrderStopLoss()<NormalizeDouble(Ask-triling_i*Point,Digits)) {
         if (!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask-triling_i*Point,Digits),OrderTakeProfit(),0,Blue)){
            Print("Trailing stop error Buy :"+error(GetLastError()));
         }   
      }
      if (OrderType()==OP_SELL && NormalizeDouble(Bid+triling_i*Point,Digits)<=OrderOpenPrice() && (OrderStopLoss()>NormalizeDouble(Bid+triling_i*Point,Digits) || OrderStopLoss()==0)) {
         if (!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid+triling_i*Point,Digits),OrderTakeProfit(),0,Red)){
            Print("Trailing stop error Sell :"+error(GetLastError())); 
         }
      }
    }
  }
}