Der Autor - Seite 4

 
Ich habe die Synchronisierung in Ordnung gebracht. Bitte teilen Sie mir mit, ob es eine Möglichkeit gibt, das Terminal für die Dauer des Skripts oder des Expert Advisors einzufrieren (so dass es keine Anführungszeichen akzeptiert).
 
ivandurak:
Ich habe die Synchronisierung in Ordnung gebracht. Bitte teilen Sie mir mit, ob es eine Möglichkeit gibt , das Terminal einzufrieren (so dass es keine Anführungszeichen akzeptiert) , während das Skript oder der Expert Advisor arbeitet.

Das ist Unsinn.

Wozu ist das gut?

 
her.human:

Das ist Unsinn.

Warum ist das notwendig?

Der Multicurrency-Tester, der in einen EA-Indikator oder ein Skript integriert werden kann, ist, so hoffe ich, praktisch fertig. Das Hauptproblem bei der Synchronisierung der verschiedenen Handelsinstrumente war das Vorhandensein von Löchern in der Geschichte. Wenn wir zum Beispiel die Euro- und Gazprom-Aktien analysieren, wird deutlich, dass die Handelszeiten unterschiedlich sind und es daher bei Gazprom im Vergleich zum Euro viele Lücken gibt, einschließlich Wochenenden und Feiertage. Aus der Position heraus kam - eine beispielhafte Reihe von Öffnungszeiten zu einem ausgewählten Zeitrahmen ohne Lücken im ausgewählten Teil der Geschichte. Dann wird die Öffnungszeit eines beispielhaften Arrays mit der Öffnungszeit eines Handelsinstruments verglichen, und wenn die Zeit übereinstimmt, wird die Balken-Nummer des Handelsinstruments gespeichert und diese Nummer an den TS übermittelt. Jetzt haben wir einige Handelsinstrumente, und während ihrer Neuberechnung kann der nächste Balken am letzten beginnen, was zur Folge hat, dass der für die Berechnungen zurückgegebene Balken mit allem, was dazugehört, verschoben wird. Die Lösung ist die Möglichkeit, die Strichnummer permanent zu korrigieren, aber das ist eine große Komplikation des Codes. Wir können die Öffnungszeit eines Balkens anstelle seiner Nummer zurückgeben, wie Sie vorgeschlagen haben, aber in diesem Fall würde es den Code für einen Benutzer komplizierter machen (ich tendiere bisher zu dieser Variante). Also dachte ich, der eingebaute Tester gibt keinen neuen Preiswert an, bis das Deinit nicht funktioniert, vielleicht gibt es eine Möglichkeit, das Terminal zu verlangsamen, bis das Programm funktioniert.
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций - Документация по MQL5
 
ivandurak:
Um zum TS zurückzukehren, nicht die Taktnummer, sondern die Öffnungszeit des Taktes, aber dann ist es eine Komplikation für den Benutzer
CopyTime("EURUSD",0,Время,Количество_Баров,Time);
CopyOpen("EURUSD",0,Время,Количество_Баров,OpenEU);
Es scheint keine Komplikationen zu geben.
 

Nun, hier ist die erste Schwalbe der Mehrwährung. Ich sollte Sie gleich warnen, es ist noch nicht einmal ein Release, der Code ist nicht optimiert und nicht vollständig debuggt, und es sind zwangsläufig Bugs drin. Wenn es nicht schwierig ist, Ihre Wünsche anzuschauen und zu äußern, spucken Sie noch zu früh.

Der Tester ist für die Prüfung eines ausgewählten Teils der Geschichte in mehreren Währungen konzipiert. Alle Handelsfunktionen werden von 4 übernommen. Detaillierte Anweisungen nach Fertigstellung .

Ich vergaß hinzuzufügen, dass alle Charts von Interesse auf denselben Zeitrahmen geöffnet sein sollten.

Dateien:
Tester.mqh  61 kb
 

Erste Veröffentlichung

Guten Tag an Sie eine Klasse für das Schreiben eines Multicurrency-Tester innerhalb von Skripten, Indikatoren oder Expert Advisors .Die Prüfung wird durch die Eröffnung Preise getan.

Methoden der Klasse

void Initialization() ;// Diese Methode führt die Nullsetzung von Variablen durch.

void AddSymbol(string Symb) ;// Methode zum Hinzufügen eines zu prüfenden Symbols zum Tester Symbol muss geladen sein und das Terminal muss ein Diagramm für den zu prüfenden Zeitraum anzeigen.

bool SetBeginEnd( int Begined, int Ended) ;// Anfang und Ende des zu prüfenden Verlaufs festlegen . Die Indexierung beginnt gemäß der Norm am Ende, weshalb der Startbalken der zu prüfenden Historie größer ist als der Endbalken.

void Visualisation(true); // Aktivieren der Visualisierung von Trades .

voidPrinting(true) ;//Die Ausgabe von Handelsergebnissen in das Journal ist standardmäßig deaktiviert.

bool Start(datetime &IndexInstrum[]) Diese Methode prüft das Ende des getesteten Zeitraums und gibt das Array der Bar-Startzeiten für die getesteten Instrumente zurück. Dies ist notwendig, um die Prüfung verschiedener Instrumente zu synchronisieren, wenn es Lücken gibt.

int GetBarsNambe(string GSimb,datetime TimeOpen);//liefert die Taktnummer des ausgewählten Symbols und die Taktöffnungszeit.

void Vedenie_v() ist die Hauptmethode, in der wir alle eingestellten Aufträge auf Auslösung, Schließung am Stop oder Gewinn prüfen.

Das Testen basiert auf Mql4-Regeln, d.h. jeder Auftrag hat sein eigenes Leben, so dass wir entgegengesetzte Aufträge sperren und öffnen können.

Alle Handelsfunktionen sind ebenfalls von Mql4 übernommen worden. Dies wurde getan, um eine einfache Anpassung der in dieser Sprache geschriebenen EAs zu ermöglichen.

Bitte beachten Sie, dass die Methode OrderClose_v die ausgewählte Position vollständig schließt.

OrderCloseBy fehlt .

double OrderProfit_v( ) berechnet den Gewinn ohne Leverage, die Leverage kann für verschiedene getestete Symbole unterschiedlich sein.

Der Rest des Codes bleibt unverändert, siehe Dokumentation.

Reihenfolge der Anmeldung

Zuerst kommt die Initialisierung. Dann wählen wir die zu prüfende Geschichte aus. Dann fügen wir die zu prüfenden Instrumente hinzu. Aktivieren Sie die Visualisierung, falls erforderlich. Aktivieren Sie bei Bedarf die Berichtsausgabe.

Der Test selbst findet innerhalb der SchleifeDo -While statt.

Zuerst kommt die obligatorische Methode

aaa=Test.Start(timeopen) ; Gibt das Ende des Tests und das Array der Bar-Open-Zeiten für die getesteten Instrumente zurück. Die Dimension von timeopen sollte mit der Anzahl der zu prüfenden Instrumente übereinstimmen. Wenn z.B. timeopen[0] < 0 ist, dann ist dies ein Zeichen für ein Fehlen in der Historie, siehe Beispiel.

Danach hat das Handelssystem selbst eine unbegrenzte Anzahl von Balken. nambebars=Test.GetBarsNambe(Symbol(),timeopen[0]) ; wobei Symbol und bar open time co-symbols sind. Anhand dieser Zahl können Sie die Werte der Indikatoren berechnen und das Handelssignal nach der Logik von TS einstellen.

Ganz am Ende muss die Methode Vedenie_v stehen.

Nach Beendigung des Tests (Verlassen des Zyklus) ist der gesamte Handelsverlauf für alle Aufträge verfügbar. Siehe die Beschreibung und das Forum von Mql4

Sie benötigen auch die Datei HeadTester.mqh, um das Format der Mql4-Handelsfunktionen vollständig zu überdecken.

Viel Glück und Wohlstand.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства сделок - Документация по MQL5
Dateien:
Tester.mqh  69 kb
 
ivandurak:

Erste Veröffentlichung

...

Viel Glück und Wohlstand.

Ich danke Ihnen. Vielleicht könnten Sie einen Artikel schreiben? Verewigen Sie es sozusagen. )))
 

Meine Herren PLZ. Irgendwo verlangsame ich mich sehr stark. Die Frage betrifft die SOM. Wenn es an einem konkreten Beispiel möglich ist.

Angenommen, wir haben eine Karte, die aus 50X60 Neuronen (rechteckigen Zellen) besteht. Nehmen wir einen zufälligen Trainingsvektor mit der Dimension x1={x1,x2,x3,x4,x5} und nehmen wir an, dass die Gesamtlänge der Trainingsprobe 5000 Vektoren beträgt. Angenommen, das Neuron, das dem Eingangsvektor am nächsten liegt, hat den Index 25,30 - ich habe es gefunden, und mein Kind lernt bereits Geometrie in der Schule. Und dann ist mein neuronales Netz nicht mehr optimiert. Eigentlich noch eine ganze Reihe von Fragen.

1 Wie berechnet man die Indizes der Neuronen, die in Schritt 1 trainiert werden sollen?

2 Wie berechnet man die Indizes der Neuronen, die im zweiten Schritt trainiert werden sollen?

3 Wie viele Trainingsschritte sollten insgesamt für den Eingangsvektor X1 durchgeführt werden?

4 Wenn ich mit der Lernregel von Kohonen nicht weiterkomme, werde ich mehr fragen.

PS: Ich habe den Artikel gelesen, zusätzliche Literatur gelesen, mir die Codes angesehen, die Schlussfolgerung erfordert ein Pendel.

 

Ich glaube, ich habe die Umgebung des Gewinnerneurons, in der das Lernen stattfindet, geklärt. Nun stellt sich die nächste Frage.

Gibt es ein Kriterium dafür, wie oft die Neuronen in der Umgebung trainiert werden müssen? Diese Frage ist schlecht beschrieben, ich kann nicht verstehen, wenn wir sie einmal unterrichten und dann den nächsten Vektor nehmen. Oder trainieren Sie, bis der durchschnittliche Fehler auf, sagen wir, 5 % gesunken ist.

 

Es wird ein Algorithmus zur Einfärbung der Kohonen-Karte benötigt. Es besteht der große Wunsch, nicht alle Karten zu malen, sondern mit einer zu arbeiten, bzw. jedem Cluster eine eigene Farbe zuzuordnen. Wie man es macht, ist nicht klar. DieAbbildung zeigt die Karte, die ich habe. Das Prinzip der Einfärbung ist, dass ein Vektor mit größerer Länge in der hellsten Farbe gemalt wird. Obwohl es nicht korrekt ist, haben die Vektoren X1 = (1,1) und X2 = (-1,-1) die gleiche Länge, gehören aber zu unterschiedlichen Bereichen.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Стили рисования - Документация по MQL5