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

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

Просмотров:
2425
Рейтинг:
(11)
Опубликован:
2020.04.19 13:12
Обновлен:
2024.03.16 06:36
\MQL5\Include\fxsaber\Event_Message\ \MQL5\Experts\ \MQL5\Scripts\
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

ChartEvent-события содержат информацию в виде string-переменной длинной до 63-х символов.


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


Пример со строкой.


Отправка.

// Пример отправки строки любой длины через ChartEvent-механизм.

#include <fxsaber\Event_Message\Event_Message.mqh> // Отправка/получение информации через ChartEvent-события
#include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280

bool Send( const string Str )
{
  long chartID = 0;

  _W(chartID) = GlobalVariableGet("Event_Message"); // Получили ChartID-чарта, где запущен приемник.

  return(chartID && EVENT_MESSAGE::Send(Str, chartID)); // Удалось ли успешно отправить?
}

void OnStart()
{
  string Str = "1234567890"; // Строка любой длины.

  for (int i = 0; i < 10; i++)
    if (!Send(Str)) // Отправили строку.
      Print("Error send!");

  Print("Sended: " + EVENT_MESSAGE::StatSended()); // Статистика отправленных сообщений.
}

Получение.

// Пример приема строки любой длины через ChartEvent-механизм.

#include <fxsaber\Event_Message\Event_Message.mqh> // Отправка/получение информации через ChartEvent-события
#include <TypeToBytes.mqh> // https://www.mql5.com/ru/code/16280

#define GLOBALNAME "Event_Message" // Название глобальной переменной, где будем хранить ChartID

int OnInit()
{
  double chartID = 0;

  _W(chartID) = ChartID();

  return(!GlobalVariableSet(GLOBALNAME, chartID)); // Сохранили свой ChartID.
}

void OnDeinit( const int )
{
  GlobalVariableDel(GLOBALNAME);
}

void OnChartEvent(const int id,const long& lparam,const double& dparam,const string& sparam)
{
  if (id == CHARTEVENT_CLICK)                            // По щелчку мыши
    Print("Received: " + EVENT_MESSAGE::StatReceived()); // показываем статистику принятых сообщений.

  if (EVENT_MESSAGE::OnChartEvent(id, lparam, dparam, sparam)) // Если переданная строка полностью пришла,
    Print(EVENT_MESSAGE::Receive(lparam));                     // распечатываем ее.
}


Пример с массивом.


Отправка.

// Пример отправки массива тиков через ChartEvent.

#include <fxsaber\HistoryTicks\Data_String.mqh> // https://www.mql5.com/ru/code/20298
#include <fxsaber\Event_Message\Event_Message.mqh> // Отправка/получение информации через ChartEvent-события

void OnStart()
{  
  MqlTick Ticks[];
  
  if (CopyTicks(_Symbol, Ticks, COPY_TICKS_ALL, 0, 10) > 0) // Заполнили массив тиков
    Send(DATA_STRING::ToString(Ticks));                     // и отправили его
}


Получение.

// Пример приема массива тиков через ChartEvent.

#include <fxsaber\HistoryTicks\Data_String.mqh> // https://www.mql5.com/ru/code/20298
#include <fxsaber\Event_Message\Event_Message.mqh> // Отправка/получение информации через ChartEvent-события

void OnChartEvent(const int id,const long& lparam,const double& dparam,const string& sparam)
{
  if (EVENT_MESSAGE::OnChartEvent(id, lparam, dparam, sparam)) // Если переданная информация полностью пришла.
  {
    MqlTick Ticks[];
    
    DATA_STRING::FromString(EVENT_MESSAGE::Receive(lparam), Ticks); // Преобразовали информацию в массив    
    ArrayPrint(Ticks);                                              // и распечатали его.
  }
}


Сценарии использования.

  • Обмен информацией. Например, написание асинхронных торговых приказов в MT4.
  • Взаимодействие с Маркет-продуктами, работающими через сторонние Web-API: криптобиржы, мессенджеры и т.д.


Особенности.

  • Библиотека кроссплатформенная - MT4/5.
  • Не нарушается работа, если идет одновременная отправка сообщений из нескольких параллельно запущенных MQL-программ.


Dual Candlestick Strategy EA Dual Candlestick Strategy EA

Торговая стратегия по мотивам ветки https://www.mql5.com/en/forum/337446 Работа отложенными Stop ордерами

AlliHeik 2 AlliHeik 2

Торговля по индикатору индикатор Heiken Ashi Smoothed Oscillator. Развитие первой версии

Two_Symbols_iRSI_EA Two_Symbols_iRSI_EA

Мультисимвольная торговая система. Описание берёт в теме https://www.mql5.com/ru/forum/233860/15876097#comment_15876097

PowerLine (Сила котировок) PowerLine (Сила котировок)

Берем котировку и подсчитываем сколько раз цена(бары) пересекала её. На основе полученных данных строим вертикальную гистограмму.