Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В коде на самом деле есть еще ошибки. Например, хорошо показано, что использовать CSymbolInfo лишь ради СБ-style - зло.
Закрывать позиции через ранее собранный список тикетов - зло. Это очень распространенная ошибка.
Думаю, вот это говорит о многом:
Стоит понимать, что этот советник предназначен для учебных целей.
Насчёт обработки кодов возврата сервера. Лично я их всегда обрабатываю. Здесь же - в тестере (я надеюсь, вы понимаете, что учебный советник делается для тестера и для дальнейших его доработок уже самостоятельно) - не стоит наверное лепить обработку всех необходимых кодов возврата. Равно, как и всегда иметь своё торговое окружение вполне себя оправдывает как для реальной торговли, так и, тем более для тестера.
Можно поглядеть чего там есть:
Сначала идёт заполнение данных о имеющихся позициях:
Затем, после проверки сигналов идёт открытие (тут открытие позиции Buy):
Если количество Sell больше нуля - закрыть. Советник свинговый - всегда только одна позиция. Значит и нету позиций Buy при наличии позиций Sell - тут проверять их количество излишне, равно как и обновлять ещё раз торговое окружение во внутренних массивах советника.
Далее он проверяет количество позиций Buy. Их количество больше нуля может быть только после открытия. А вот после закрытия Sell количество Buy обязательно равно нулю - свинговый советник. И тут нет необходимости гонять цикл в поисках того, о чём и так известно.
Далее идут минимальные проверки корректности и открытие позиции Buy. Сразу после возврата true идёт обновление внутренних массивов торгового окружения советника.
Всё лаконично и без излишеств. Поправьте, если я что-то тут не увидел.
Там ошибка в enum-входе и вызове, а не в мин. дистанции. Но и она рассчитывается неверно, потому что
Не вижу. Покажите - интересно.
Думаю, вот это говорит о многом:
Стоит понимать, что этот советник предназначен для учебных целей.
Насчёт обработки кодов возврата сервера. Лично я их всегда обрабатываю. Здесь же - в тестере (я надеюсь, вы понимаете, что учебный советник делается для тестера и для дальнейших его доработок уже самостоятельно) - не стоит наверное лепить обработку всех необходимых кодов возврата. Равно, как и всегда иметь своё торговое окружение вполне себя оправдывает как для реальной торговли, так и, тем более для тестера.
Прочли невнимательно. Кодов возврата не хотел. Сам по себе CloseSell на тикетах - зло. Причем тут тестер, когда код должен корректно работать хотя бы на демо и не иметь явных потенциальных ошибок?
После CloseSell должен был быть RefreshRates. Этого нет, поэтому будут обломы даже в тестере, если включить режим задержки. Использование стандартной библы ради СБ-style - зло. И код это хорошо показывает.
Внеся совсем немного изменений в SymbolInfo.mqh получилось его компилировать и использовать в MT4. Но кому в здравом уме может это прийти в голову, когда он пишет что-то на MQL4?! Почему же это приходит в голову многим при кодинге на MQL5?! Мало того, что это кроет в себе кучу потенциальных ошибок, требует время на изучение, так еще и смотрится неуклюже.
Прочли невнимательно. Кодов возврата не хотел. Сам по себе CloseSell на тикетах - зло. Причем тут тестер, когда код должен корректно работать хотя бы на демо и не иметь явных потенциальных ошибок?
После CloseSell должен был быть RefreshRates. Этого нет, поэтому будут обломы даже в тестере, если включить режим задержки. Использование стандартной библы ради СБ-style - зло. И код это хорошо показывает.
После CloseSell() идёт открытие Buy с нулевой ценой:
Зачем два раза RefreshRates() ? Вы код открытия в СБ в CTrade глядели? Я поглядел вот:
После CloseSell() идёт открытие Buy с нулевой ценой:
Зачем два раза RefreshRates() ?
Затем, что вызываются Correct-функции.
Вы код открытия в СБ в CTrade глядели?
Include\Trade\*.mqh всегда смотрю/бдю, поскольку вражину нужно знать в лицо.
Затем, что вызываются Correct-функции.
Include\Trade\*.mqh всегда смотрю/бдю, поскольку вражину нужно знать в лицо.
Вражина :)))
Да, теперь увидел - в коррект-функциях читается цена из m_tick-переменных СБ, которые заполняются при обновлении, а не напрямую через SymbolInfoDouble() - вот с ним не было бы возможной засады, о которой вы говорите. При том, что кода перед коррект-функциями не много, а обновление цен идёт сразу по приходу тика - в самом начале OnTick():
Вражина :)))
Да, теперь увидел - в коррект-функциях читается цена из m_tick-переменных СБ, которые заполняются при обновлении, а не напрямую через SymbolInfoDouble() - вот с ним не было бы возможной засады, о которой вы говорите. При том, что кода перед коррект-функциями не много, а обновление цен идёт сразу по прихожу тика - в самом начале OnTick():
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Советники: Diff_TF_MA_EA
fxsaber, 2018.02.01 22:10
Внеся совсем немного изменений в SymbolInfo.mqh получилось его компилировать и использовать в MT4. Но кому в здравом уме может это прийти в голову, когда он пишет что-то на MQL4?! Почему же это приходит в голову многим при кодинге на MQL5?! Мало того, что это кроет в себе кучу потенциальных ошибок, требует время на изучение, так еще и смотрится неуклюже.
Кину камень и в MQL4-огород. Bid/Ask с вынужденным RefreshRates - зло. А ведь есть прекрасная макро-конструкция, которая дает безошибочный и лаконичный результат.
Я вот всё ждал, когда же вы оседлаете своего конька-горбунка :)))
Вполне достаточно в данных коррект-функциях использовать SymbolInfoDouble() для получения нужных цен. Впрочем, в моих подобных функциях я так и делаю. Здесь же программист зря положился на данные, получаемые от объекта-символа - они выдаются старые - записываемые в m_tick только при обновлении.
Я вот всё ждал, когда же вы оседлаете своего конька-горбунка :)))
Вполне достаточно в данных коррект-функциях использовать SymbolInfoDouble() для получения нужных цен. Впрочем, в моих подобных функциях я так и делаю. Здесь же программист зря положился на данные, получаемые от объекта-символа - они выдаются старые - записываемые в m_tick только при обновлении.
Здесь возникает логичный вопрос, кто его заставил лезть за простейшими данными в ООП? В MQL4 эти данные всегда получал без проблем, а тут что изменилось в сознании?
Конек-горбунок
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
MT4-Tester VS MT5-Tester
fxsaber, 2017.05.08 10:04
Благодаря сабжу нашелся виновник, так всегда бывает, когда есть возможность сравнивать.
Советник, показывающий баг
MT4
MT5