Ошибка Sell ордеров

 
Добрый день. Алготрейдинг. Ордера отрываются одинаковым способом на Buy и Sell. Buy - всегда отрабатывает, Sell - всегда пишет возвращает ошибку 100016 - ошибочные стопы.
Ниже код для открытии позиции Sell. Вместо 20 подставлял любое значение - результат всегда ошибка.

double volume=0.1;         // укажем объем торговой операции
      string symbol = Symbol();
      int    digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); // количество знаков после запятой
      point=SymbolInfoDouble(symbol,SYMBOL_POINT);         // пункт
      ask=SymbolInfoDouble(symbol,SYMBOL_ASK);             // текущая цена для закрытия LONG
      double SL=ask-20*point;                                   // ненормализованное значение SL
      SL=NormalizeDouble(SL,digits);                              // нормализуем Stop Loss
      double TP=ask+20*point;                                   // ненормализованное значение TP
      TP=NormalizeDouble(TP,digits);                              // нормализуем Take Profit
   //--- получим текущую цену открытия для LONG позиций
      double open_price=SymbolInfoDouble(symbol,SYMBOL_BID);
      string comment=StringFormat("Buy %s %G lots at %s, SL=%s TP=%s",
                                 symbol,volume,
                                 DoubleToString(open_price,digits),
                                 DoubleToString(SL,digits),
                                 DoubleToString(TP,digits));
      if(!trade.Sell(volume,symbol,open_price,SL,TP,comment))
      {
         //--- сообщим о неудаче
         Print("Метод Sell() потерпел неудачу. Код возврата=",trade.ResultRetcode(),
               ". Описание кода: ",trade.ResultRetcodeDescription());
      }
      else
      {
         Print("Метод Buy() выполнен успешно. Код возврата=",trade.ResultRetcode(),
               " (",trade.ResultRetcodeDescription(),")");
      }
для Buy использую такие стопы:
      double SL=bid-20*point;                                   // ненормализованное значение SL
      SL=NormalizeDouble(SL,digits);                              // нормализуем Stop Loss
      double TP=bid+20*point;                                   // ненормализованное значение TP
      TP=NormalizeDouble(TP,digits); 
Ордера выставляются без проблем.
 

для SELL должно быть

double SL=bid+20*point;                                   // ненормализованное значение SL
      SL=NormalizeDouble(SL,digits);                              // нормализуем Stop Loss
      double TP=bid-20*point;                                   // ненормализованное значение TP
      TP=NormalizeDouble(TP,digits); 
 
alexesuser:
Добрый день. Алготрейдинг. Ордера отрываются одинаковым способом на Buy и Sell. Buy - всегда отрабатывает, Sell - всегда пишет возвращает ошибку 100016 - ошибочные стопы.
Ниже код для открытии позиции Sell. Вместо 20 подставлял любое значение - результат всегда ошибка.

для Buy использую такие стопы:
Ордера выставляются без проблем.
+ и - местами поменяйте для села SL = ask + 20