Смотри, как бесплатно скачать роботов
Ищи нас в Facebook!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

Interchange - библиотека для MetaTrader 5

Просмотров:
2600
Рейтинг:
(24)
Опубликован:
2015.04.08 12:28
Обновлен:
2016.11.22 07:33
\MQL5\Experts\ \MQL5\Indicators\ \MQL5\Include\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Зачем это нужно:

Этот класс поможет организовать обмен данными между вашими программами в случае если вы пишите для "Маркета" или не хотите использовать системные DLL.

Для других случаев есть более надежные и быстрые способы по связыванию приложений. Обмен реализован посредством простых структур.

Варианты использования:

  1. Необходимо передать данные из эксперта в индикатор или в другого эксперта;
  2. Необходимо сделать индикатор, который выводит информацию в несколько окон (или в главное окно и подокно);
  3. Необходимо для эксперта, внутри которого проводятся все необходимые расчеты, сделать визуализацию рассчитываемых значений.

Как с этим работать:

Привожу пример по передачи данных из эксперта в индикатор.

  1. В эксперте

    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. В индикаторе

    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_StDev AML_StDev

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

X2MA_StDev X2MA_StDev

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

Bezier_StDev Bezier_StDev

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

Ozymandias_StDev Ozymandias_StDev

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