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

 
Aliaksandr Hryshyn:
1. Chargement des nouvelles en arrière-plan
2. les calculs lourds dans plusieurs threads (copies du service en cours d'exécution) afin qu'ils n'affectent pas les échanges.
3. Expert Advisor collecte les informations de la coupe, et le service les regroupe périodiquement dans une archive zip.
4. Collecte de toutes les informations de trading lorsque plusieurs Expert Advisors travaillent, traitement et sauvegarde dans la base de données ou envoi.
5. ...
Quelles sont vos options ?
1. Si le téléchargement se fait vers un fichier, alors oui.

2. Vous pouvez.

3. pas sûr. Le service accepte-t-il les événements de la pile ? Si ce n'est pas le cas, ils doivent être passés de l'EA et celle-ci perd son sens.

4. Si chaque EE écrit simplement ses rapports dans un fichier, et que le service les lit et les analyse, alors oui.

Je suis encore en train de réfléchir à mes propres variantes
 
Roman:

Expert/Script nécessite un graphique ouvert.
Le nombre de graphes est limité par le terminal.
Chaque rendu/mise à jour du graphique est une file d'attente de messages du système et une charge de ressources inutile.

D'accord.
 
fxsaber:

2-3 peut être implémenté via un script sur OBJ_CHART.

Le service est démarré au début du terminal, le script ne peut pas le faire.
 
Aliaksandr Hryshyn:
Le service démarre quand le terminal démarre, le script ne peut pas faire ça.

Cela n'est pas nécessaire dans ces deux tâches.

 
Aliaksandr Hryshyn:
1. Chargement des nouvelles en arrière-plan
2. Calculs lourds dans plusieurs threads (copies du service en cours d'exécution) afin qu'ils n'affectent pas les échanges.
3. Expert Advisor collecte les informations de la coupe, et le service les regroupe périodiquement dans une archive zip.
4. Collecte de toutes les informations de trading lorsque plusieurs Expert Advisors travaillent, traitement et sauvegarde dans la base de données ou envoi.
5. ...
Quelles sont vos options ?

Pour toutes ces tâches, nous devrons résoudre le problème de l'échange de données entre un groupe d'Expert Advisors et le service

Le maximum que je puisse suggérer pour le service est d'écouter le socket sur lequel les prix d'un autre courtier vont aller et de le transmettre au graphique personnalisé en tick afin d'arbitrer, et sur le graphique personnalisé un Expert Advisor travaillant par TS.

 
Igor Makanu:

pour toutes ces tâches, il faudra résoudre la question de l'échange de données entre le groupe consultatif et le service

Peut-être la mémoire partagée pour l'échange de données entre programmes sera-t-elle désormais fournie par les BD plutôt que par les ressources, ce qui simplifiera grandement la mise en œuvre et l'interaction.
 
Sergey Lebedev:
Le principal problème des services n'est pas le Terminal Handle - ce sont tous les cas marginaux.

Un reconnecteur automatique ne peut être réalisé sans une poignée. Et c'est une chose très nécessaire pour le vrai commerce.

 
Option pour implémenter le OnTick/OnBookEvent multi-devises dans les scripts/services.
//#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.");
}


Résultat.

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.
Dossiers :
NewData.mqh  2 kb
 
Bonjour, je voulais utiliser un service pour créer un expéditeur de messages universel (mail, télégramme avec captures d'écran) de tous les EAs de tous les graphiques. L'idée était que les EA envoient des événements personnalisés avec un graphique, un texte de message et d'autres paramètres et que le service écoute les événements, prenne des captures d'écran des graphiques spécifiés et envoie les messages requis. Cependant, j'ai lu que les services ne peuvent pas accepter les événements provenant de graphiques. La solution est donc d'utiliser les variables globales du terminal ? Supposons un tableau global de structures, dans lequel les graphes vont ajouter des éléments, et le service, en tant que traitement (envoi de messages), les supprimer. Que pensez-vous d'une telle idée ? Peut-être y a-t-il d'autres idées ? Je suis nouveau sur MQL, je lis plus que j'écris. Cette idée est apparue afin de libérer le thread EA de l'opération d'envoi du message. On pourrait également l'appliquer à l'envoi de messages par des indicateurs.
 
Реter Konow #:
vous pouvez envoyer tous les événements au service à partir de l'EA via les ressources. Et maintenant, également par le biais de la base de données.
Le conseiller consiste-t-il à l'écrire dans un fichier, et à le connecter comme une variable de ressource dans le service ?