Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 466
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Приветствую всех. Возник такой вопрос. Есть индикатор (модифицированные фракталы), при загрузке на график все корректно, работает как и должен, однако при попытке использовать его в советнике, говорит что буфер пустой. При этом проходя буфер в Deinit он хранит правильные значения.
исходники индикатора приложены. Готов выслушать советы и подсказки, что делаю не так.
Код из советника:
Можно if'ы в конце заменить на:
хо так просто ,,,:)
Спасибо
Приветствую всех. Возник такой вопрос. Есть индикатор (модифицированные фракталы), при загрузке на график все корректно, работает как и должен, однако при попытке использовать его в советнике, говорит что буфер пустой. При этом проходя буфер в Deinit он хранит правильные значения.
исходники индикатора приложены. Готов выслушать советы и подсказки, что делаю не так.
Код из советника:
Очень бегло глянул. Вопрос: а разве фрактал может быть на нулевом баре? А вот в OnDeinit() вы пробегаетесь в цикле по барам и, естественно, находите фрактал (не пустое значение буфера).
на нулевом баре не может, у меня минимум на 4, 0-3 я написал для "а может я такой криворукий и что то не так накодил". в Deinit я так же прохожу по 4-6 и все на своих местах, значения имеются. это мне и не понятно.
В OnDeinit() вы пробегаете в цикле (от 0 до 100) по барам в поиске не нулевого значения и выводите в журнал найденное значение.
А в OnTick() вы пытаетесь вывести только 6 последних баров буфера 0. На них фрактала может и не быть.
Сначала найдите бар, на котором есть фрактал, а потом значение этого бара и выводите.
В OnDeinit() вы пробегаете в цикле (от 0 до 100) по барам в поиске не нулевого значения и выводите в журнал найденное значение.
А в OnTick() вы пытаетесь вывести только 6 последних баров буфера 0. На них фрактала может и не быть. Сначала найдите бар, на котором есть фрактал, а потом значение этого бара и выводите.
в 6 баре по задумке и должен быть фрактал.
2015.11.01 13:19:11.023 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: x = 29 fractal Up: 1.098552015.11.01 13:19:11.023 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: x = 21 fractal Up: 1.09976
2015.11.01 13:19:11.023 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: x = 16 fractal Down: 1.09652
2015.11.01 13:19:11.023 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: x = 6 fractal Up: 1.10721
2015.11.01 13:19:10.577 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: Deinit Function
2015.11.01 13:19:08.380 2015.10.01 00:00 MoneyRobotics_Proboi! test started
это начало лога. старт теста, советник отработал, запускается Deinit, и сразу на 6 позиции находит фрактал. мне в таком случае не понятно, как обращаться к индикаторному буферу.
https://charts.mql5.com/9/256/eurusd-h1-alpari-limited-3.png
повтор изображения.
в 6 баре по задумке и должен быть фрактал.
2015.11.01 13:19:11.023 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: x = 29 fractal Up: 1.098552015.11.01 13:19:11.023 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: x = 21 fractal Up: 1.09976
2015.11.01 13:19:11.023 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: x = 16 fractal Down: 1.09652
2015.11.01 13:19:11.023 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: x = 6 fractal Up: 1.10721
2015.11.01 13:19:10.577 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: Deinit Function
2015.11.01 13:19:08.380 2015.10.01 00:00 MoneyRobotics_Proboi! test started
это начало лога. старт теста, советник отработал, запускается Deinit, и сразу на 6 позиции находит фрактал. мне в таком случае не понятно, как обращаться к индикаторному буферу.
https://charts.mql5.com/9/256/eurusd-h1-alpari-limited-3.png
повтор изображения.
Вот это:
сделайте
prevtime = Time[0];
в самом конце
Вот это:
сделайте
в самом конце
а как это может повлиять? к сожалению ничего не изменилось.
как я себе представляю процесс: индикатор подгружается, начинает каждый тик/бар проверять условие, если оно соблюдается, кладет значение в выбранный буфер или буферы, затем советник обращается к индикатору по номеру буфера к значению по определенному смещению и берет значение. Так?
а как это может повлиять? к сожалению ничего не изменилось.
как я себе представляю процесс: индикатор подгружается, начинает каждый тик/бар проверять условие, если оно соблюдается, кладет значение в выбранный буфер или буферы, затем советник обращается к индикатору по номеру буфера к значению по определенному смещению и берет значение. Так?
А зачем в индикаторе контроль нового бара? Судя по всему сложных расчетов нет