Diskussion zum Artikel "Bibliothek für ein leichtes und schnelles Entwickeln vom Programmen für den MetaTrader (Teil VI): Ereignisse von Änderungen von Orders und Positionen" - Seite 2
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
Artem, nochmals vielen Dank!
Die Methode"void CEventsCollection::CreateNewEvent(COrderControl* order)" wird verwendet, um ein Handelsereignis in Abhängigkeit von der Art der Auftragsänderung zu erstellen, d.h. es wird ein Ereignis erstellt, das mit jeder Auftragsänderung verbunden ist.....
Und der Grund der Auftragsänderung wird an das erstellte Ereignis gesendet: EVENT_REASON_STOPLIMIT_TRIGGERED.
Wenn ich Recht habe, korrigieren Sie es bitte, wenn nicht, erklären Sie bitte, was ich nicht gesehen habe.
Vielen Dank für die Bibliothek, Sie haben meine Arbeit in mehreren Fällen vereinfacht,
besonders wenn die Hauptarbeit nicht mit der Programmierung verbunden ist.
Artem, nochmals vielen Dank!
Die Methode"void CEventsCollection::CreateNewEvent(COrderControl* order)" wird verwendet, um ein Handelsereignis in Abhängigkeit von der Art der Auftragsänderung zu erstellen, d.h. sie erstellt ein Ereignis, das mit jeder Auftragsänderung verbunden ist.....
Und der Grund der Auftragsänderung wird an das erstellte Ereignis gesendet: EVENT_REASON_STOPLIMIT_TRIGGERED.
Wenn ich richtig liege, korrigieren Sie mich bitte, wenn nicht, erklären Sie mir bitte, was ich nicht gesehen habe.
Vielen Dank für die Bibliothek, Sie haben meine Arbeit in mehreren Fällen vereinfacht,
besonders wenn die Hauptarbeit nicht mit der Programmierung verbunden ist.
Ohne auf die genaue Stelle der zitierten Zeilen zu verweisen, kann ich nicht verstehen, wovon Sie genau sprechen - nur durch Suchen (Umschalt+Strg+F) konnte ich diesen Code nicht in allen Bibliotheksdateien finden...
event.SetProperty(EVENT_PROP_REASON_EVENT,EVENT_REASON_STOPLIMIT_TRIGGERED);Wo ist er zu finden?
Ohne auf die genaue Stelle der zitierten Zeilen zu verweisen, kann ich nicht verstehen, wovon Sie genau sprechen - nur durch Suchen (Umschalt+Strg+F) konnte ich solchen Code nicht in allen Bibliotheksdateien finden...
Wo ist er zu finden?
Hier sind die Zeilen aus der Beschreibung im ersten Teil dieses Artikels und der Code am Ende des Artikels: Unterstreichen Sie diese Zeile!
Im Moment - in der aktuellen Version der Bibliothek, sieht die Methode so aus:
Also, entweder war es ein Fehler und wurde längst behoben, oder es ist in der diskutierten Version der Bibliothek nicht kritisch. Ich weiß nicht mehr genau, wie es war....
Im Moment - in der aktuellen Version der Bibliothek - sieht die Methode wie folgt aus:
Also, entweder war es ein Fehler und wurde längst behoben, oder es ist in der diskutierten Version der Bibliothek nicht kritisch. Ich weiß nicht mehr genau, wie es war...
Das ist sehr wichtig, vom Autor ist es sogar noch wichtiger. Wenn Sie Ihre ursprüngliche Idee nicht aufgegeben haben. Um unerfahrenen Programmierern wie mir bei meiner Arbeit zu helfen. Wenn man ein Anfänger (ein Student) ist und gerade eine Programmiersprache oder das Programmieren im Allgemeinen lernt, gibt es eine Menge Zweifel und Fragen, wenn man seine Arbeit (Bibliothek) studiert. In diesem Fall war ich mir bis zum letzten Moment nicht sicher, ob es ein Fehler oder Ihre Absicht war. Ich bin Ihren Code mehr als einmal durchgegangen. Und für mich ist es sehr wichtig: "entweder habe ich den Sinn des Autors nicht verstanden, oder es ist nur ein Tippfehler des Autors in seinem großen Projekt."
Und wie können Sie sagen, dass es nicht kritisch ist?! Das ist falsch von Ihnen, damit verwirren Sie und ich nur die Leser. Die studieren oder lernen, wie ich, aus Ihrer Bibliothek.
Das ist sehr wichtig, aus Sicht des Autors ist es sogar noch wichtiger. Wenn Sie Ihre ursprüngliche Idee nicht aufgegeben haben. Um Programmieranfängern wie mir bei meiner Arbeit zu helfen. Wenn man ein Anfänger (ein Student) ist und gerade eine Programmiersprache oder das Programmieren im Allgemeinen lernt, gibt es eine Menge Zweifel und Fragen, wenn man seine Arbeit (Bibliothek) studiert. In diesem Fall war ich mir bis zum letzten Moment nicht sicher, ob es ein Fehler oder Ihre Absicht war. Ich bin Ihren Code mehr als einmal durchgegangen. Und für mich ist es sehr wichtig: "entweder habe ich den Sinn des Autors nicht verstanden, oder es ist nur ein Tippfehler des Autors in seinem großen Projekt."
Und wie können Sie sagen, dass es nicht kritisch ist?! Das ist falsch von Ihnen, damit verwirren Sie und ich nur die Leser. Die studieren oder lernen, wie ich, aus Ihrer Bibliothek.
:)
Ich habe Ihnen den Code mit den farblich hervorgehobenen Korrekturen gezeigt. Füge sie in die Version der Bibliothek ein, die diesem Artikel beigefügt ist.
Ich weiß natürlich nicht mehr, ob es mein Fehler war oder ob er in dieser Version nicht kritisch ist und mir deshalb beim Debuggen entgangen ist. Immerhin sind es schon über vierzig Artikel, und dieser ist schon so lange her. Höchstwahrscheinlich handelte es sich um einen Fehler, der in späteren Artikeln korrigiert wurde - viele Dinge in der Bibliothek werden bereits im laufenden Betrieb erstellt. Natürlich gab es, und zwar mehr als eine, Testversionen der Bibliothek. Aber seit dem Beginn der Beschreibung ihrer Erstellung wurde vieles überarbeitet und hinzugefügt. Deshalb ist diese Artikelserie als eine Beschreibung der Erstellung der Bibliothek angelegt. Auf diese Weise versuche ich, den Leser in den Prozess der Erstellung der Bibliothek einzubeziehen. Mit Versuchen und Fehlern und mit Anleitungen, wie man sie behebt - um den ganzen Prozess sichtbar zu machen - um sozusagen "all die Schmerzen der Schöpfung" zu enthüllen :) :)
Ich entschuldige mich also für etwaige Unklarheiten in Ihrem Verständnis dessen, was vor sich geht.....
Nehmen Sie einfach die oben vorgeschlagenen Änderungen vor. Oder lassen Sie es bis zu dem Artikel, in dem es korrigiert wird.
Ich möchte das letzte Ereignissymbol, das Ticket und den Typ (Öffnen, Schließen, Änderung) abfragen. Wie mache ich das richtig?
Wie ich sehe, ist Artyom so beschäftigt, dass er gar nicht im Forum erscheint. )))))))) Vielleicht kann ich Ihnen einen Tipp geben, nachdem ich mit seiner Bibliothek experimentiert habe. Heute bin ich diese Experimente durchgegangen und habe eine solche Funktion gefunden. In dem Kommentar steht, dass die Funktion eine Liste aller offenen Stellen bekommt.
Leider kann ich nicht erklären, wofür sie da ist, ich habe alles vergessen, aber vielleicht kannst du es herausfinden....
Nun... wenn Sie das nicht können, warten Sie. Artem wird Zeit finden und antworten.
Wenn ein Tick empfangen wird, auf den eine Pending Order gesetzt und gleichzeitig aktiviert (getriggert) wird (ich habe mit Buy Stop getestet), registriert Ihre Engine nicht alle Ereignisse...
Das Ereignis TRADE_EVENT_PENDING_ORDER_PLASED wird empfangen, aber nicht TRADE_EVENT_PENDING_ORDER_ACTIVATED.
Mein Code sieht ungefähr so aus:
Ich suche zuerst den Index des alten (verarbeiteten) Ereignisses in der Schleife, und dann gehe ich von ihm ausgehend in einer Schleife durch alle neuen Ereignisse bis zum Ende. Also, in einer Situation, in der auf einen Tick eine Limit-Order gesetzt wird und striggeren erhält ein Ereignis über die Einstellung... Bitte kommentieren.
Ich rufe ProcessTradeEvents() in OnTick() nach engine.OnTick(rates_data) auf.