Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Schauen Sie sich die Uhrzeit des Protokolls an. Dies alles geschah in einer MS, und daneben (in derselben MS) eine Reihe von OnBooks.
Sie können alle Ereignisse mit Zählern zählen, aber auch visuell können Sie sehen, dass es mehr OnBooks gibt.
Haben Sie nicht geschrieben, dass Sie Async-Aufträge verwenden?
Ich frage mich, welchen Algorithmus Sie verwenden, um die Ausführung von Geschäften zu kontrollieren?
Andrew, die Zahlen dort sind feste Mikrosekunden, wenn OnFunctions ausgelöst werden, und alles wird dann zusammen aus dem Array gedruckt. Die Gesamtzahl der OnBooks könnte höher sein - ich werde nachzählen, aber es ist unklar, warum sie in der Warteschlange vor den OnTicks stehen oder was. Oder entspricht nicht jeder OnTick einem OnBook?
willkommen in der Welt der Vernetzung ))))
Am einfachsten ist es, wenn SieNetstat - a -b unter dem Administrator ausführen.
Sie werden Ports und Software sehen, ich will mich nicht damit aufhalten, aber ich denke, dass der MT5-Server asynchron Pakete mit verschiedenen Informationen weiterleitet, die das Terminal in die benötigten "Regale" legt.
HH: Kennen Sie Print() und das Überspringen von Ausdrucken, wenn Sie viele davon auf einmal ausgeben? - Schreiben Sie einfach Ihre Informationen in die Datei - auf diese Weise speichern Sie alles und in der richtigen Reihenfolge, aber vergessen Sie nicht, die Datei vor dem Schließen zu schließen. In der Theorie und Print() in den Protokollen in der Datei sollte vollständig sein, aber nicht überprüft haben und im Allgemeinen ich nicht vertrauen, wenn eine Menge von Daten ausgegeben. Diskutiert hierhttps://www.mql5.com/ru/forum/329730, sehr oft werden "fehlende Drucke" diskutiert ))) - Suche
Andrew, die Zahlen sind feste Mikrosekunden, wenn OnFunctions ausgelöst werden, und werden dann alle zusammen aus dem Array gedruckt. Vielleicht gibt es insgesamt mehr OnBooks - ich werde sie zählen, aber es ist unklar, warum sie in der Warteschlange vor den OnTicks übersprungen werden. Oder entspricht nicht jeder OnTick einem OnBook?
Ich hab's.
Nun, es gibt sowieso eine Menge OnBooks. Es ist schwer, aus einem solchen Protokoll irgendwelche Schlüsse zu ziehen.
Ich dachte, Sie hätten geschrieben, dass Sie Async-Aufträge verwenden?
Ich habe mich gefragt, welchen Algorithmus Sie zur Kontrolle der Handelsausführung verwenden.
In OnTradeTransaction()+ Funktion prüfen, wenn für längere Zeit keine Serverantwort erfolgt.
Im Allgemeinen durch Magie.
Ich reserviere 65535 magische Symbole für jedes Symbol, wenn ich einen EA einstelle,
und wenn ich einen Auftrag abschicke, weise ich ihm eine eindeutige magische Nummer zu, die sich in keiner Weise mit anderen Symbolen überschneidet.
das sich in keiner Weise mit anderen Instrumenten überschneidet.
So lege ich die anfängliche magische Zahl für ein Symbol fest
Magic - ulong (8 Bytes) z.B.
GAZR-3.12
Byte[7] (hohes Byte) ist "G".
Byte[6] ist "A"
Byte[5] für "Z"
Byte[4] ist "R
Byte[3] ist "3
Byte[2] ist "12".
Byte[1] und Byte[0] sind magische Reserven (65535)
So gehe ich durch die Zaubereien, wenn ich eine Bestellung abschicke:
Dies funktioniert jedoch nur für FORTS, da die Symbolnamen standardisiert sind!
Hinzugefügt
Wenn der Auftrag erfolgreich gesendet wurde, dann
sich an die Zeit erinnern
Und dann (wenn es keine Antwort in OnTradeTransaction gibt)
Und dann die FunktionFindOrderBuyMagic selbst
Hinzugefügt von
"Gute Idee", die EA-Kennung(0-255) an das 1. Byte in der Automagic anzuhängen,
aber ich brauche es noch nicht, also habe ich es nicht getan :)
In OnTradeTransaction()+ Funktion prüfen, wenn für längere Zeit keine Serverantwort erfolgt.
Danke für den Hinweis.
1. Das zweite und die folgenden Terminals beim Broker sind umlagefinanziert, und ich habe keine Strategien, bei denen ich nur mit Aktien(Aktienportfolios) handle.
2. Wenn Sie den akkumuliertenGetMicrosecondCount() ausgeben wollen, dann
tun Sie es ohne Timer in OnDeinit(), wenn EA beendet wird, wird alles gedruckt.
Bitte senden Sie mir den Link zum Broker, es ist im LC möglich.
Es ist ein interessanter Zweig... :-)
willkommen in der Welt der Vernetzung ))))
Am einfachsten ist es, wenn SieNetstat - a -b unter dem Administrator ausführen.
Sie werden Ports und Software sehen, ich will mich nicht damit aufhalten, aber ich denke, dass der MT5-Server asynchron Pakete mit verschiedenen Informationen weitergibt, die das Terminal in die benötigten "Regale" legt.
SZZY: Wissen Sie etwas über Print() und das Überspringen von Ausdrucken, wenn Sie viele davon auf einmal drucken? - Schreiben Sie einfach Ihre Informationen in die Datei - auf diese Weise speichern Sie alles und in der richtigen Reihenfolge, aber vergessen Sie nicht, die Datei zu schließen, bevor Sie sie schließen. In der Theorie und Print() in den Protokollen in der Datei sollte vollständig sein, aber nicht überprüft haben und im Allgemeinen ich nicht vertrauen, wenn eine Menge von Daten ausgegeben. Diskutiert hierhttps://www.mql5.com/ru/forum/329730, sehr oft werden "fehlende Drucke" diskutiert ))) - Suche
Igor, der Verlust von Ausdrucken wird von denjenigen, die die Protokolldatei nicht geöffnet haben, hundertmal diskutiert, und Rinat Fatkullin selbst schrieb, dass in der Protokolldatei nichts verloren geht. Aber für Ihren Beitrag war nicht vergeblich :) Ich habe die Ausgabe in einer separaten Datei hinzugefügt, außerdem habe ich die zweite Datei, wo ich ein wenig anders (Sammeln aller Ereignisse in CArrayObj), um mögliche Fehler meines Designs zu umgehen, die zwei Arrays bestellt, d.h. ich habe alles in CArrayObj aus zwei Arrays, dann sortieren nach Mikrosekunden und Ausgabe mit Kennzeichnung, welches Ereignis Tick oder Buch.
Und ja, was hat das mit Häfen zu tun, was hat das damit zu tun? Ich teste gerade die EA-Ereigniswarteschlange. Wenn ein Tick kam, sollten zwei Ereignisse gebildet werden - OnTick, und entsprechende OnBook, und OnBook ist immer in der Warteschlange platziert, und OnTick kann verschwinden, wenn es bereits OnTick in der Warteschlange (wie in Handbuch), dh . die Situation, wenn einer nach dem anderen OnTick ohne OnTick kann nur sein, wenn 1. die OnTicks gehen "ohne Warteschlange" 2. gibt es eine Systemverzögerung von OnBook, das ist, was ich überprüfen möchte, kann dies die Verzögerung von Sekunden, die zuvor von Kollegen identifiziert erklären. Insgesamt OnBooks sind 2+ mal mehr in einem Tag, aber warum sind sie verzögert? Wenn diese Verzögerung ist aufgrund von asynchronen Paketen und Parsing, vielleicht, aber bisher habe ich nur die Tatsache, ihr Einkommen in der EA überprüfen. Ich habe noch nicht darüber nachgedacht, wie ich den Rest der Nuancen bei der Prüfung berücksichtigen kann.
Hier ist der neue Code, beim Öffnen werde ich die Korrektheit der Arbeit testen und für den Tag laufen lassen.
s.w. Der Grund kann auch sein: wenn Tick zu den gleichen Preisen weitergegeben, ohne die Tasse zu ändern - OnBook wird nicht gebildet? Ich bin kein Spezialist in Aktienhandel, wer kann mir sagen. Ich dachte, OnTick verursacht immer OnBook.
Aber ich frage mich, ob der Verantwortliche mit den Antworten auf seine Frage zufrieden ist.
Ich habe bereits alle Antworten erhalten und meine eigenen Schlussfolgerungen gezogen.
Ich muss den Streifen von Geschäften für einen bestimmten Zeitraum analysieren - Preise von Geschäften, realisierte Volumina, etc.
Und ich muss auch die Funktionsweise des Algorithmus im Strategietester simulieren.
Das OnTick-Ereignis kommt damit perfekt zurecht, die Ergebnisse des realen Handels und die Ergebnisse der Modellierung im Tester stimmen mit einem kleinen Fehler zu meiner Zufriedenheit überein.
Wenn Sie eine schnellere Analyse des Streifens benötigen, können Sie OnTimer verwenden.
Und es ist nicht notwendig, dass jeder Tick, der am Terminal ankommt, im OnBook platziert wird - dies ist die Besonderheit der Ausführung von Marktaufträgen.
Und jeder Tick, der am Terminal eingeht, muss nicht zwangsläufig ins OnBook gehen - das sind die Besonderheiten der Ausführung von Marktaufträgen.
Im Gegenteil, jeder Tick(Ereignis), der zum OnTick-Handler kommt, muss mit OnBook synchronisiert werden.
Es gibt drei Ereignisse im OnTick-Handler, die Preisänderung des besten Bid, die Preisänderung des besten Ask und den Trade (Last).
Wenn sich der Geld- oder Briefkurs ändert, ohne dass ein Handel stattfindet, ist dies ein Ereignis und OnTick empfängt diese Ereignisse.
Und OnBook muss diese Ereignisse ebenfalls abfangen, aber seine eigenen Ereignisse, seinen Handler, sonst kommt es zu einer Fehlanpassung der Geld- und Briefkurse zwischen den Handlern.
Und wenn OnTick ein letztes Ereignis empfängt, bedeutet dies, dass ein Handel stattgefunden hat.
Der Abschluss erzeugt das Ereignis in OnTick, da sich nach dem Abschluss der Preis oder das Volumen der Gebote und Nachfragen auf dem Markt ändern.
Es ist ein Teufelskreis.
Sowohl in OnTick als auch in OnBook gibt es ein Ereignis Best Bid und Best Ask.
Diese Ereignisse sollten immer in beiden Handlern synchron sein.
Und das Ereignis dauert von selbst, es erzeugt ein Ereignis in OnBook nach dem Handel.
Daher muss jedes Ereignis, das den OnTick-Handler erreicht, synchron in OnBook reflektiert werden.