Приветствую всех. Возник такой вопрос. Есть индикатор (модифицированные фракталы), при загрузке на график все корректно, работает как и должен, однако при попытке использовать его в советнике, говорит что буфер пустой. При этом проходя буфер в Deinit он хранит правильные значения.
исходники индикатора приложены. Готов выслушать советы и подсказки, что делаю не так.
Код из советника:
Очень бегло глянул. Вопрос: а разве фрактал может быть на нулевом баре? А вот в OnDeinit() вы пробегаетесь в цикле по барам и, естественно, находите фрактал (не пустое значение буфера).
Artyom Trishkin: Очень бегло глянул. Вопрос: а разве фрактал может быть на нулевом баре? А вот в OnDeinit() вы пробегаетесь в цикле по барам и, естественно, находите фрактал (не пустое значение буфера).
на нулевом баре не может, у меня минимум на 4, 0-3 я написал для "а может я такой криворукий и что то не так накодил". в Deinit я так же прохожу по 4-6 и все на своих местах, значения имеются. это мне и не понятно.
Maxim Dobrovolskii: на нулевом баре не может, у меня минимум на 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.09855 2015.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 позиции находит фрактал. мне в таком случае не понятно, как обращаться к индикаторному буферу.
2015.11.01 13:19:11.023 2015.10.30 22:54 MoneyRobotics_Proboi! EURUSD,H1: x = 29 fractal Up: 1.09855 2015.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 позиции находит фрактал. мне в таком случае не понятно, как обращаться к индикаторному буферу.
а как это может повлиять? к сожалению ничего не изменилось.
как я себе представляю процесс: индикатор подгружается, начинает каждый тик/бар проверять условие, если оно соблюдается, кладет значение в выбранный буфер или буферы, затем советник обращается к индикатору по номеру буфера к значению по определенному смещению и берет значение. Так?
а как это может повлиять? к сожалению ничего не изменилось.
как я себе представляю процесс: индикатор подгружается, начинает каждый тик/бар проверять условие, если оно соблюдается, кладет значение в выбранный буфер или буферы, затем советник обращается к индикатору по номеру буфера к значению по определенному смещению и берет значение. Так?
А зачем в индикаторе контроль нового бара? Судя по всему сложных расчетов нет
Честно говоря, я вообще не понимаю, как нормально пользоваться библиотекой в терминале без поиска и возможности сортировки... Просто тупо прокручивать сотни строчек?!!!
Alena000: Честно говоря, я вообще не понимаю, как нормально пользоваться библиотекой в терминале без поиска и возможности сортировки... Просто тупо прокручивать сотни строчек?!!!
Поиск встроен в MetaEditor (верхний правый угол). Искать можно вхождения по:
открытому документу
по всем файлам
MQL4/MQL5.community
Поиск встроен в сам терминал (верхний правый угол). Поиск из терминала идёт по всему MQL5.community (Статьи, Продукты, Библиотека, Сигналы, Форум, Блоги, Документация).
Приветствую всех. Возник такой вопрос. Есть индикатор (модифицированные фракталы), при загрузке на график все корректно, работает как и должен, однако при попытке использовать его в советнике, говорит что буфер пустой. При этом проходя буфер в 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];в самом конце
Вот это:
сделайте
в самом конце
а как это может повлиять? к сожалению ничего не изменилось.
как я себе представляю процесс: индикатор подгружается, начинает каждый тик/бар проверять условие, если оно соблюдается, кладет значение в выбранный буфер или буферы, затем советник обращается к индикатору по номеру буфера к значению по определенному смещению и берет значение. Так?
а как это может повлиять? к сожалению ничего не изменилось.
как я себе представляю процесс: индикатор подгружается, начинает каждый тик/бар проверять условие, если оно соблюдается, кладет значение в выбранный буфер или буферы, затем советник обращается к индикатору по номеру буфера к значению по определенному смещению и берет значение. Так?
А зачем в индикаторе контроль нового бара? Судя по всему сложных расчетов нет
Честно говоря, я вообще не понимаю, как нормально пользоваться библиотекой в терминале без поиска и возможности сортировки... Просто тупо прокручивать сотни строчек?!!!
Поиск встроен в MetaEditor (верхний правый угол). Искать можно вхождения по:
- открытому документу
- по всем файлам
- MQL4/MQL5.community
Поиск встроен в сам терминал (верхний правый угол). Поиск из терминала идёт по всему MQL5.community (Статьи, Продукты, Библиотека, Сигналы, Форум, Блоги, Документация).