Обсуждение статьи "Какие проверки должен пройти торговый робот перед публикацией в Маркете" - страница 15
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте.
Чем проверить достаток дискового пространства?
теперь такое сообщение
с третьей попытки прошло без внесения каких-либо изменений
Здравствуйте.
Чем проверить достаток дискового пространства?
теперь такое сообщение
с третьей попытки прошло без внесения каких-либо изменений
В данном случае сообщение не совсем корректное. Проблема была в оперативной памяти.
Памяти на сервере добавили.
В данном случае сообщение не совсем корректное. Проблема была в оперативной памяти.
Памяти на сервере добавили.
Благодарю.
Терминал МТ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 минут после начала нового, почти все брокеры закрывают торговлю. Но котировки идут. Таким образом советник, если он открывает по рынку и есть разрешающий сигнал, выдает простыни ошибок. Хорошо хоть в тестере этот "перекур" не отрабатывается.
Терминал МТ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() работает только если есть очередной тик.
Котировки идут, но тики отсутствуют. OnTick() работает только если есть очередной тик.
Уточняю:
- речь о тестере
- открытие сессии CFD происходит, как правило, с меньшим или большим, но гепом, т.е. цена открытия рассчитанная роботом находится на уровне "открыть вчера"
- по первому тику, ровно в 16:30:00, робот пытается открыть сделку.
Вот тут и происходит неприятность: - ровно в 16:30:00 рынок еще закрыт. Возможно на доли секунды. Но тестер в это время валит простыню ошибок, пока не переполнится стек. График при этом стоит на том самом первом тике.
Я решил эту проблему следующим образом:
- установил дистанцию от текущей цены до цены открытия.
- при ошибке обнуляю переменную цены открытия. Она опять получает значение, но уже на 50-100 пунктов от текущей цены.
- проходит только одна ошибка, далее торгует нормально.
Но этот как бы окольное решение. Есть еще пара вариантов:
- добавить в менюшку время открытия сессии и начинать торговлю с задержкой 5-10 минут
- контролировать время между закрытием первого бара и открытием нулевого. Если есть разрыв - делать задержку.
В этом случае это как бы помогает избежать множества ошибок. Но не решает "проблему полуночи". Брокеры закрывают торговлю на 10-15 минут, но котировки при этом идут, робот пытается торговать и многократно выдает ошибку "Рынок закрыт".
Предотвратить это имеющимися средствами нельзя.
Если бы была функция детектирующая реальную доступность рынка - никаких проблем не возникало бы.
ЗЫ
Ах, да, насчет OnTick. Верно говорите, но...
Из OnTick я вызываю функцию Trade() только один раз в минуту на открытии нового бара, а далее по коду вместо return; у меня идет повторный вызов Trade(), не всегда все что нужно выполняется за один тик, т.е. в моем варианте после открытия или закрытия сделки код прокручивается еще минимум 1 раз. По-видимому именно из-за этого и зацикливается на ошибке "Рынок закрыт"
Уточняю:
- речь о тестере
- открытие сессии CFD происходит, как правило, с меньшим или большим, но гепом, т.е. цена открытия рассчитанная роботом находится на уровне "открыть вчера"
- по первому тику, ровно в 16:00, робот пытается открыть сделку.
Может лучше посмотреть спецификацию?
Откуда первый тик в 16:00 если время первого тика в 16:30
Может лучше посмотреть спецификацию?
Откуда первый тик в 16:00 если время первого тика в 16:30
Да, конечно же 16:30
Спасибо что заметили очепятку - поправил текст.
Дописал с OnTick() строку
Эту конкретную проблему решило - завел счетчик ошибок в функцию открытия сделок, на годовом прогоне ошибок ноль.
А это значит что дело как раз в этих долях секунды (или секундах/минутах) при открытии сессии.
Но функцию информирующую о доступности рынка все же хотелось бы поиметь.
мне вот интересно, а люди которые мучительно преодолевают проблемы авто-тестера,
они своих роботов вообще используют ?
просто подчас разбираются ошибки которые и в реале будут вызывать как минимум ругань в журналах
могу понять когда авто-тест подсовывает хитрости про странные лоты/шаги/пункты/баланс_в_1 цент..
...но вещь на которую робот обязан был наступить и в обычной эксплуатации - попытки чё-то делать вне торговой сессии, или флаг торговля_запрещена это как ?
вы вообще своего робота кроме локального тестера ни разу не запускали ???