Danke für den Artikel - er war interessant!
Eine solche Frage, wie ist es möglich, Informationen sofort zu bekommen - über die Tatsache der Eröffnung/Änderung einer Position/Auftrag auf jedem Symbol?
Die Notwendigkeit, eine Datenbank der aktuellen und virtuellen Positionen zu erstellen - es ist notwendig für Netting, wenn viele Expert Advisors auf einem Symbol arbeiten.
Oder ist es besser, den Code in jeden EA einzubetten?
Die Notwendigkeit, eine Datenbank der aktuellen und virtuellen Positionen zu erstellen, ist für das Netting notwendig, wenn viele Expert Advisors auf einem Symbol arbeiten.
Oder ist es besser, den Code in jeden EA einzubetten?
Alexey, das wird nicht funktionieren. Schließlich ist der Dienst wie ein Skript, mit dem einzigen Unterschied, dass er gleichzeitig mit dem Start des Terminals gestartet wird....
Starten Sie das Terminal, der Dienst springt heraus, funktioniert und geht auf den Boden....
Natürlich können Sie ihn in einer Endlosschleife laufen lassen, aber wie effektiv das ist, sollten Sie selbst entscheiden....
Alexey, das wird nicht funktionieren. Schließlich ist der Dienst wie ein Skript, mit dem einzigen Unterschied, dass er gleichzeitig mit dem Terminalstart.... gestartet wird.
Starte das Terminal, der Dienst springt heraus, funktioniert und geht auf den Grund....
Natürlich können Sie ihn in einer Endlosschleife laufen lassen, aber wie effektiv das ist, sollten Sie selbst entscheiden....
Auf der einen Seite fehlt OnTrade(), auf der anderen Seite kann es funktionieren, wenn der Dienst einfach die Aufträge zusammenfasst und die erlaubten Operationen in die Datenbank schreibt. Aber auch hier ist die Frage der Synchronisation relevant. Für Strategien, bei denen die Verzögerung nicht kritisch ist und die bei der Öffnung des Balkens arbeiten, scheint dies realistisch zu sein. Ist es möglich, über den Dienst zu handeln? Ich sehe keine Einschränkungen. Dann ist es möglich, Aufträge von Experten zu erhalten, sie zu aggregieren und unabhängig mit einer bestimmten Frequenz zu handeln.
Die Notwendigkeit, eine Datenbank der aktuellen und virtuellen Positionen zu erstellen, ist für Netting notwendig, wenn viele Expert Advisors auf einem Symbol arbeiten.
Oder ist es besser, den Code in jeden EA einzubetten?
Alexey, vielen Dank für Ihre Meinung!
Gute Frage. Hier müssen wir alle Vor- und Nachteile abwägen. Einerseits, wie mein Kollege Alexey Viktorov sagte, sollte der Dienst für eine solche Aufgabe in einer Endlosschleife gestartet werden. Andererseits arbeitet der Dienst im Hintergrund und schreibt/liest aus der Datenbank selbst. Wenn man jedem Roboter die Möglichkeit gibt, mit der Datenbank zu arbeiten, muss man sich darüber im Klaren sein, dass es zu einem Synchronisationskonflikt kommen kann. Etwas wie ein Mutex wird hier wahrscheinlich helfen.
Und EAs können Handelsereignisse sofort verarbeiten, während der Dienst nicht....
Die Notwendigkeit, eine Datenbank der aktuellen und virtuellen Positionen zu erstellen, ist für Netting notwendig, wenn viele Expert Advisors auf einem Symbol arbeiten.
Oder ist es besser, den Code in jeden EA einzubetten?
Jeder Roboter berücksichtigt seine virtuellen Positionen selbst. Im Prinzip weiß er nicht einmal von realen Positionen. Das einzige Problem für MM ist die Lot-Definition, aber ich habe ein festes Lot über Parameter eingestellt. Die einzige Alternative zu einem festen Lot ist, jedem Roboter einen gewissen Prozentsatz des Depots zuzuweisen.
Alexej, ich danke Ihnen für Ihre Meinung!
Das ist eine gute Frage. Hier müssen wir alle Vor- und Nachteile abwägen. Einerseits sollte, wie mein Kollege Alexey Viktorov betonte, der Dienst für eine solche Aufgabe in einer Endlosschleife gestartet werden. Andererseits arbeitet der Dienst im Hintergrund und schreibt/liest aus der Datenbank selbst. Wenn man jedem Roboter die Möglichkeit gibt, mit der Datenbank zu arbeiten, muss man sich darüber im Klaren sein, dass es zu einem Synchronisierungskonflikt kommen kann. Etwas wie ein Mutex würde hier wahrscheinlich helfen.
Und EAs können Handelsereignisse sofort verarbeiten, während der Dienst nicht....
Weiß SQLite nicht, wie man mit Transaktionswarteschlangen arbeitet? Ich habe mich mit diesem Thema nicht beschäftigt, aber Sie haben einen Artikel geschrieben, deshalb frage ich :)
Sie können in jeden Abschnitt der Basis (eine separate Tabelle) schreiben, oder sogar jeder Berater kann seine eigene Basis erstellen, und der Dienst wird die Verfügbarkeit der Basis prüfen und sie mit der Arbeit verbinden.
Natürlich ist das Problem Verzögerungen, aber auf der anderen Seite ist es durch die gespeicherte Verbreitung kompensiert.
In meinem Fall nimmt jeder Roboter seine virtuellen Positionen selbst ein. Im Prinzip kennt er nicht einmal die realen Positionen. Das einzige Problem für MM ist die Definition der Lots, aber ich habe ein festes Lot über Parameter eingestellt. Die einzige Alternative zu einem festen Lot besteht darin, jedem Roboter einen bestimmten Prozentsatz des Depots zuzuweisen.
Ich möchte universell sein, so dass ich Körbe von Expert Advisors mit unterschiedlicher Logik erstellen kann. Wenn ein Expert Advisor in seinem eigenen Saft kocht, dann ja - da ist es etwas einfacher - ich habe es selbst gemacht, aber experimentell - ohne Daten in einer Datei/Datenbank zu speichern.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel MQL5 Kochbuch — Dienste :
Der Artikel beschreibt die vielseitigen Möglichkeiten der Dienste — MQL5-Programme, die nicht an Charts gebunden sind. Ich werde auch die Unterschiede von Diensten zu anderen MQL5-Programmen hervorheben und die Feinheiten der Arbeit des Entwicklers mit Diensten betonen. Als Beispiele werden dem Leser verschiedene Aufgaben angeboten, die ein breites Spektrum an Funktionen abdecken, die als Dienst implementiert werden können.
Stellen wir uns vor, wir stellen uns folgende Aufgabe. Das Terminal sollte die Charts der aktuell gehandelten Symbole anzeigen, d.h. derjenigen, die offene Positionen aufweisen.
Die Regeln für offene Charts sind sehr einfach. Wenn es eine offene Position für eines der Symbole gibt, öffnen wir den Chart dieses Symbols. Wenn es keine Position gibt, gibt es auch keinen Chart. Wenn es mehrere Positionen für ein Symbol gibt, wird nur ein Chart geöffnet.
Außerdem könnten wir ein paar Farben hinzufügen. Wenn die Position im Gewinn ist, wird die Hintergrundfarbe des Charts hellblau sein, und wenn sie im roten Bereich ist, wird sie hellrosa sein. Ist der Gewinn Null, wird die Farbe Lavendel verwendet.
Autor: Denis Kirichenko