![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Ich übersehe hier etwas. Wenn ich zwei Charts für z.B. USDJPY H1 öffne und jedem von ihnen eine Instanz des EA hinzufüge, dann verwenden beide die magische Zahl 9999033.
Ja, diese Option wurde nicht eingebaut, weil ich nie eine Verwendung dafür hatte. Die einzige Möglichkeit, zwischen zwei identischen Charts zu unterscheiden (die ich sehen kann), wäre ein Hash im Fensterhandle...
aber dann würde man die Persistenz über Neustarts und das Schließen von Charts verlieren, und deshalb können oder werden verwaiste Orders als Ergebnis erstellt werden.
Ist die MT-Terminal-Anwendung also ein "Container" - mit einem einzigen hWnd für <das Ganze>?
Ja. Es ist eine ziemlich typische MDI-Anwendung. Es gibt ein Top-Level-Fenster, das Dinge wie Symbolleisten, Fenster und den MDI-Client-Bereich enthält. Letzterer enthält dann jedes Diagramm, und jedes Diagramm besteht eigentlich aus zwei Fenstern: einem Container mit der Zeichenfläche darin. Jedes dieser Fenster hat sein eigenes hWnd-Handle. Die Funktion WindowHandle() gibt das Handle der Zeichenfläche zurück. Wenn Sie also den API-Aufruf GetParent() dreimal ausführen, erhalten Sie das hWnd des MT4-Fensters der obersten Ebene.
fwiw, ich benutze unten und habe nie Duplikate gehabt. Gleiche EA auf bis zu 10 [jede Art] Charts.
Ich habe keine Antwort auf die massiv overkill junk actuals übergeben, um Hash-Funktion. Ich habe einfach alles hineingeschoben, einschließlich der Küchenspüle. d.h. ich bin kein Mathe-Mensch..., ich habe einfach gehämmert und gemeißelt, bis ich nie Wiederholungen hatte - sogar beim Terminal-Start mit 10 Chart-Profilen, die alle denselben EA haben...
Natürlich würde ich gerne eine bessere und besser beschreibbare/logische Methode haben... also fangt an, sie in Stücke zu reißen :O)
fwiw, ich benutze unten und habe nie Duplikate gehabt. Gleiche EA auf bis zu 10 [jede Art] Charts.
Ich habe keine Antwort auf die massiv overkill junk actuals übergeben, um Hash-Funktion. Ich habe einfach alles hineingeschoben, einschließlich der Küchenspüle. d.h. ich bin kein Mathe-Mensch..., ich habe einfach gehämmert und gemeißelt, bis ich nie Wiederholungen hatte - sogar beim Terminal-Start mit 10 Chart-Profilen, die alle denselben EA haben...
Natürlich würde ich gerne eine bessere und besser beschreibbare/logische Methode haben... also fangt an, sie in Stücke zu reißen :O)
Ich mag es. Besonders der gute alte djb2-Hash.
Sehr beeindruckende Sachen, Jungs :)
MDI-Container bringen mich zurück <seufz>
Ich bin nach wie vor der Meinung, dass die Magic Numbers zu wichtig sind, um sie willkürlich anzuwenden!
Ich bin mir sicher, dass CB bestätigen würde, dass eine vorhersehbare Wiederherstellung beim Neustart ein extrem wichtiges Element in einem robusten System ist...
FWIW
-BB-
Mit diesem Code ist ein EA in der Lage, seine eigenen Aufträge zu erkennen, wenn die Plattform heruntergefahren wird. Es verwendet Globale Variablen, so dass, wenn Sie die EA "inmune", um PC-Shutdown machen wollen, könnte es umgeschrieben werden, um Dateien anstelle von Globalen Variablen zu verwenden. Ich habe auch ein Beispiel angehängt, das eine Position gerade zum Startzeitpunkt öffnet und sie im nächsten Takt schließt. Sie können den Experten im 1M-Zeitrahmen laden, den Metatrader herunterfahren und ihn dann wieder öffnen, einfach auf den nächsten Takt warten, um zu sehen, wie der EA seinen Auftrag schließt. Es wurde weder mit mehreren Graphen bewiesen noch mit mehreren Aufträgen ausgetrickst, aber was denken Sie darüber?
Ich mag es. Besonders der gute alte djb2-Hash.
Danke - aber ich fühle mich wirklich beschämt über so ein uninformiertes Stück Code in makeexpertid...
Es ist noch zu früh, aber vielleicht entdeckt jemand den/die Fehler... sollten sie vorhanden sein
Sehr beeindruckende Sachen, Jungs :)
MDI-Container bringen mich zurück <seufz>
Ich bin nach wie vor der Meinung, dass die Magic Numbers zu wichtig sind, um sie willkürlich anzuwenden!
Ich bin mir sicher, dass CB bestätigen würde, dass eine vorhersehbare Wiederherstellung beim Neustart ein extrem wichtiges Element in einem robusten System ist...
FWIW
-BB-
Ich sage immer noch, dass die magischen Zahlen IMHO zu wichtig sind, um sie willkürlich anzuwenden!
sicher BB, vip datums. Ich habe viel zu viel Zeit damit verbracht, ein einzigartiges Datum zu finden, das von mehreren Instanzen eines EA verwendet werden kann. Dieses Datum musste wiederholbar sein, damit alle geöffneten Dateien bei Wiederherstellung/Neustart zugeordnet werden können. Ich wollte die Möglichkeit schaffen, dass eine beliebige Anzahl von gleichen EA-Instanzen (ccy+per chart) "irgendwie" einen eindeutigen Dateinamen öffnen und bei einem Neustart auf magische Weise wieder öffnen...
Fenstergriffdaten könnten dieser "Faktor X" sein?
sicher BB, vip datums. Ich habe viel zu viel Zeit mit dem Versuch verbracht, ein eindeutiges Datum zu finden, das mehrere Instanzen eines EA verwenden können. Dieses Datum musste wiederholbar sein, damit alle geöffneten Dateien bei Wiederherstellung/Neustart zugeordnet werden können. Ich wollte die Möglichkeit schaffen, dass eine beliebige Anzahl von EA-Instanzen mit demselben Ccy+pro Chart "irgendwie" einen eindeutigen Dateinamen öffnen und beim Neustart auf magische Weise wieder öffnen können...
Ich sehe nicht, wie dies möglich ist, ohne dass entweder MT4 oder der Benutzer jedem EA eine ID zuweist. Oder, genauer gesagt, ich sehe nichts, was nicht etwas sehr Unangenehmes beinhaltet, wie z.B. das Generieren einer eindeutigen ID und das anschließende Ändern der .chr-Datei des EAs, um die ID als Teil der externen Parameter des EAs zu speichern.
Und, zur allgemeinen Unterhaltung, das Folgende bringt die Diskussion nicht wirklich voran, aber es ersetzt die Eingabe in den djb2-Hash durch einen Wert, der garantiert eindeutig ist (auf Kosten der Notwendigkeit von DLL-Aufrufen). Ich weiß nicht, wie gut djb2 bei Dingen wie GUIDs sein soll, aber ich habe gerade versucht, 1.000.000 IDs ohne Kollisionen zu erzeugen. Aber das löst immer noch nicht das Problem des Neustarts.
Die Daten des Fenstergriffs könnten der "Faktor X" sein?
Wenn Sie keine Aufträge teilweise schließen würden, könnten Sie den Auftragskommentar verwenden, um das Ursprungspaar/den Zeitrahmen zu speichern...?
Auf diese Weise könnte der EA beim Neustart herausfinden, ob er frühere Aufträge hatte und welche magische Zahl er daher verwenden sollte?
NB
Halten Sie die Kommentare auf < 25 und achten Sie auf LEFT(OrderComments(), 24), da sonst die [sl] oder [tp] Dinge beeinflussen könnten.
Geht davon aus, dass <all history> in der Registerkarte Account History verfügbar bleibt!
FWIW .
-BB-