Expert Advisors: MQL5 Programming for Traders – Quellcodes aus dem Buch. Teil 7 - Seite 4

 
wf2000cn #:

Hallo @Stanislav Korotky, ich bin neu in der MQL5. Finden Sie, dass Sie eine wss.zip-Datei für Websocket verwenden zu posten. Wie man es verwendet, gibt es eine Demo oder etwas, das ich lernen kann. Ich danke Ihnen herzlich!

Sie können mehrere Beispiele im Algotrading-Buch finden, in dem Abschnitt, der (Schritt für Schritt) die Implementierung eines Webservice-Projekts zum Kopieren von Trades und Signalen beschreibt.

MQL5 Book: Advanced language tools / Projects / Project plan of a web service for copying trades and signals
MQL5 Book: Advanced language tools / Projects / Project plan of a web service for copying trades and signals
  • www.mql5.com
As an end-to-end demonstration project, which we will develop throughout this chapter, we will take a simple, but at the same time quite...
 
Stanislav Korotky #:

Sie können mehrere Beispiele im Algotrading-Buch finden, im Abschnitt, der (Schritt für Schritt) die Implementierung eines Web-Service-Projekts zum Kopieren von Trades und Signalen beschreibt.

Ok, ich werde es zuerst lernen. Ich danke Ihnen herzlich!
 

Hallo @StanislavKorotky

Ich versuche, eine teilweise Positionsschließung mit einer Pending Order in der entgegengesetzten Richtung zu implementieren.

z.B.:

  • Wenn ich eine offene Kaufposition auf XAUUSD mit 2 Lots Größe habe
  • eröffne ich einen schwebenden Verkaufsauftrag für XAUUSD mit einer Größe von 1 Lot
  • innerhalb des OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD (transaction.type) Ereignisses, habe ich

MqlTradeRequestSync reqs(transaction.symbol);

reqs.closeby(target_position_ticket_id, transaction.order);

Ich glaube, dass die obige Zeile in der Lage sein sollte, die Aufgabe zu erledigen, aber meine Herausforderung ist, wie man die "target_position_ticket_id"innerhalb des OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD ( transaction.type) Event-Handlers erhältoder irgendwie die schwebende Order mit der target_position_ticket_id verknüpft, die geschlossen werden soll, wenn die schwebende Order ausgeführt wird.

Ich habe versucht, die "target_position_ticket_id"zum Kommentar der schwebenden Order hinzuzufügen, wenn ich die schwebende Order erstelle, aber das Problem ist, dass ich innerhalb von OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD (transaction.type) nicht auf den Kommentar zugreifen kann, da
dieMqlTradeTransaction-Attribute nicht über "comment" verfügen.

Ich bitte um Ihre Hilfe

 
pauldic MqlTradeTransaction-Attribute keinen "comment" haben.

Die closeby(ticket1, ticket2) Methode aus dem Buch setzt voraus, dass Sie ein Hedging-Konto verwenden und bereits 2 offene Positionen (Kauf und Verkauf) mit den Tickets ticket1 und ticket2 haben. Ich nehme an, dass es (im Allgemeinen) nicht möglich ist, die Aktion TRADE_ACTION_CLOSE_BY gegen eine schwebende Order durchzuführen. Aber wenn Ihr Konto im Netting-Modus ist, denke ich, dass Sie einfach eine Pending-Order in die entgegengesetzte Richtung platzieren können, und wenn sie ausgelöst wird, wird sie die bestehende Position entsprechend ändern - d.h. sie schließen, oder teilweise schließen, oder sogar invertieren (wenn das neue Volumen größer ist als das alte).

 
Kleine Patches in Websockets (a la carte & en masse).
Dateien:
wsprotocol.mqh  17 kb
wss.zip  16 kb
 
Stanislav Korotky #:
Kleine Patches in Websockets (a la carte & en masse).
@StanislavKorotky Vielen Dank für die kontinuierliche Aktualisierung, bitte gibt es etwas, das ich gekämpft habe, um herauszufinden. Auf dem MT5 "Market Watch" kann ich mit der rechten Maustaste auf ein beliebiges "Symbol" klicken und alle zugehörigen Eigenschaften anzeigen, genauso wie ich es programmatisch tun würde, indem ich auf "Specification" klicke.

Eine dieser Eigenschaften sind die "Commissions" des Symbols, die sich offensichtlich von den Brokern unterscheiden, wie auf dem beigefügten Bild zu sehen ist. Ich war jedoch nicht in der Lage, programmatisch auf diese Eigenschaft zuzugreifen. Können Sie mir einen Hinweis geben, wie ich die Provision des Symbols abrufen kann?


Nebenbei bemerkt erscheint diese Meldung oft im Log, wenn ich mit PositionFilter arbeite, besonders wenn der EA das erste Mal geladen oder neu kompiliert wird: "Unresolved int value as enum: 8 for MonitorInterface<ENUM_POSITION_PROPERTY_INTEGER,ENUM_POSITION_PROPERTY_DOUBLE,ENUM_POSITION_PROPERTY_STRING>". Es funktioniert immer noch gut und hält nichts auf.
 
pauldic #:
@StanislavKorotky Vielen Dank für die kontinuierliche Aktualisierung, bitte gibt es etwas, das ich gekämpft habe, um herauszufinden. Auf dem MT5 "Market Watch" kann ich mit der rechten Maustaste auf ein beliebiges "Symbol" klicken und alle zugehörigen Eigenschaften anzeigen, genauso wie ich es programmatisch tun würde, indem ich auf "Specification" klicke.

Eine dieser Eigenschaften ist die "Commissions" des Symbols, die sich offensichtlich von den Brokern unterscheidet, wie auf dem beigefügten Bild zu sehen ist. Ich war jedoch nicht in der Lage, programmatisch auf diese Eigenschaft zuzugreifen. Können Sie mir einen Hinweis geben, wie ich die Provision des Symbols abrufen kann?

Leider sind nicht alle Eigenschaften der Entitäten des Terminals über MQL5 zugänglich.

pauldic #:
Nebenbei bemerkt erscheint diese Meldung oft im Log, wenn ich mit PositionFilter arbeite, besonders wenn der EA das erste Mal geladen oder neu kompiliert wird "Unresolved int value as enum: 8 for MonitorInterface<ENUM_POSITION_PROPERTY_INTEGER,ENUM_POSITION_PROPERTY_DOUBLE,ENUM_POSITION_PROPERTY_STRING>". Es funktioniert immer noch einwandfrei und hält nichts an.

Dies ist nur eine Warnung, die durch die Tatsache verursacht wird, dass die entsprechende eingebaute Aufzählung von MQL5 eine Lücke in den Konstanten hat, die normalerweise aufeinanderfolgend zugewiesen werden. Diese Lücke entsteht, weil sich MQL5 ständig ändert und einige Konstanten veraltet sein können und dann eliminiert werden. Sie können den Quellcode bearbeiten, um solche Warnungen zu vermeiden.

 

Ich füge eine aktualisierte Version der JSON-Bibliothek bei - toyjson3.mqh - ein Ersatz für toyjson2.mqh und toyjson.mqh aus dem Buch.

Diese Version ist für die Verarbeitung großer json-Dateien optimiert. Der Einfachheit halber verwenden die vorherigen Versionen die Funktion StringSplit für die Text-Tokenisierung während des Parsens, und dieser Aufruf kann intern Gigabytes an freiem Speicher durch Fragmentierung und Antizipation des weiteren Datenflusses anfordern. Er wird nach dem Parsen freigegeben, aber der MQL5-Speichermanager kann ihn für eine Weile reserviert halten, weil er den Speicher zeitversetzt freigibt.

Jetzt wird während des Parsens ein paar Mal weniger Speicher benötigt.

Dateien:
toyjson3.mqh  39 kb
 
Hier ist ein weiterer kleiner Bugfix in ToyJson3.mqh - Fließkommazahlen mit Exponent (wissenschaftliche Schreibweise, z.B. "1e-8") werden nun beim Parsen korrekt erkannt.
Dateien:
toyjson3.mqh  39 kb
 
Stanislav Korotky #:
Ich füge einige Bugfixes und Verbesserungen in den Websockets-Klassen bei.

Das ist genau das, was ich brauchte.

Ich danke Ihnen vielmals.

Du fühlst dich wie dieser Typ für mich.

https://clip.cafe/top-gun-maverick-2022/good-afternoon-ladies-gentlemen-s2/

Watch 'Good afternoon, ladies and gentleman, this is your savior speaking. Please fasten your...' | Top Gun: Maverick Clip
Watch 'Good afternoon, ladies and gentleman, this is your savior speaking. Please fasten your...' | Top Gun: Maverick Clip
  • clip.cafe
Watch the clip 'Good afternoon, ladies and gentleman, this is your savior speaking. Please fasten your...' from the movie Top Gun: Maverick on Clip.Cafe. Lt. Jake 'Hangman' Seresin: [after destroying the plane that almost killed Maverick and Rooster] Good afternoon, ladies and gentleman, this is your savior speaking. Please fasten your seat belts, return the tray tables to their locked an upright positions and prepare for landing. Bradley 'Rooster' ...