проблемма с стоплевелом

 

решил  создать отдельную тему, ибо в "вопросах новичков " вопрос не привлекает внимания


смотрите, попал на проблему смысл которой не очень пойму. смысл кода - при определенном сигнале открыть ордер , у которого стоплос может быть меньше стоплевела. если такое происходит - стоплос увеличиваю до нужного размера. тп при открытии не выставляю, оставляю его виртуальным в программе и открываю ордер. в результате открывается только один из 15 - 20.  что нужно сделать чтобы открывался каждый ордер?  код :

RefreshRates();


     double bid = MarketInfo(symbol,MODE_BID);
     double ask = MarketInfo(symbol,MODE_ASK);

    

     double stoplevel =  NormalizeDouble(stoplevelTemp * tickTemp,digitsTemp)+tickTemp;

     if(digitsTemp == 5 )
          stoplevel+=(700 * tickTemp);
     
     if(spreadOrdDangBr < stoplevel)                                                                           //если спред меньше стоплевела - перебиваем
         spreadOrdDangBr=stoplevel;
         
     double lotDB = calculationLot(spreadOrdDangBr,0.0025);                                                      //расчитываем лот - четверть процента свободных денег
     


         slODB=ask-spreadOrdDangBr;                                                                              
         tpODB= ask+ spreadOrdDangBr;

         orderTicketODB=OrderSend(symbol,OP_BUY,lotDB,ask,3,slODB,0,("dangBr" +spreadOrdDangBr));



и в результате в терминале


 

Вот здесь второй пост гляньте, мне пару месяцев назад помог.

Теперь такую конструкцию использую:

  double spread = Ask - Bid;
  double stopLevel = SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL)*_Point;
  if(stopLevel == 0 || stopLevel < spread) stopLevel = spread*K;

K - это коэфициент-множитель спреда. Опытным путем проверял, что у Альпари проходит без проблем открытие/модификация при К=2, у Робофореска К=1,5, у других пока не проверял.
 
Не по теме. Если ты не на счёте ECN/STP то беги от кухни!