Единичная модификация ордера или как выставить стоплосс на безубыточный уровень?

 

Помогите сделать програмно единичную модификацию ордера. Множественные получаются, а единичная никак.

 
Посмотрите у Кима - среди его функций есть готовая, по-изучайте что к чему
 
//-----------------------------------------------------------------------------+
// Безубыток                                                                   |
//-----------------------------------------------------------------------------+
void WL(int min=0){
if(min==0)return;
double stop=MarketInfo(Symbol(),MODE_STOPLEVEL)+MarketInfo(Symbol(),MODE_SPREAD);
for(int i=0;i<OrdersTotal();i++){
  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    if(OrderSymbol()==Symbol()){
      if(OrderMagicNumber()==MagicFirstOrder){
        if(TimeCurrent()-OrderOpenTime()>min*60){
          if(OrderProfit()>0){
          if(OrderStopLoss()!=OrderOpenPrice()){
            if(MathAbs(OrderOpenPrice()-Bid)/Point>stop){
              OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,White);
              return;
            }
          }
          }
        }
      }
    }
  }
}              
return;          
}
 

Вот, я тоже сделал безубыток в AutoGraf 4. Но считаю, что безубыток сам по себе - это неправильно.

Цена открытия ордера - это параметр, который не должен приниматься во внимание. А только рыночные тенденции. По-хорошему, трейдер может и не интересоваться ценой открытия ордеров (равно, как и прибылью/убытком по ордеру). А торговые решения должны приниматься только на основе торговых критериев в соответствии со стратегией.

 

Абсолютно согласен, с некоторых пор не пользуюсь ни тралами. ни БУ, так как это существенно снижает доходность, но функции остались ... ;)