Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 2756
- Рейтинг:
- Опубликован:
- 2015.04.08 12:28
- Обновлен:
- 2016.11.22 07:33
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Зачем это нужно:
Этот класс поможет организовать обмен данными между вашими программами в случае если вы пишите для "Маркета" или не хотите использовать системные DLL.
Для других случаев есть более надежные и быстрые способы по связыванию приложений. Обмен реализован посредством простых структур.
Варианты использования:
- Необходимо передать данные из эксперта в индикатор или в другого эксперта;
- Необходимо сделать индикатор, который выводит информацию в несколько окон (или в главное окно и подокно);
- Необходимо для эксперта, внутри которого проводятся все необходимые расчеты, сделать визуализацию рассчитываемых значений.
Как с этим работать:
Привожу пример по передачи данных из эксперта в индикатор.
- В эксперте
1.1. Создаем экземпляр класса:
CInterchange Exp_buffer;
1.2. В OnInit() задаем перфикс имени глобальных переменных. Чтобы не было конфликта с другими экземплярами класса - для каждого нужно задавать уникальное имя:
Exp_buffer.SetPrefixNameForSave(_Symbol+"_"+(string)_Period);
1.3. Работа алгоритма реализована через пользовательские события. Необходимо просто добавить строку ниже в обработчик OnChartEvent():
Exp_buffer.OnEvent(id,lparam,dparam,sparam);
Если данные для передачи готовы (в примере это структура Exp_Data) - то нужно вызвать метод:
Exp_buffer.SendDataStart(Exp_Data);
1.4. Не забываем уничтожать экземпляр класса при деинициализации программы:Exp_buffer.Destroy();
- В индикаторе
2.1. Создаем экземпляр класса:
CInterchange Ind_buffer;
2.2. В OnInit() задаем перфикс имени глобальных переменных. Он должен совпадать с источником - быть таким же как в пункте 1.1.
Ind_buffer.SetPrefixNameForLoad(_Symbol+"_"+(string)_Period);
2.3. Для начала процесса получения данных необходимо вызвать метод GetDataStart() с параметром Ind_data (структура, куда будет производится запись данных из эксперта):
Ind_buffer.GetDataStart(Ind_data);
2.4. Работа алгоритма реализована через пользовательские события. Необходимо добавить строку ниже в обработчик OnChartEvent():
Ind_buffer.OnEvent(id,lparam,dparam,sparam);
Если процесс передачи завершен - метод:
Ind_buffer.GetDataFinish(Ind_data)
вернет true.
2.5. Не забываем уничтожать экземпляр класса при деинициализации программы:
Ind_buffer.Destroy();
Видео с примером работы:

Индикатор AML с дополнительной индикацией силы тренда цветными точками на основе алгоритма стандартного отклонения.

Индикатор X2MA с дополнительной индикацией силы тренда цветными точками на основе алгоритма стандартного отклонения.

Индикатор Bezier с дополнительной индикацией силы тренда цветными точками на основе алгоритма стандартного отклонения.

Индикатор Ozymandias с дополнительной индикацией силы тренда цветными точками на основе алгоритма стандартного отклонения.