Библиотеки: MT4Orders - страница 68

 
fxsaber #:

В терминах MT5 поясните эту фразу.

в терминах mt5 имеется 54 позиции по 22 инструментам. 

 
Maxim Kuznetsov #:

что лучше отжурналировать отдельно, чтобы внести ясность ? 

журнал терминала из-за 32 экземпляров советника не разобрать - если включить логи, то там чёрт ногу сломит :-)

Если дело дошло до OrderSend, то при неудаче будет подробный лог. Если же OrderSend не выполнялся, то надо искать причину в своем коде.


Посмотрите, чему равно ACCOUNT_LIMIT_ORDERS.

 
fxsaber #:

Если дело дошло до OrderSend, то при неудаче будет подробный лог. Если же OrderSend не выполнялся, то надо искать причину в своем коде.


Посмотрите, чему равно ACCOUNT_LIMIT_ORDERS.

там много :-) 10k

и в ручную они открываются.

пока ощущение что с предела 54 открытых позиции (в терминах mt5) (или конкретно на ней), просто начинает фейлить OrderSelect

   // считаем незалоченный объём сверху и снизу указанной цены
   // 
   double volumes[2];
   for(int pos=OrdersTotal()-1;pos>=0;pos--) {
      if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {
         Sleep(50);
         if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {
            PrintFormat("OrderSelect() failed: Pool TRADES not synced");
            continue;
         }
      }

мелкого Sleep на переповторе вполне оказывается достаточно чтобы цена "убежала"

такая ругань в журнале присутсвует. Ситуация повторится - покажу журнал. Чуть понятнее куда смотреть, на что обращать внимание

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

 
Maxim Kuznetsov #:

пока ощущение что с предела 54 открытых позиции (в терминах mt5) (или конкретно на ней), просто начинает фейлить OrderSelect

В PrintFormat выводите pos и OrdersTotal(). При этом логируйте это же состояние и ДО Sleep.


На демо-счете попробуйте воспроизвести (любым искусственным способом) подобную активность, чтобы добиться OrderSelect == false.

Если получится, понадобятся все данные для воспроизведения.

 
fxsaber #:

В PrintFormat выводите pos и OrdersTotal(). При этом логируйте это же состояние и ДО Sleep.


На демо-счете попробуйте воспроизвести (любым искусственным способом) подобную активность, чтобы добиться OrderSelect == false.

Если получится, понадобятся все данные для воспроизведения.

в точности такого-же пока не повторялось - всё таки много позиций это редкость.

но вот сегодня опять перевалило за 55 и тоже ошибка 


зная логику, как эксперт работает, было такое: робот получил неверный ответ на OrderSend - всё было исполнено, но функция вернула ошибку. Поэтому бот повторил как только цена вернулась и получилось две сделки по одной цене (на скрине - одна из них уже закрыта руками)
Опять ордеров за 55 и инструмент не самый популярный (на скрине CADCHF)
----
пересоберу с новым,максимально актуальным mt4orders и понаблюдаю повнимательнее

 
Maxim Kuznetsov #:

в точности такого-же пока не повторялось - всё таки много позиций это редкость.

но вот сегодня опять перевалило за 55 и тоже ошибка 


зная логику, как эксперт работает, было такое: робот получил неверный ответ на OrderSend - всё было исполнено, но функция вернула ошибку. Поэтому бот повторил как только цена вернулась и получилось две сделки по одной цене (на скрине - одна из них уже закрыта руками)
Опять ордеров за 55 и инструмент не самый популярный (на скрине CADCHF)
----
пересоберу с новым,максимально актуальным mt4orders и понаблюдаю повнимательнее

У меня также получилось на прошлой неделе, было задвоение.

В тот день интернет был очень паршивый, пинг большой.

Грешу на то, что данная ошибка от долгой связи сервер->терминал->сервер. Но могу и ошибаться.

В журнале ничего не увидел

 
Vitaly Muzichenko #:

У меня также получилось на прошлой неделе, было задвоение.

Разрешите ждать результата до 10-ти секунд.

MT4ORDERS::OrderSend_MaxPause = 10000000; // максимальное время на синхронизацию в мкс.
 
fxsaber #:

Разрешите ждать результата до 10-ти секунд.

Круто!

 
fxsaber #:

Разрешите ждать результата до 10-ти секунд.

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

 
prostotrader #:

Круто!

А что крутого, терминал 5 так взаимодействует с сервером.