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