Всем привет!
Написал простенький индикатор, есть пара ключевых переменных которые мне нужно передать эксперту, какие для этого существуют механизмы? где почитать?
Самое простое записать из в буффер типа INDICATOR_CALCULATIONS и читать из советника.
Можно через глобалы, можно через файлы, можно через пайпы.
Но первый механизм самый простой и надёжный по синхронизации. Хотя придётся тягать дополнительную память буффера.
- www.mql5.com
CMyClass *objectCollection[];Использовал GlobalVariableSet Но! раньше если мне достаточно было передать значения нескольких переменных, а теперь я хочу на глобальный уровень вывести весь массив объектов со всеми их свойствами и значениями (по сути передать указатель на массив), подскажите есть ли что-нибудь подобное для передачи в эксперта.
Появилась новая проблема.... Переписал индикатор, теперь есть базовый класс и куча его объектов, все они хранятся в массиве своём, что самое важное индекс элементов массива используется в расчётах, в эксперте.... ну или будет использоваться.
Использовал GlobalVariableSet Но! раньше если мне достаточно было передать значения нескольких переменных, а теперь я хочу на глобальный уровень вывести весь массив объектов со всеми их свойствами и значениями (по сути передать указатель на массив), подскажите есть ли что-нибудь подобное для передачи в эксперта.
У mql-программ нет разделяемой памяти. Все они изолированы друг от друга (в смысле адресного пространства памяти). Кстати, указателей тоже нет, то что условно называется указателями, на самом деле индексы в скрытой от юзера системной таблице реальных указателей (хендлы).
Поэтому вся передача данных между программами строго через контролируемые "официальные" средства ввода вывода:
1. файлы (в том числе map-файлы),
2. пайп-соединения,
3. юзерские события (в рамках EventChartCustom)
bool EventChartCustom( long chart_id, // идентификатор графика-получателя события ushort custom_event_id, // идентификатор события long lparam, // параметр типа long double dparam, // параметр типа double string sparam // строковый параметр события );
4. DLL,
5. Глобальные переменные // только тип double
6. индикаторные буферы // read-only
Так что даже передать объект в типизированной форме готовой к употреблению не выйдет (придётся передавать бинарный блок данных без гарантии правильной интерпретации получателем),
не говоря уже про указатель.
Поэтому лучше оптимизируйте проект с учётом ограничений ввода вывода. Возможно сможете обойтись без разделяемого доступа к одним и тем же объектам.
Если нет - придётся протокол обмена данными создавать самому.
Удачи.
7. Хукохаки )
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет!
Написал простенький индикатор, есть пара ключевых переменных которые мне нужно передать эксперту, какие для этого существуют механизмы? где почитать?