Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Разработчики, у вас 100% гдето ошибка.
Взгляните на скрин что Comment выдал после закрытия терминала и открытия его после 1-ной минуты.
Количество инициализированых елементов и то что первый ,второй,третий и четвёртый елемент буфера пустой.
Индикатор считает только 0-ой буфер. Так почему 2 свечи?
Разработчики, у вас 100% гдето ошибка.
Взгляните на скрин что Comment выдал после закрытия терминала и открытия его после 1-ной минуты.
Количество инициализированых елементов и то что первый ,второй,третий и четвёртый елемент буфера пустой.
Индикатор считает только 0-ой буфер. Так почему 2 свечи?
Потому, что при анализе на новый бар, вы не проверяете количество баров, а ограничиваетесь лишь проверкой времени. При запуске терминала или обрыве связи с сервером в процессе работы, до прихода недостающих(до полной истории) баров, приходит тик. На этот тик создаётся новая свеча, но между ней и историей в терминале есть разрыв(недостающая история), которая будет выкачена с сервера и вставлена по месту, а так как вы не анализируйте количество баров, то на очередном расчёте будете думать, что нового бара нет, вот тогда и появляется вторая свеча. После открытия нового бара она исчезнет.
И не важно что в деините обнуление происходит при закрытии терминала?
Василий погоняй тестовый индикатор печатающий количество баров.
Вот что печатает в лог.
Может так поймёшь откуда проблема...
Прошу разработчиков дать ответ на простой ответ.
При закрытии терминала функция DeInit() выполняется в прикреплённых к графику программах?
Строго говоря, нет
Выполняется OnDeinit. DeInit выполнится только в том случае, если Вы вызовите её явно из OnDeinit.
Если Вы имеете в виду старую функцию deinit, то также имейте в виду что названия функций - регистрозависимые. То есть, DeInit - неизвестно какая функция, deinit - стандартная точка входа на деинициализации (как и OnDeinit)
И не важно что в деините обнуление происходит при закрытии терминала?
Кому важно? На закрытии терминала эти буфера уже никому не нужны, так как они тотчас будут освобождены при выгрузке программы, которая происходит сразу после OnDeinit
Попробуйте просто сменить таймфрейм. OnDeinit отработает, буфера останутся (так как выгрузки программы не происходит в этом случае), но никто не гарантирует их содержимое из "прошлой жизни"
Прочитайте наконец документацию! https://docs.mql4.com/ru/runtime/running и https://docs.mql4.com/ru/runtime/event_fire#deinit
Кому важно? На закрытии терминала эти буфера уже никому не нужны, так как они тотчас будут освобождены при выгрузке программы, которая происходит сразу после OnDeinit
Попробуйте просто сменить таймфрейм. OnDeinit отработает, буфера останутся (так как выгрузки программы не происходит в этом случае), но никто не гарантирует их содержимое из "прошлой жизни"
Прочитайте наконец документацию! https://docs.mql4.com/ru/runtime/running и https://docs.mql4.com/ru/runtime/event_fire#deinit
Тоесть в моём случае раздвоение буферов происходит уже при повторном открытии графика?
У Вас не происходит раздвоения буферов.
Это Вы так сами свой буфер заполняете. Первый раз на отрисовке, второй раз на приходе порции данных. Оба раза Вы оперируете с одним и тем же значением Time[0]
У Вас не происходит раздвоения буферов.
Это Вы так сами свой буфер заполняете. Первый раз на отрисовке, второй раз на приходе порции данных. Оба раза Вы оперируете с одним и тем же значением Time[0]
ок.
Тогда исправте англ справку и всё
Ещё в английской справке написано что ArrayInitialize ничего не возвращает.