![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
О чем разговор-то? Я как вижу советник заточен работать 1 раз на бар.
Советник написан правильно. Вникните просто повнимательнее.
Я имел ввиду, что условие
if (NormalizeDouble(Volume[1] - Vol, 0) > 0.5)
не выполняется во многих случаях. У вас Vol == 0 только при старте программы, далее он не бывает меньше 1. При таком условии, во-первых, не будет срабатывать на всех барах, у которых предыдущий бар имел объем =1. Во вторых, если к примеру три бара шли с объемами 1, 1, 2, то программа войдет в этот блок if() только после бара с объемом не менее 5. Вникните просто повнимательнее.
Если там вместо Vol=0; написать Vol=-1; то выглядеть будет коряво, но логика будет правильнее, т.к далнейший Vol++; всё поставит на свои места
Советник написан правильно. Вникните просто повнимательнее.
Я имел ввиду, что условие
if (NormalizeDouble(Volume[1] - Vol, 0) > 0.5)
не выполняется во многих случаях. У вас Vol == 0 только при старте программы, далее он не бывает меньше 1. При таком условии, во-первых, не будет срабатывать на всех барах, у которых предыдущий бар имел объем =1. Во вторых, если к примеру три бара шли с объемами 1, 1, 2, то программа войдет в этот блок if() только после бара с объемом не менее 5. Вникните просто повнимательнее.
Значение Vol после старта программы все время не меньше 1. И это верно. Условие срабатывает только тогда, когда объем предыдущего бара (количество тиков в предыдущем баре) не равен количеству запусков советника на предыдущем баре.
А, ну так вы логику не объяснили
Если посчитать объемы по младшим таймфреймам и сравнить со старшим - тоже не будет совпадать.
Речь не о совпадении сумм объемов на разных таймфреймах. Проблема проста по сути, как определить OHLC цены Ask? Через советники и индикаторы этого не сделать, т.к. они запускаются не на каждом тике. Через DDE возможно отследить, но это надо еще сохранять условие запуска только одного терминала с DDE. Но ведь можно напрямую из памяти терминала получать эти данные.
На самом деле проблема очень актуальна. С недавнего времени несколько именитых брокеров стали предоставлять возможность вести торговлю через MT4. Клиенты не могут отследить цену Ask и посылают не по своей вине в службу технической поддержки часто несправедливые претензии по неисполнению limit-ордеров и TakeProfit-уровней по цене Ask. У клиентов нет инструментария в терминале отслеживать цену Ask. И далеко не каждый способен освоить DDE.
Уважаемые разработчики, приоткройте занавес в этом направлении. Это не навредит, а только устранит проблемы и клиентам с неправильными претензиями и брокерам, несущим ответы на претензии и оправдывающимя на различных форумах.
Нужен инструмент мониторинга цены Ask. Можете вы дать информацию, по которой будет возможно написать DLL для отслеживания цены Ask?
Попробуйте такой вариант советника: