Что не так с логикой моего трейлинг-стопа?

 

Я написал следующий код:

bool Trailing_To_Close(CPositionInfo &pos_info)
  {
   bool modify_done = false;
   double SL = 0.0, TP = 0.0;
   ulong ticket = pos_info.Ticket();
   double difference_value = 1 * symbol_points;
   double open_price = pos_info.PriceOpen();
   double CurrentStopLoss = pos_info.StopLoss();
   TP = pos_info.TakeProfit();

   if(pos_info.PositionType()==POSITION_TYPE_BUY)
     {
      if(open_price < pos_info.PriceCurrent())
        {
         SL = NormalizeDouble(pos_info.PriceCurrent() - difference_value, symbol_digits); 
        }
      else
         if(open_price > pos_info.PriceCurrent())
           {
            SL = NormalizeDouble(pos_info.PriceCurrent() + difference_value, symbol_digits);
           }
      if(CurrentStopLoss == 0 || CurrentStopLoss < SL)
         modify_done = trade.PositionModify(pos_info.Ticket(), SL, TP);
     }
   else
     {
      if(open_price > pos_info.PriceCurrent())
        {
         SL = NormalizeDouble(pos_info.PriceCurrent() + difference_value, symbol_digits);
       }
      else
         if(open_price < pos_info.PriceCurrent())
           {
            SL = NormalizeDouble(pos_info.PriceCurrent() + difference_value, symbol_digits);
           }
      if(CurrentStopLoss == 0 || CurrentStopLoss > SL)
         modify_done = trade.PositionModify(ticket, SL, TP);
     }
   if(pos_info.SelectByTicket(ticket) ==  true)
      modify_done = true;
   return modify_done;
  }

Но он говорит, что стоп недействителен.

Пожалуйста, дайте мне знать, как это исправить. Я хочу установить трейл-стоп с 1 точкой, то есть с расстоянием до точки символа.

Пожалуйста, помогите мне.

 
jaffer wilson:

Я написал следующий код:

Но он говорит, что стоп недействителен.

Пожалуйста, дайте мне знать, как это исправить. Я хочу установить трейл-стоп с 1 точкой, то есть с расстоянием до точки символа.

Пожалуйста, помогите мне.

Вместо

NormalizeDouble(pos_info.PriceCurrent() + difference_value, symbol_digits);

 попробуйте

m_SymbolInfo.NormalizePrice(pos_info.PriceCurrent() + difference_value);
Причина обращения: