Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пользуйся функцией вставки контента из Кармана. Это удобно!
Sergey Zhilinskiy
6663
Sergey Zhilinskiy 2016.06.16 15:08 

Тестирую советник в терминале брокера "Открытие". Инструменты USDRUB_TOM, USDRUB_TOD и т.д.

Код открытия сделки:

double priceOpen=ND(Bid);
Trade.PositionOpen(_Symbol,ORDER_TYPE_SELL,lot,priceOpen,0,0,"");

 Функция нормализации цены:

double ND(double x){
   double tickSize=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);
   return(MathRound(x/tickSize)*tickSize);
}

 Изредка сделки открываются, а в основном Invalid Price... Может кто подскажет в чем может быть дело?

Vladimir Karputov
Модератор
45434
Vladimir Karputov 2016.06.16 15:13  
Sergey Zhilinskiy:

Тестирую советник в терминале брокера "Открытие". Инструменты USDRUB_TOM, USDRUB_TOD и т.д.

Код открытия сделки:

 Функция нормализации цены:

 Изредка сделки открываются, а в основном Invalid Price... Может кто подскажет в чем может быть дело?

"Bid" - нет такого оператора в MQL5.
Sergey Zhilinskiy
6663
Sergey Zhilinskiy 2016.06.16 15:15  
Karputov Vladimir:
"Bid" - нет такого оператора в MQL5.

Я в курсе. Ранее Bid получен так:

double Bid = SymbolInfoDouble(_Symbol,SYMBOL_BID);
Vladimir Karputov
Модератор
45434
Vladimir Karputov 2016.06.16 15:20  
Sergey Zhilinskiy:

Я в курсе. Ранее Bid получен так:

А Вы проверяете полученное значение на равенство нулю? И где вывод ошибки?
Vladimir Karputov
Модератор
45434
Vladimir Karputov 2016.06.16 15:23  
Цену нужно нормализовать перед вставкой в поле торгового ордера.
Sergey Zhilinskiy
6663
Sergey Zhilinskiy 2016.06.16 15:30  
Karputov Vladimir:
А Вы проверяете полученное значение на равенство нулю? И где вывод ошибки?

Если уж быть точным, то фрагмент  кода такой:

double priceOpen=ND(Bid);
Print("Открываем SELL по цене: ",priceOpen," Bid=",Bid," Ask=",Ask);                        
if (!Trade.PositionOpen(_Symbol,ORDER_TYPE_SELL,lot,priceOpen,0,00,"")){
    Print(Trade.ResultRetcodeDescription());
    Trade.PrintRequest();
}

 Значение priceOpen по крайней мере в Журнале тестера видно. Там точно не ноль.

Sergey Zhilinskiy
6663
Sergey Zhilinskiy 2016.06.16 15:31  
Karputov Vladimir:
Цену нужно нормализовать перед вставкой в поле торгового ордера.

Имеется ввиду так?

Trade.PositionOpen(_Symbol,ORDER_TYPE_SELL,lot,ND(Bid),0,0,"");
Vladimir Karputov
Модератор
45434
Vladimir Karputov 2016.06.16 15:32  
Sergey Zhilinskiy:

Имеется ввиду так?

Нет. Например так:

   SL=NormalizeDouble(SL,digits);                              // нормализуем Stop Loss
Sergey Zhilinskiy
6663
Sergey Zhilinskiy 2016.06.16 15:39  
Karputov Vladimir:

Нет. Например так:

Вы ошибаетесь, шаг цены на этих иструментах не последний знак. 
Vladimir Karputov
Модератор
45434
Vladimir Karputov 2016.06.16 15:43  
Sergey Zhilinskiy:
Вы ошибаетесь, шаг цены на этих иструментах не последний знак. 
Не могу посмотреть - нет у меня такого символа.
Sergey Zhilinskiy
6663
Sergey Zhilinskiy 2016.06.16 15:46  
Karputov Vladimir:
Не могу посмотреть - нет у меня такого символа.

/ /12345
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий