Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 590
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте!
Покажите, пожалуйста, как можно запретить советнику, основанному на индикаторе Triple Exponential Average, открывать позиции, если последняя сделка выбита по SL?
MQL5
В обычном режиме советник работает без нареканий, как только начинаю оптимизацию - на каждый проход жалоба что выход на пределы массива.
Но дело в том что он даже не исполняет код. Я расставил Print'ы по программе, никакого вывода, просто ошибка на каждый прогон, что выход.
Почему Print не работает?
MQL5
В обычном режиме советник работает без нареканий, как только начинаю оптимизацию - на каждый проход жалоба что выход на пределы массива.
Но дело в том что он даже не исполняет код. Я расставил Print'ы по программе, никакого вывода, просто ошибка на каждый прогон, что выход.
Почему Print не работает?
Проверяйте размер массива. Вам же показывают строку, в которой выход за пределы массива. Вот перед этой строкой вставьте Print, в котором пропишите вывод размера массива и индекса, по которому пытаетесь обратиться к данным массива - в журнал будет выведен размер массива и индекс, и уже затем будет вылет программы по ошибке.
НО! Делайте всё это в тестере в визуальном реиме, а не оптимизаторе - в оптимизаторе (и тестере в не визуальном режиме) принты все отключены для ускорения.
Выход за пределы массива происходит до того, как дойдёт до Print().
Проверяйте размер массива. Вам же показывают строку, в которой выход за пределы массива. Вот перед этой строкой вставьте Print, в котором пропишите вывод размера массива и индекса, по которому пытаетесь обратиться к данным массива - в журнал будет выведен размер массива и индекс, и уже затем будет вылет программы по ошибке.
НО! Делайте всё это в тестере в визуальном реиме, а не оптимизаторе - в оптимизаторе (и тестере в не визуальном режиме) принты все отключены для ускорения.
вот и проблема что при любых параметрах в визуале все работает, а на оптимизации при любых выход за пределы
вот и проблема что при любых параметрах в визуале все работает, а на оптимизации при любых выход за пределы
В массиве что лежит? Я лишь могу догадываться, что либо данных в массиве ещё нету, либо он имеет меньший размер, чем вы думаете. Есть проверки в программе на размер массива?
В массиве что лежит? Я лишь могу догадываться, что либо данных в массиве ещё нету, либо он имеет меньший размер, чем вы думаете. Есть проверки в программе на размер массива?
Последние N, у меня 500, значений macd, а пределы цикла строго ограничены и никак не могу быть меньше 0 и больше N, это я и отладкой прогонял и на бумаге считал
Последние N, у меня 500, значений macd, а пределы цикла строго ограничены и никак не могу быть меньше 0 и больше N, это я и отладкой прогонял и на бумаге считал
Вы уверены, что массив заполнен данными когда вы к нему обращаетесь? Есть проверка на доступность данных и на то, что массив имеет нужную величину?
То, что написано и посчитано на бумажке, вовсе не значит, что оно совпадает с тем, что получил (не получил) советник.
Вы уверены, что массив заполнен данными когда вы к нему обращаетесь? Есть проверка на доступность данных и на то, что массив имеет нужную величину?
То, что написано и посчитано на бумажке, вовсе не значит, что оно совпадает с тем, что получил (не получил) советник.
да, в самом начале, до все операций, копируется из буфера
да, в самом начале, до все операций, копируется из буфера
Копируется. А сколько скопировано проверяется?
Если вы используете индикатор со сглаживанием, то для его расчёта требуется несколько больше баров, чем вы предполагаете. Поэтому то, что вы скопировали, ещё не говорит о том, что данные скопированы и доступны в полном объёме.
Вам проще сделать проверку на размер массива и, если он не имеет требуемый объём, то выходить из OnTick()