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

 
Нужно чтобы сервисы могли взаимодействовать с любой программой на любом графике. Общая память программ.
 
Реter Konow:
Нужно чтобы сервисы могли взаимодействовать с любой программой на любом графике. Общая память программ.
Есть ресурсы, через них можно обмен данными сейчас организовать
 
Renat Fatkhullin:
Есть ресурсы, через них можно обмен данными сейчас организовать

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

Один общий массив string для всех программ, - идеальное решение для быстрого обмена любой информацией, без нагрузки OnChartEvent() или диска. Все асинхронно. Записали в одной программе, в другой прочитали. 

 

Механизмы обмена продумаем, давно пора.

Для обмена строковыми значениями есть глобальные переменные.

 
Vladimir Pastushak:

Проекты крайне не удобны, нет возможности сортировать все по папкам. И нет возможности вести разработку кода сразу для двух платформ.

Может я конечно чего то не понимаю..

Я например все разрабатываю через проекты. Удобней обмениваться даже между MQL4/5. И само собой сейчас изначально все стараюсь писать сразу на обе платформы. И кстати в MQL5 спокойно можно компилировать под 4-ку, правда иногда можно получить глюк. Так что с компиляцией лучше все равно разносить.

P.S. Этот проект открытый, можно подключиться посмотреть.
 
Renat Fatkhullin:

Механизмы обмена продумаем, давно пора.

Для обмена строковыми значениями есть глобальные переменные.

datetime  GlobalVariableSet( 
   string  name,      // имя 
   double  value      // устанавлимое значение 
   );

Хотя есть решение от @fxsaber но оно не очевидно и не сразу найдешь.

 
Mikhail Dovbakh:

Хотя есть решение от @fxsaber но оно не очевидно и не сразу найдешь.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: TradeTransactions

fxsaber, 2018.12.17 23:48

Можно обмениваться чем угодно через Ресурсы.

// Пример обмена любыми данными (включая строковые массивы).

#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166

#define PRINT(A) Print(#A + " = " + (string)(A));

void OnStart()
{    
  // Произвольные данные для примера
  string Str[] = {"123", "Hello World!"};
  double Num = 5;
  MqlTick Tick = {0};
  Tick.bid = 1.23456;

  const RESOURCEDATA<uint> Resource; // Ресурс для обмена данными
  CONTAINER<uint> Container;         // Создаем контейнер - все будет храниться в массиве простого типа (в примере выбран uint)
  
  // Заполняем контейнер разными данными
  Container[0] = Str;
  Container[1] = Num;
  Container[2] = Tick;
    
  // Распечатаем типы хранимых в контейнере данных
  for (int i = 0; i < Container.GetAmount(); i++)
    PRINT(Container[i].GetType())

  Resource = Container.Data;  // Отправили данные на обмен
  
  CONTAINER<uint> Container2; // Сюда будем получать данные
  
  Resource.Get(Container2.Data); // Получили данные
      
  // Получим данные в исходном виде
  string Str2[];
  Container[0].Get(Str2);                // Получили массив
  ArrayPrint(Str2);

  PRINT(Container[1].Get<double>())      // Получили число
  PRINT(Container[2].Get<MqlTick>().bid) // Получили структуру  
}

 
Renat Fatkhullin:

Ни OnTimer, ни OnTick в сервисах не будет. Только OnStart.

Это специальный тип программ для фоновых зацикленных процессов (датафиды, аналитика, внешние связи и тд), а не замена экспертов.


Вышла бета 1963, можно обновиться через меню.

Вы здесь типа мастера Йода, )) хотелось бы узнать из первых рук что такое OnStart и в чем отличие этого зверя от того же OnTick ?

 
Renat Fatkhullin:

Ни OnTimer, ни OnTick в сервисах не будет. Только OnStart.

Это специальный тип программ для фоновых зацикленных процессов (датафиды, аналитика, внешние связи и тд), а не замена экспертов.


Вышла бета 1963, можно обновиться через меню.

А в чем отличие Сервисов от Скриптов, кроме того, что под них не нужен отдельный график?

 
Renat Fatkhullin:

Ни OnTimer, ни OnTick в сервисах не будет. Только OnStart.

Это специальный тип программ для фоновых зацикленных процессов (датафиды, аналитика, внешние связи и тд)

Отсутствие событийной модели при работе с датафидами выглядит, как тот еще костыль.

Как пример такого костыля, можно рассматривать текущую реализацию формульных символов - основаны не на событийной модели, а на таймере (цикле). Отсюда пропуски тиков.


Ранее говорилось про мультисимвольный OnTick в Сервисах. Почему отказались и так порезали хорошие идеи?

Причина обращения: