Обсуждение статьи "Какие проверки должен пройти торговый робот перед публикацией в Маркете" - страница 15

 

Здравствуйте.

Чем проверить достаток дискового пространства?


теперь такое сообщение

с третьей попытки прошло без внесения каких-либо изменений


 
Denis Nikolaev #:

Здравствуйте.

Чем проверить достаток дискового пространства?


теперь такое сообщение

с третьей попытки прошло без внесения каких-либо изменений


В данном случае сообщение не совсем корректное. Проблема была в оперативной памяти.

Памяти на сервере добавили.

 
Anton #:

В данном случае сообщение не совсем корректное. Проблема была в оперативной памяти.

Памяти на сервере добавили.

Благодарю.

 

Терминал МТ5. Брокер RoboForex, инструмент - CFD AAPL
При первом же прогоне в робота тестере 2021.05.05 16:30:00  получил  сообщение " failed market buy 0.1 AAPL [Market closed] ",  ошибка 4756, реткод 10018     

День рабочий - среда, время торговое, тик в 16:30:00 проходит,  по какой причине закрыт рынок - непонятно.

Проверки на   Market closed нет списке обязательных проверок, т.е. (теоретически) сов валидацию прошел бы. 
Но!
Если после получения этой ошибки не делать задержку по времени на 2-3 часа, то не пройдет - будет получена критическая ошибка "Стек переполнен", тестер вырубится. Да даже если и прошел бы - очень мне не нравятся любые ошибки в журнале. Не должно их быть.

Внимательно пересмотрел все функции - как получить событие " Market closed " не нашел. Похоже что его нет.
Вопрос к автору статьи:
- Как с этим бороться?
Если все же есть функция помогающая избежать этой ошибки - подскажите, пожалуйста, буду благодарен.
В реальной торговле за пару минут до закрытия дня и минут 5-10 минут после начала нового, почти все брокеры закрывают торговлю. Но котировки идут. Таким образом советник, если он открывает по рынку и есть разрешающий сигнал, выдает простыни ошибок. Хорошо хоть в тестере этот "перекур" не отрабатывается. 

 
Vasyl Temchenko #:

Терминал МТ5. Брокер RoboForex, инструмент - CFD AAPL
При первом же прогоне в робота тестере 2021.05.05 16:30:00  получил  сообщение " failed market buy 0.1 AAPL [Market closed] ",  ошибка 4756, реткод 10018     

День рабочий - среда, время торговое, тик в 16:30:00 проходит,  по какой причине закрыт рынок - непонятно.

Проверки на   Market closed нет списке обязательных проверок, т.е. (теоретически) сов валидацию прошел бы. 
Но!
Если после получения этой ошибки не делать задержку по времени на 2-3 часа, то не пройдет - будет получена критическая ошибка "Стек переполнен", тестер вырубится. Да даже если и прошел бы - очень мне не нравятся любые ошибки в журнале. Не должно их быть.

Внимательно пересмотрел все функции - как получить событие " Market closed " не нашел. Похоже что его нет.
Вопрос к автору статьи:
- Как с этим бороться?
Если все же есть функция помогающая избежать этой ошибки - подскажите, пожалуйста, буду благодарен.
В реальной торговле за пару минут до закрытия дня и минут 5-10 минут после начала нового, почти все брокеры закрывают торговлю. Но котировки идут. Таким образом советник, если он открывает по рынку и есть разрешающий сигнал, выдает простыни ошибок. Хорошо хоть в тестере этот "перекур" не отрабатывается. 

Котировки идут, но тики отсутствуют. OnTick() работает только если есть очередной тик.

 
Alexey Viktorov #:

Котировки идут, но тики отсутствуют. OnTick() работает только если есть очередной тик.

Уточняю: 
- речь о тестере
- открытие сессии CFD происходит, как правило, с меньшим или большим, но гепом, т.е. цена открытия рассчитанная роботом находится на уровне "открыть вчера"
- по первому тику, ровно в 16:30:00,  робот пытается открыть сделку.

Вот тут и происходит неприятность: - ровно в 16:30:00  рынок еще закрыт. Возможно на доли секунды. Но тестер в это время валит простыню ошибок, пока не переполнится стек. График при этом стоит на том самом первом тике.

Я решил эту проблему следующим образом:
- установил дистанцию от текущей цены до цены открытия.
- при ошибке обнуляю переменную цены открытия. Она опять получает значение, но уже на 50-100 пунктов от текущей цены.
- проходит только одна ошибка, далее торгует нормально.

Но этот как бы окольное решение. Есть еще пара вариантов:
 - добавить в менюшку время открытия сессии и начинать торговлю с задержкой 5-10 минут
- контролировать время между закрытием первого бара и открытием нулевого. Если есть разрыв - делать задержку.
В этом случае это как бы помогает избежать множества ошибок. Но не решает "проблему полуночи". Брокеры закрывают торговлю на 10-15 минут, но котировки при этом идут, робот пытается торговать и многократно выдает ошибку "Рынок закрыт".
Предотвратить это имеющимися средствами нельзя.
Если бы была функция детектирующая реальную доступность рынка - никаких проблем не возникало бы.

ЗЫ
Ах, да, насчет OnTick. Верно говорите, но...
Из OnTick я вызываю функцию Trade() только один раз в минуту на открытии нового бара, а далее по коду вместо return; у меня идет повторный вызов Trade(), не всегда все что нужно выполняется за один тик, т.е. в моем варианте после открытия или закрытия сделки код прокручивается еще минимум 1 раз. По-видимому именно из-за этого и зацикливается на ошибке "Рынок закрыт"



 
Vasyl Temchenko #:

Уточняю: 
- речь о тестере
- открытие сессии CFD происходит, как правило, с меньшим или большим, но гепом, т.е. цена открытия рассчитанная роботом находится на уровне "открыть вчера"
- по первому тику, ровно в 16:00,  робот пытается открыть сделку.

Может лучше посмотреть спецификацию?


Откуда первый тик в 16:00 если время первого тика в 16:30

 
Alexey Viktorov #:

Может лучше посмотреть спецификацию?
Откуда первый тик в 16:00 если время первого тика в 16:30

Да, конечно же 16:30
Спасибо что заметили очепятку - поправил текст.
Дописал с OnTick() строку

   if(iTime(NULL,PERIOD_M5,0)-iTime(NULL,PERIOD_M5,1) > 360) return;  

Эту конкретную проблему решило - завел счетчик ошибок в функцию открытия сделок, на годовом прогоне ошибок ноль.
А это значит что дело как раз в этих долях секунды (или секундах/минутах) при открытии сессии.
Но функцию информирующую о доступности рынка все же хотелось бы поиметь.

 

мне вот интересно, а люди которые мучительно преодолевают проблемы авто-тестера,

они своих роботов вообще используют ? 

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

могу понять когда авто-тест подсовывает хитрости про странные лоты/шаги/пункты/баланс_в_1 цент..

...но вещь на которую робот обязан был наступить и в обычной эксплуатации - попытки чё-то делать вне торговой сессии, или флаг торговля_запрещена это как  ? 

вы вообще своего робота кроме локального тестера ни разу не запускали ???

 
Это все бесценный опыт.
И разная цель написания.... 
Для кого-то это просто Pop It
А для кого-то старания....