Services. Sont-ils déjà opérationnels ? - page 2

 
Les services doivent être capables de communiquer avec n'importe quel programme sur n'importe quel graphique. Mémoire partagée des programmes.
 
Реter Konow:
Les services doivent être capables de communiquer avec n'importe quel programme sur n'importe quel graphique. Mémoire de programme partagée.
Il existe des ressources par lesquelles les données peuvent être échangées maintenant
 
Renat Fatkhullin:
Il existe des ressources par lesquelles vous pouvez échanger des données maintenant

L'échange de données de type chaîne de caractères est indispensable. Un type universel. Pour n'importe quel usage.

Un seul tableau de chaînes de caractères commun à tous les programmes - solution idéale pour l'échange rapide de toute information, sans OnChartEvent() ni chargement de disque. Tous asynchrones. Écrit dans un programme, lu dans un autre.

 

Les mécanismes d'échange se font attendre depuis longtemps.

Il existe des variables globales pour l'échange de valeurs de chaînes de caractères.

 
Vladimir Pastushak:

Les projets ne sont pas très conviviaux, il n'y a aucun moyen de tout classer dans des dossiers. Et il n'y a aucun moyen de développer du code pour deux plateformes à la fois.

Peut-être que je ne comprends pas quelque chose.

Par exemple, je développe tout par le biais de projets. Il est encore plus pratique d'échanger du code entre MQL4/5. Il va sans dire que j'essaie de tout développer pour les deux plateformes à la fois. À propos, je peux facilement compiler pour 4 dans MQL5, bien que cela puisse parfois causer un problème. Il est donc préférable de les compiler quand même.

P.S. Ce projet est ouvert, vous pouvez vous connecter et jeter un coup d'œil.
 
Renat Fatkhullin:

Nous allons réfléchir à des mécanismes d'échange, il est grand temps.

Il existe des variables globales pour échanger des valeurs de chaîne.

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

Il existe bien une solution proposée par@fxsaber, mais elle n'est pas évidente et vous ne la trouverez pas immédiatement.

 
Mikhail Dovbakh:

Bien qu'il existe une solution de@fxsaber, elle n'est pas évidente et n'est pas immédiatement trouvée.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Bibliothèques : TradeTransactions

fxsaber, 2018.12.17 23:48

Vous pouvez échanger n'importe quoi par le biais des ressources.

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

#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:

Il n'y aura ni OnTimer ni OnTick dans les services. Seulement OnStart.

Il s'agit d'un type de programme spécial pour les processus en boucle en arrière-plan (flux de données, analyses, liens externes, etc.) et non d'un remplacement des experts.


La bêta 1963 est sortie et vous pouvez la mettre à jour via le menu.

Vous êtes un peu le maître Yoda ici, )) J'aimerais savoir de première main ce qu'est OnStart et quelle est la différence entre cette bête et le même OnTick ?

 
Renat Fatkhullin:

Il n'y aura pas de OnTimer ou OnTick dans les services. Seulement OnStart.

Il s'agit d'un type de logiciel spécial pour les processus de bouclage en arrière-plan (flux de données, analyses, liens externes, etc.), qui ne remplace pas les experts.


La bêta 1963 est sortie, vous pouvez la mettre à jour via le menu.

Et quelle est la différence entre les services et les scripts, à part le fait qu'il n'est pas nécessaire d'avoir un programme séparé pour eux ?

 
Renat Fatkhullin:

Il n'y aura pas de OnTimer ou OnTick dans les services. Seulement OnStart.

Il s'agit d'un type spécial de programmes pour les processus en boucle en arrière-plan(flux de données, analyses, liens externes, etc.).

L'absence de modèle d'événement lors du travail avec les flux de données ressemble à une sorte de béquille.

Comme exemple de cette béquille, nous pouvons considérer l'implémentation actuelle des symboles de formule, qui ne sont pas basés sur un modèle d'événement, mais sur une minuterie (boucle). Par conséquent, il y a des sauts de tics.


Plus tôt, il a été question du multisymbole OnTick dans les services. Pourquoi ont-ils abandonné et sabré de bonnes idées comme celle-ci ?