Помогите поправить советник

 
Сопственно сабж...Как ограничить количество попыток выставление ордера. Например идут частые реквоты, и если в последующие 5 попыток не удалось открыть ордер на покупку, ну или продажу, то тогда не открывать его?
 
Поставить счётчик попыток.
 

А может кусочек кода как пример скинуть? :)

Есть еще вопросец...Почему-то в кусочке кода, что ниже, неправильно высчитывает ТП и СЛ...При проверке стоп-лосс почему-то равен тейки, и все это равно текущей цене...В чем проблема?

       ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         if (OrdType == "BUY" || OrdType == "Buy" || OrdType == "buy")
            {
            Ord.Type  = 0;
            TP=MarketInfo(OrdSymbol,MODE_ASK)+TakeProfit*Point;
            SL=MarketInfo(OrdSymbol,MODE_ASK)-StopLoss*Point;
            OpenPrice = NormalizeDouble(MarketInfo(OrdSymbol,MODE_ASK), MarketInfo(OrdSymbol,MODE_DIGITS));
            ExtOrderSend(Ord.Type, LotSize, OpenPrice, SL, TP, OrdMn, OrdSymbol, OrdStop );            
            }
       /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         if (OrdType == "SELL" || OrdType == "Sell" || OrdType == "sell")
            {
            Ord.Type  = 1;
            TP=MarketInfo(OrdSymbol,MODE_BID)-TakeProfit*Point;
            SL=MarketInfo(OrdSymbol,MODE_BID)+StopLoss*Point;
            OpenPrice = NormalizeDouble(MarketInfo(OrdSymbol,MODE_BID), MarketInfo(OrdSymbol,MODE_DIGITS));
            ExtOrderSend(Ord.Type, LotSize, OpenPrice, SL, TP, OrdMn, OrdSymbol, OrdStop );            
            }
 
Вам не жалко свой интернет? Зачем столько запросов это же время.
 
zhuki >>:
Вам не жалко свой интернет? Зачем столько запросов это же время.

А зачем жалеть интернет, когда анлим? :)

 
Relrin >>:

А зачем жалеть интернет, когда анлим? :)

Так у Вас и времени на OrderSend тоже анлим? Вы ещё положите что нибудь, кроме переменных и запросов чтобы понятно было, где неполадки.

 
zhuki >>:

Так у Вас и времени на OrderSend тоже анлим? Вы ещё положите что нибудь, кроме переменных и запросов чтобы понятно было, где неполадки.

Тогда проще советник приложить :)

Файлы:
 
Надо же столько написать тоже типа анлим, но в строках. Надо время.
 

На первый взгляд всё вроде правильно . Но вы меняли исходник,потому что выложили одно,а в советнике немного не так.

Понять,что вы задаёте в файле тоже не могу. Советую вставить Print перед таким обращением .

ExtOrderSend(Ord.Type, LotSize, OpenPrice, SL, TP, OrdMn, OrdSymbol, OrdStop );

Посмотреть что напечатает,а там и думать.

 
zhuki >>:

На первый взгляд всё вроде правильно . Но вы меняли исходник,потому что выложили одно,а в советнике немного не так.

Понять,что вы задаёте в файле тоже не могу. Советую вставить Print перед таким обращением .

ExtOrderSend(Ord.Type, LotSize, OpenPrice, SL, TP, OrdMn, OrdSymbol, OrdStop );

Посмотреть что напечатает,а там и думать.

Я посмотрел. Все правильно выставляет. "Баг" в том, что если например, советник на 4ех знаках, то он неправильно считает стоп и тейк для пар с 2мя знаками после запятой? Как можно обойти такое препятствие?

 
Relrin >>:

Я посмотрел. Все правильно выставляет. "Баг" в том, что если например, советник на 4ех знаках, то он неправильно считает стоп и тейк для пар с 2мя знаками после запятой? Как можно обойти такое препятствие?

Так попробуйте. Вместо Point потом используйте PointX

double PointX = 0;
         if(Digits==5 || Digits==3) 
            {
               PointX = Point * 10;
            }
         if(Digits==4 || Digits==2) 
            {
               PointX = Point;
            }
Причина обращения: