Ошибка 131: на чьей стороне глюк?

 

После семи торговых суток работы советника на торговом центовом счёте InstaForex вдруг стала вылезать ошибка 131 (ERR_INVALID_TRADE_VOLUME): "Неправильный объем, ошибка в грануляции объема. Необходимо прекратить все попытки торговых операций и изменить логику программы.".

Код советника я проверил: объём ордера (0.06) перед использованием функции OrderSend() был нормализован функцией NormalizeDouble() с двумя знаками после точки. Также были нормализованы и все цены стопов.
Точная копия советника на демосчёте с такой же парой такую ошибку не выдаёт.
Я обратился в саппорт, где мне ответили: " К сожалению, мы не предоставляем поддержки по работе торговых советников. Вам необходимо следовать инструкции, которая предоставляется вместе с программой.".

Посоветуйте: что мне делать, как бороться? По мне, это глюк на стороне сервера.

 
ssn1:

После семи торговых суток работы советника на торговом центовом счёте InstaForex вдруг стала вылезать ошибка 131 (ERR_INVALID_TRADE_VOLUME): "Неправильный объем, ошибка в грануляции объема. Необходимо прекратить все попытки торговых операций и изменить логику программы.".

Код советника я проверил: объём ордера (0.06) перед использованием функции OrderSend() был нормализован функцией NormalizeDouble() с двумя знаками после точки. Также были нормализованы и все цены стопов.
Точная копия советника на демосчёте с такой же парой такую ошибку не выдаёт.
Я обратился в саппорт, где мне ответили: " К сожалению, мы не предоставляем поддержки по работе торговых советников. Вам необходимо следовать инструкции, которая предоставляется вместе с программой.".

Посоветуйте: что мне делать, как бороться? По мне, это глюк на стороне сервера.


Срочно меняй эту кухню на нормальный ДЦ! Как это: "К сожалению, мы не предоставляем поддержки по работе торговых советников"? а что они тогда предоставляют???
 
ssn1:

Посоветуйте: что мне делать, как бороться? По мне, это глюк на стороне сервера.

ну например распечатать полностью все торговые приказы в файл и подавать жалобу в кроуф за не исполнение сделки.

также сделать копии экрана терминала который будет отображать журнал в режиме просмотра. в принципе юридически метаквоты несут ответсвенность за корректность передачи информации между сторонами и пока что особых претензий за это к ним вроде не было, так что вполне возможно что была ошибка в ордере, но это можно увидеть только в распечатке.

есть еще вариант - заказать стороннюю программку для независимой документации сделок и тогда найти виновного будет проще.

 
Если ордер с лотом 0.06 является допустимым на текущем счету, но не исполняется, надо обратиться в саппорт ДЦ за разъяснениями.
 
wmlab:
Если ордер с лотом 0.06 является допустимым на текущем счету, но не исполняется, надо обратиться в саппорт ДЦ за разъяснениями.


Спасибо!

Как оказалось, минимальный объём ордера для центовых счетов - 0.1, а не 0.01, как я наивно предполагал. Сюрприз, однако... Надо советник переделывать... :-((

 
ssn1:


Спасибо!

Как оказалось, минимальный объём ордера для центовых счетов - 0.1, а не 0.01, как я наивно предполагал. Сюрприз, однако... Надо советник переделывать... :-((

Смею предложить функцию

//+------------------------------------------------------------------+
//| Нормализация лота                                                |
//+------------------------------------------------------------------+

double NormalizeLots(double lot)
{
   double lotstep = MarketInfo(Symbol(), MODE_LOTSTEP);
   double lots = NormalizeDouble(lot / lotstep, 0) * lotstep;   
   lots = MathMax(lots, MarketInfo(Symbol(), MODE_MINLOT));
   lots = MathMin(lots, MarketInfo(Symbol(), MODE_MAXLOT));   
   return (lots);
}
 
wmlab:

Смею предложить функцию


Спасибо!
Причина обращения: