Приветствую всех!
Есть индикатор.
В нем при смене ТФ сбрасываются переменные:
Пробовал переделать согласно примеру:
Вариант 1. Значение внешней переменной, присвоенное на глобальном уровне:
Вариант 2. Глобальные переменные без инициализации, но инициализированы в ините:
- 2016.11.29
- www.mql5.com
Прочитал ветку внимательно. По индикаторам вопрос остался открытым?
В примере все работает. В моем случае нет. Подскажите пожалуйста где искать причину?
Ну так пример который Вы юзаете это советник, а у Вас индикатор. Поведение советника и индикатора при смене таймфрейма будет разное. Как выход из положения, это использовать глобальные терминала.
Ну так пример который Вы юзаете это советник, а у Вас индикатор. Поведение советника и индикатора при смене таймфрейма будет разное. Как выход из положения, это использовать глобальные терминала.
Что значит использовать глобальные переменные терминала? как решить проблему для индикатора?
Что значит использовать глобальные переменные терминала? как решить проблему для индикатора?
- www.mql5.com
Проблема в общем случае нерешаема, потому что два одинаковых индикатора на одном чарте неразличимы между собой, разве что разным значением параметров. И идентифицировать, к какому индикатору какая глобальная переменная относится, невозможно.
Ситуацию спасло бы наличие некоторой встроенной MQL функции типа long GetUniqueProgId(), которая возвращала бы одно и то же уникальное значение
внутри каждого экземпляра эксперта и индикатора при смене параметров, тайфреймов или аккаунта.
- www.mql5.com
Проблема в общем случае нерешаема
Если код деинициализации равен смене таймфрейма, то через любой механизм передачи данных отправить нужные значения другой копии индикатора.
Если код деинициализации равен смене таймфрейма, то через любой механизм передачи данных отправить нужные значения другой копии индикатора.
Чавой?
Пример. На чарте запущено 2 инстанции одного индикатора: А и B. Каждый из них произвел какие-то длительные действия (например загрузил новости с новостного сайта).
Если бы каждая инстанция могла возвращать некий уникальный ID (по аналогии с HINSTANCE в Виндовс), который бы не менялся при смене таймфрейма, то выгрузка и загрузка данных при деинициализации проблем бы не составила. Сейчас же кто есть кто - непонятно. Отличия толко в символе, таймфрейме и значениях параметров.
Еще раз повторю свою мнение, что несохранение глобальных переменных при переинициализации индикатора есть неправильное решение от разработчиков.
Правильно было бы сохранять их и дать возможность занулять их самому программисту по необходимости в OnDeinit в зависимости от причины
деинициализации.
...Если бы каждая инстанция могла возвращать некий уникальный ID (по аналогии с HINSTANCE в Виндовс), который бы не менялся при смене таймфрейма...
1) каждый индикатор имеет параметры, если параметры одинаковы - индикатор делает одно и тоже
2) при старте, собираем
все параметры в стринг, считаем crc32, устанавливаем shortname = crc32.
3) вот вам постоянный, уникальный айди.
Приветствую всех!
Есть индикатор.
В нем при смене ТФ сбрасываются переменные:
Пробовал переделать согласно примеру:
Вариант 1. Не инициализированная нигде:
Вариант 2. Значение внешней переменной, присвоенное на глобальном уровне:
Вариант 3. Глобальные переменные без инициализации, но инициализированы в ините:
В примере все работает. В моем случае нет. Подскажите пожалуйста где искать причину?
Вы какое отношение к Виталию Горбунову имеете?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Приветствую всех!
Есть индикатор.
В нем при смене ТФ сбрасываются переменные:
Пробовал переделать согласно примеру:
Вариант 1. Не инициализированная нигде:
Вариант 2. Значение внешней переменной, присвоенное на глобальном уровне:
Вариант 3. Глобальные переменные без инициализации, но инициализированы в ините:
В примере все работает. В моем случае нет. Подскажите пожалуйста где искать причину?