Замучила ошибка there are no trading operations - страница 22

 
Sergey Ermolov #:

@Artyom Trishkin поясните пожалуйста ситуацию. Я уже задрочил ваш валидатор чтобы в принципе понять причину почему выдается сообщение что нет сделок. Сделал все проверки и принты в этих проверках.

То итогу если ставлю в начале Oninit безусловное открытие сделки с заведомо ложными параметрами валидатор все равно выдает сообщение что сделок нет, хотя по GBPUSDcheck выдал правильную ошибку, а по EURUSD и NZDUSD как будто вообще не заходил в Oninit и сразу выдал ошибку что сделок нет.

Пробовал ставить тоже самое в OnTick, тоже самое, по EURUSD нет сделок, как будто в OnTick валидатор ни разу не заходит и выдает ошибку, зато появляется ошибка 131 уже в NZDUSD.

Путем простой логики делаю выводы что валидатор даже не заходит в OnTick EURUSD и сваливается в ошибку нет сделок.


Такого объёма не бывает.

 
Vitaly Muzichenko #:

Такого объёма не бывает.

Бывает.

 
Vitaly Muzichenko #:

Такого объёма не бывает.

есть брокеры) но писать тут нельзя их названия)

 

т...м...

микро-счёт, но это настолько единичные случаи

 
Vladimir Pastushak #:

Бывает.

Pavel Malyshko #:

есть брокеры) но писать тут нельзя их названия)

Зачем писать о каких-то брокерах если разговор идёт о валидаторе и следовательно о допустимых объёмах на демо счетах MQ

 
Vladimir Pastushak #:

Бывает.

Бывает и еще меньше
 
Sergey Ermolov #:


Я уже задрочил ваш валидатор чтобы в принципе понять причину почему выдается сообщение что нет сделок. Сделал все проверки и принты в этих проверках..


Цены и объёмы в отправляемых ордерах должны быть валидными.
 
Vitaly Muzichenko #:

Такого объёма не бывает.

Вопрос не в том бывает такой объем или не бывает, а в том что валидатор выдает ошибку что нет ордеров. А в нормальной ситуации должен выдавать ошибку 131.

Распознал два состояния валидатора, бывает время когда валидатор работает не корректно и выдает ошибку что нет ордеров.

Второе он работает нормально, и на этот же самый код выдает ошибку 131.

 
Sergey Ermolov #:

Вопрос не в том бывает такой объем или не бывает, а в том что валидатор выдает ошибку что нет ордеров. А в нормальной ситуации должен выдавать ошибку 131.

Распознал два состояния валидатора, бывает время когда валидатор работает не корректно и выдает ошибку что нет ордеров.

Второе он работает нормально, и на этот же самый код выдает ошибку 131.

Нашел пост (в этой ветке) - может поможет (я понял, что универсального рецепта нет, то есть тут индивидуально и специфично):

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Замучила ошибка there are no trading operations

Nauris Zukas, 2021.11.22 18:30

Всё-таки нашёл проблему, мне по умолчание в  input параметрах стоит ограничение на максимальный лот позиций.

input double MaxLots=0.1;
...
lots = MathMin(lots, MaxLots);

Это и не пропускало открытие позиций если SYMBOL_VOLUME_MIN в валидаторе 0.20. Нельзя для валидатора выставлять по умолчание такое малое ограничение на максимальный лот позиций.

Далее два поста с другой ветки (машинный перевод с английского):

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Проблема "Нет торговых операций" - Кто может решить эту проблему навсегда?!

Пежман Замани , 2019.08.10 19:51

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


Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Проблема "Нет торговли" - Кто может решить эту проблему навсегда?!

Неилджун Сампан Катааг , 2022.03.30 16:22

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

 double checkLotSize( double value){
   double maxVolume  = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MAX );
   double minVolume  = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MIN );
   double volumeStep = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_STEP );
   int ratio         = ( int ) MathRound (value/volumeStep);
  value = value > maxVolume ? maxVolume : (value < minVolume ? minVolume: ( MathAbs (ratio*volumeStep - value) > 0.0000001 ? ratio * volumeStep : value ));
   return NormalizeDouble (value, 2 );
}

и пост (английский)

-------------------

И как справка (по функциям обработки ошибок - для валидатора) - пост и пост (на русском)


"No Trading Operations" Problem - Who can solve this issue forever?!
"No Trading Operations" Problem - Who can solve this issue forever?!
  • 2023.02.06
  • www.mql5.com
Hello guys, I’ve a problem with publishing my EA on the market...
 
Запустить тест на сервере Метаков и проверить почему нет сделок на укзаных символах.