ошибка 130 при изменении stoplevel

 
//---------------------------------------------------------------------
      double PriceB, PriceS, SLB, SLS;
      int spr=8;
      double spread=spr*Point;            
      int min=MarketInfo(Symbol(), MODE_SPREAD);
      double MinDist=min*Point;
      int level=MarketInfo(Symbol(), MODE_STOPLEVEL);
      double LevelDist=level*Point;
//---------------------------------------------------------------------       
      if(Ask<High[1])
        {        
        PriceB=NormalizeDouble(High[1]+spread+MinDist, Digits);        
        }
      if(Ask>=High[1])
        {        
        PriceB=Ask+spread;        
        }
      if(Bid>Low[1])
        {
        SLB=NormalizeDouble(Low[1]-LevelDist-spread, Digits);                
        }
      if(Bid<=Low[1])
        {        
        SLB=Bid-LevelDist-spread;        
        }      
//--------------------------------------------------------------------        
      if(Bid>Low[1])
        {        
        PriceS=NormalizeDouble(Low[1]-spread, Digits);        
        }
      if(Bid<=Low[1])
        {             
        PriceS=Bid-spread;        
        }
      if(Ask<High[1])
        {
        SLS=NormalizeDouble(High[1]+LevelDist+spread+MinDist, Digits);        
        }
      if(Ask>=High[1])
        {        
        SLS=Ask+LevelDist+spread;        
        }      
//---------------------------------------------------------------------

При спокойном рынке (level=2) открывает стопордера нормально, но если level изменяют на 30 - ошибка 130.

Варианты с нормализацией SLS, SLB не проходят. Подскажите, кто знает, в чём причина?

 
Ты вроде сам ответил. Когда до 30 раздвигают, значит идет сильное и быстрое движение цены, а у тебя запаса нет. Цена еще может пройти за счет слиппажа, а стопы - никак. Как вариант, сначала выставляй ордера без стопов, а уже потом мостырь.
 
Roger:
Ты вроде сам ответил. Когда до 30 раздвигают, значит идет сильное и быстрое движение цены, а у тебя запаса нет. Цена еще может пройти за счет слиппажа, а стопы - никак. Как вариант, сначала выставляй ордера без стопов, а уже потом мостырь.

Всё, разобрался. Тут как раз затык в цене, а не в стопах. Смутило то, что ошибка 130, хотя по идее должна бы быть 129. Когда раздвигают левел, то цена открытия попадает в этот диапазон, т. к. PriceB и PriceS это не учитывают. Правильно будет:

PriceB=NormalizeDouble(High[1]+spread+MinDist+LevelDist, Digits);
PriceB=Ask+spread+LevelDist;
PriceS=NormalizeDouble(Low[1]-spread-LevelDist, Digits);
PriceS=Bid-spread-LevelDist;
Уже потестил - усё работает.
Причина обращения: