Сервисы. Уже работают? - страница 24

 
Aliaksandr Hryshyn:
1. Фоновая загрузка новостей
2. Тяжёлые расчёты в несколько потоков(запущенных копий сервиса), чтобы они не влияли на торговлю.
3. Советник собирает информацию со стакана, а сервис периодически пакует её в зип-архив.
4. Сбор всей торговой информации при работе множества советников, обработка её и сохранение в базу данных или отправка.
5. ...
Ваши варианты?
1. Если загружать в файл, то да.

2. Можно.

3. Не уверен. Сервис принимает события стакана? Если нет,  их нужно передавать из советника, и теряется смысл.

4. Если каждый советник просто будет писать свои отчёты в файл, а сервис будет его читать и анализировать, то да.

Над своими вариантами пока думаю...
 
Roman:

Эксперт/скрипт требует наличие открытого графика.
Количество графиков, лимитировано терминалом.
Каждая отрисовка/обновление графика, это системная очередь сообщений и лишняя нагрузка ресурсов.

Согласен.
 
fxsaber:

2-3 можно реализовать через скрипт на OBJ_CHART.

Сервис запускается при старте терминала, скрипт так не может.
 
Aliaksandr Hryshyn:
Сервис запускается при старте терминала, скрипт так не может.

В этих двух задачах это не требуется.

 
Aliaksandr Hryshyn:
1. Фоновая загрузка новостей
2. Тяжёлые расчёты в несколько потоков(запущенных копий сервиса), чтобы они не влияли на торговлю.
3. Советник собирает информацию со стакана, а сервис периодически пакует её в зип-архив.
4. Сбор всей торговой информации при работе множества советников, обработка её и сохранение в базу данных или отправка.
5. ...
Ваши варианты?

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

максимум, что могу предложить для сервиса, это слушать сокет по которому будут идти цены от другого брокера и пробрасывать на кастомный чарт тик, чтобы арбитражем заниматься,а на кастомном чарте советник работающий по ТС

 
Igor Makanu:

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

Возможно, теперь общую память для обмена данными между программами будут предоставлять БД, а не ресурсы, что значительно упростит реализацию и взаимодействие.
 
Sergey Lebedev:
Основная проблема Сервисов все же не в Хендле Терминала - это все маржинальные случаи применения.

Автоматический реконнектер не реализовать без Хендла. А штука для реальной торговли очень нужная.

 
Вариант реализации мультивалютных OnTick/OnBookEvent в скриптах/сервисах.
//#property service

#include <NewData.mqh> // https://c.mql5.com/3/354/NewData.mqh

// Script/Service main function.
void OnStart()
{
  const string Symbols[] = {"EURUSD", "GBPUSD"};
  
  NEWDATA<TICK> Ticks(Symbols);
  NEWDATA<BOOKS> Books(Symbols);

  while (!IsStopped())
  {
    Ticks.Refresh();
    Books.Refresh();
        
    Sleep(50);
  }
}

void OnTick( const string &Symb )
{
  MqlTick Tick;
  
  if (SymbolInfoTick(Symb, Tick))  
    Print(Symb + " - new tick: " + (string)Tick.time);
}

void OnBookEvent( const string &Symb )
{
  MqlBookInfo Books[];

  if (MarketBookGet(Symb, Books))  
    Print(Symb + " - new book: " + (string)ArraySize(Books) + " bands.");
}


Результат.

2021.04.26 11:18:38.527 EURUSD - new tick: 2021.04.26 11:18:39
2021.04.26 11:18:38.527 EURUSD - new book: 14 bands.
2021.04.26 11:18:38.904 GBPUSD - new tick: 2021.04.26 11:18:39
2021.04.26 11:18:38.904 GBPUSD - new book: 16 bands.
2021.04.26 11:18:38.965 GBPUSD - new tick: 2021.04.26 11:18:39
2021.04.26 11:18:38.965 GBPUSD - new book: 16 bands.
2021.04.26 11:18:39.029 EURUSD - new tick: 2021.04.26 11:18:39
2021.04.26 11:18:39.029 EURUSD - new book: 14 bands.
2021.04.26 11:18:39.091 GBPUSD - new tick: 2021.04.26 11:18:39
2021.04.26 11:18:39.091 GBPUSD - new book: 15 bands.
2021.04.26 11:18:39.278 GBPUSD - new tick: 2021.04.26 11:18:40
2021.04.26 11:18:39.278 GBPUSD - new book: 16 bands.
2021.04.26 11:18:39.465 GBPUSD - new tick: 2021.04.26 11:18:40
2021.04.26 11:18:39.465 GBPUSD - new book: 16 bands.
2021.04.26 11:18:39.714 GBPUSD - new tick: 2021.04.26 11:18:40
2021.04.26 11:18:39.715 GBPUSD - new book: 16 bands.
2021.04.26 11:18:40.589 GBPUSD - new tick: 2021.04.26 11:18:41
2021.04.26 11:18:40.589 GBPUSD - new book: 16 bands.
Файлы:
NewData.mqh  2 kb
 
Здравствуйте. Хотел использовать сервис для создания универсального отправителя сообщений (почта, телеграм со скриншотами) от всех советников со всех графиков. Идея была такая, что советники будут отправлять пользовательские события с указанием графика, текстом сообщения и другими параметрами, а сервис будет слушать события, делать скриншоты указанных графиков и отправлять нужные сообщения. Однако, вычитал, что сервисы не могут принимать события от графиков. Получается, выход - это использование глобальных переменных терминала? Допустим, глобальный массив структур, в который графики будут добавлять элементы, а сервис, по мере обработки (отправки сообщений) удалять. Что скажете на такую идею? Может есть другие мысли? Я именно в MQL новичок, сейчас больше читаю, чем пишу. Эта идея возникла для того, чтобы освободить поток советника от работы по отправке сообщений. Также, можно применить для отправки сообщений индикаторами.
 
Реter Konow #:
можете все события передавать в сервис из советника через ресурсы. А теперь, еще и через базу данных. 
Через ресурсы - это советником писать в файл, а в сервисе подключать его как ресурсную переменную? 
Причина обращения: