Аэрофлоту
пока не смотрел - из общего - делайте при открытии проверку ошибок и их обрабатывайте... вплоть до того - что открываете циклом - пока не откроет или ордер не выставит....
размер спреда учитывайте. Перед самым открытием запрашивайте актуализацию бид или аска.
Циклом открывайте или ордера выставляйте - пока не открыт пока не выставлен. Далее в цикле пауза 1 сек если не выставлен и еще раз и так раз 10-15.
Цены открытий или выставлений ордеров проверьте - запросите перед самым открытием выставлением.
Слиппадж проверьте- увеличьте.
Используйте CTrade библ. классы.
Прогоните в тестере, посмотрите сохраняется ли проблема.
Добавьте подробные принты в лог во всех логических развилках, например, при выходе из обработки тиков из-за больших спредов и т.д.
вот для примера - раньше по крайней мере в статье... код правильный (вроде правила особо и не менялись...))
пробуйте сравнивайте - смотрите...
- www.mql5.com
пока не смотрел — из общего — делайте при открытии проверку ошибок и обрабатывайте их... вплоть до того, что открываете циклом — пока не откроется или ордер не будет выставлен...
Учитывайте размер спреда. Перед самым открытием запрашивайте актуализацию бид или аск.
Открывайте или выставляйте ордера циклом — пока не открыт, пока не выставлен. Далее в цикле пауза 1 сек, если не выставлен, и еще раз, и так раз 10-15.
Цены открытия или выставления ордеров проверьте — запросите перед самым открытием или выставлением.
Слиппадж проверьте- увеличьте.
Используйте CTrade библ. классы.
у меня код компилируется и используются из этой библиотеки. но почему-то ошибку выдает именно по инструменту дешевле сбера
у меня код компилируется и используются из этой библиотеки. но почему-то ошибку выдает именно по инструменту дешевле сбера
1_сам вопрос со скринами и пояснениями
Код не смотрел.Сорри.
Но думаю причина может крыться в разных размерах пункта с тиком, на акциях это часто бывает.
При нормализации цены часто ограничиваются NormalizeDouble(), но когда пункты не равны тикам этого не достаточно.
попробуйте нормализовать цену так:
//+------------------------------------------------------------------+ double NormalizePrice(string symb, double price) { double tick_size = SymbolInfoDouble(symb, SYMBOL_TRADE_TICK_SIZE); if(tick_size == 0) return 0; price = NormalizeDouble(MathRound(price / tick_size) * tick_size, (int)SymbolInfoInteger(symb, SYMBOL_DIGITS)); return(price); } //+------------------------------------------------------------------+
Код не смотрел.Сорри.
Но думаю причина может крыться в разных размерах пункта с тиком, на акциях это часто бывает.
При нормализации цены часто ограничиваются NormalizeDouble(), но когда пункты не равны тикам этого не достаточно.
попробуйте нормализовать цену так:
красиво - спс. Взял в копилку.....
тут проверьте условия свои по этим подсказкам
https://www.mql5.com/ru/articles/2513
https://www.mql5.com/ru/articles/1683
также проверьте уровни СЛ и ТР если выставляете на мин допустимые значения к цене позиции или ордера
- www.mql5.com
Раз в тестере проблема воспроизводится, под отладчиком (в том числе в пошаговом режиме) посмотрите как обрабатываются тики на баре - что-то в связке логика+данные вызывает пропуск начальных тиков на баре.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем добрый день и заранее спасибо за ответ/совет/подсказку.
Я сам не разработчик, а Заказчик, поэтому заранее извиняюсь, если по коду у меня не супер знания.
Ранее советник был написан на фьючерсах, поэтому не замечал проблемы.
Сейчас пробую на акциях российской биржи из-за комиссий этого советника подобрать параметры.
Сразу отвечу на вопрос=) Понимаю, что "нормальные люди" на валютных парах торгуют))), но если мой советник имеет баг в коде выставления заявок, то какая разница на каком инструменте)
Логика советника простая (в приложенном файле), но почему-то он по-разному ведёт себя на двух похожих инструментах (сбер работает, а газпром не работает). Видимо, где-то в коде проблема.
На газпроме п очему-то делает отступ или сдвиг на 30 секунд вместо того, чтобы откладывать ордера от начала свечи, то есть на первой секунде минутной свечи. 1 минута — это выбранный таймфрейм.
Мне непонятно, почему газпром так реагирует. Вроде такой же ликвидный (голубая фишка). Спреды адекватные.
Предположения:
предположение1_*Может, из-за низкой цены Газпрома (в 2 раза ниже, чем у Сбербанка) где-то в алгоритме есть скрытый баг.
По фьючерсу на юань (цена которого 13,734 руб.) такого нет. Но может, потому что это фьючерс
По Аэрофлоту цена 53 руб. — результат как с Газпромом))) тоже постоянный убыток (!!!)
предположение2_*по спредам я не заметил ничего ужасного. Тем более что они по всему графику Газпрома и по ВСЕМ свечам торгуются криво. Есть только убыток -0,10 за каждую свечу.
В архиве
1_сам вопрос со скринами и пояснениями
2_логика алгоритма
3_отчет сбербанка и газпрома. Делал исторический прогон, как учили)) на «каждый чих на основе реальных тиков»
4_(на всякий случай) выгрузил график сбербанка и газпрома, бары и тики (проверить график), если вдруг дело в данных, но может дело и не в этом.
5_сам советник