Dienstleistungen. Sind sie schon einsatzbereit? - Seite 24

 
Aliaksandr Hryshyn:
1. Laden von Nachrichten im Hintergrund
2. schwere Berechnungen in mehreren Threads (laufende Kopien des Dienstes), damit sie den Handel nicht beeinträchtigen.
3. Expert Advisor sammelt Informationen aus der Tasse, die der Dienst regelmäßig in ein Zip-Archiv packt.
4. Sammlung aller Handelsinformationen, wenn mehrere Expert Advisors arbeiten, Verarbeitung und Speicherung in der Datenbank oder Versand.
5. ...
Was sind Ihre Möglichkeiten?
1. Wenn das Hochladen in eine Datei erfolgt, dann ja.

2. Sie können.

3. nicht sicher. Akzeptiert der Dienst die Ereignisse des Stapels? Ist dies nicht der Fall, müssen sie aus dem EA entfernt werden, und er verliert seine Bedeutung.

4. Wenn jeder EA seine Berichte einfach in eine Datei schreibt, und der Dienst sie liest und analysiert, dann ja.

Ich denke noch über meine eigenen Varianten nach
 
Roman:

Expert/Script erfordert ein offenes Diagramm.
Die Anzahl der Diagramme ist durch das Terminal begrenzt.
Jedes Rendern/Aktualisieren des Graphen ist eine Systemnachrichten-Warteschlange und eine unnötige Ressourcenbelastung.

Einverstanden.
 
fxsaber:

2-3 kann über ein Skript auf OBJ_CHART implementiert werden.

Der Dienst wird beim Starten des Terminals gestartet, das Skript kann dies nicht tun.
 
Aliaksandr Hryshyn:
Der Dienst wird beim Start des Terminals gestartet, das Skript kann das nicht tun.

Dies ist bei diesen beiden Aufgaben nicht erforderlich.

 
Aliaksandr Hryshyn:
1. Laden von Hintergrundnachrichten
2. Schwere Berechnungen in mehreren Threads (laufende Kopien des Dienstes), damit sie den Handel nicht beeinträchtigen.
3. Expert Advisor sammelt Informationen aus der Tasse, die der Dienst regelmäßig in ein Zip-Archiv packt.
4. Sammlung aller Handelsinformationen, wenn mehrere Expert Advisors arbeiten, Verarbeitung und Speicherung in der Datenbank oder Versand.
5. ...
Was sind Ihre Möglichkeiten?

Für alle diese Aufgaben müssen wir das Problem des Datenaustauschs zwischen einer Gruppe von Expert Advisors und dem Dienst lösen

das Maximum, das ich für den Service vorschlagen kann, ist, auf den Socket zu hören, auf dem die Preise von einem anderen Makler gehen und sie an das benutzerdefinierte Tick-Chart weiterzuleiten, um die Arbitrage zu machen, und auf dem benutzerdefinierten Chart einen Expert Advisor, der durch den TS arbeitet

 
Igor Makanu:

für alle oben genannten Aufgaben muss die Aufgabe des Datenaustauschs zwischen der Beratungsgruppe und der Dienststelle gelöst werden

Vielleicht wird der gemeinsame Speicher für den Datenaustausch zwischen Programmen jetzt von DBs statt von Ressourcen bereitgestellt, was die Implementierung und Interaktion erheblich vereinfachen wird.
 
Sergey Lebedev:
Das Hauptproblem der Dienste ist nicht der Terminal-Handle - es sind alle Randfälle.

Eine automatische Wiederverbindung kann nicht ohne einen Handgriff realisiert werden. Und das ist für den echten Handel sehr wichtig.

 
Option zur Implementierung von OnTick/OnBookEvent für mehrere Währungen in Skripten/Diensten.
//#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.");
}


Ergebnis.

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.
Dateien:
NewData.mqh  2 kb
 
Hallo. Ich wollte einen Dienst nutzen, um einen universellen Nachrichtenversender (Mail, Telegramm mit Screenshots) von allen EAs aus allen Charts zu erstellen. Die Idee war, dass EAs benutzerdefinierte Ereignisse mit Chart, Nachrichtentext und anderen Parametern senden, und der Dienst auf die Ereignisse hört, Screenshots der angegebenen Charts macht und die erforderlichen Nachrichten sendet. Ich habe jedoch gelesen, dass die Dienste keine Ereignisse aus Diagrammen akzeptieren können. Die Lösung besteht also darin, globale Variablen des Terminals zu verwenden? Angenommen, ein globales Array von Strukturen, in denen Graphen Elemente hinzufügen, und der Dienst, wie die Verarbeitung (Senden von Nachrichten), entfernen Sie sie. Was halten Sie von einer solchen Idee? Vielleicht gibt es noch andere Ideen? Ich bin neu bei MQL, ich lese mehr als ich schreibe. Diese Idee entstand, um den Expert Advisor-Thread vom Nachrichtenversand zu entlasten. Könnte auch für das Senden von Nachrichten durch Indikatoren verwendet werden.
 
Реter Konow #:
können Sie alle Ereignisse vom EA über Ressourcen an den Dienst senden. Und jetzt auch über die Datenbank.
Ist es ratsam, sie in eine Datei zu schreiben und sie als Ressourcenvariable in den Dienst einzubinden?