Fehler, Irrtümer, Fragen - Seite 2659

 
Igor Makanu:

geprüft durch Ausgabe an OnTester()

das Bild ist dasselbe wie oben

hier ist die Frage des Vertrauens, dass, wenn Sie optional NS durch GA-Tester übergeben - es ist nicht sicher, dass alle lokalen Prozessorkerne nicht mit der gleichen anfänglichen Konfiguration der NS-Gewichte arbeiten - es verdirbt Trainingsergebnisse, imho

können Sie versuchen, eine Funktion der Passnummer als Generierungsbasis zu verwenden.

Wenn es einige Eingabeparameter gibt, die sich während der Optimierung ändern, kann ihre Kombination (Summe, Produkt, Grad...) verwendet werden, um eine Basis für die Erzeugung von Pseudo-Zufallszahlen zu schaffen. Wahrscheinlich (aber nicht sicher :D ) wäre ein Nebeneffekt, dass man den Code mit "zufälligen" Zahlen in einem einzigen Durchgang reproduzieren könnte.

 
Igor Zakharov:

können Sie versuchen, eine Funktion der Passnummer als Generierungsbasis zu verwenden.

Wenn es einige Eingabeparameter gibt, die sich während der Optimierung ändern, dann kann ihre Kombination (Summe, Produkt, Grad...) verwendet werden, um die Basis der Pseudo-Zufallszahlengenerierung festzulegen. Wahrscheinlich (aber nicht sicher :D ) wäre ein Nebeneffekt, dass man den Code mit "zufälligen" Zahlen in einem einzigen Durchgang reproduzieren könnte.

Man kann eine Reihe von relativ zufälligen Zeichen mit wenigen Kilobytes erzeugen/finden (Puschkins Text:) ). Alles läuft auf eine schlaue Implementierung der Zufälligkeit hinaus, um die Anforderungen der Aufgabe zu erfüllen, wenn der Vorschlag nicht überprüft wird. Ich erinnere mich an solche Probleme in vielen Bibliotheken.

Kollegen, könnten Sie vorschlagen, wenn ich ChartOpen() öffne, wie kann ich den Fokus (Aktivität, Sichtbarkeit) auf den Chart zurückbringen, mit dem der Expert Advisor arbeitet, ohne ihn zu schließen?

Und wer weiß, warum Bid, Ask nicht mit dem Chartpreis Close[0]https://www.mql5.com/ru/forum/160683/page1082#comment_15152111 übereinstimmen.

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2020.02.25
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Aleksey Mavrin:

Es kommt darauf an, dass Sie die Randomisierung so geschickt einsetzen, dass sie den Anforderungen der Aufgaben gerecht wird.

Ich glaube nicht, dass das das Problem ist... der Pseudo-Zufallsgenerator selbst funktioniert recht gut, das Problem liegt in der Generierungsbasis - bei konstanten Eingaben (während der Optimierung) ist die Basis gleich, so dass die Ergebnisse immer nahe beieinander liegen. ich habe vorgeschlagen, wie man die Streuung der Generierungsbasis maximieren kann

 
Igor Zakharov:

Ich habe den Eindruck, dass dies nicht das Problem ist... der Pseudo-Zufall selbst funktioniert gut, das Problem liegt in der Generierungsbasis der Serie - bei konstanten Eingaben (während der Optimierung) ist die Basis gleich, so dass die Ergebnisse immer nahe beieinander liegen. ich habe vorgeschlagen, wie man die Streuung der Generierungsbasis maximieren kann

Ich stimme zu. Ich meinte nur die Tatsache, wenn ich mich recht erinnere, dass oft gefunden (sind) Bibliotheken, die nicht funktionieren Initialisierung, dh ohne Grund die gleiche Basis, wenn nicht überprüft und verwendet, viele wissen nicht darüber.

 
Igor Makanu:

Bild wie oben

crusty Lösung direkt - Set Nummer für srand in EA-Eigenschaften. oder nehmen Sie aus Hash von Parametern, dann zumindest Randoms werden unterschiedliche Initialisierung.
 
TheXpert:
crusty Lösung direkt - Set Nummer für srand in EA-Eigenschaften. oder nehmen Sie aus Hash von Parametern, dann zumindest Randoms werden unterschiedliche Initialisierung.

Ich habe gestern diese Lösung gefunden, die korrekt funktioniert

input int param1 =  2147483647;
//+------------------------------------------------------------------+
int OnInit()
   {
   srand(param1);
   return(INIT_SUCCEEDED);
   }
//+------------------------------------------------------------------+
void OnTick()
   {

   }
//+------------------------------------------------------------------+
double OnTester()
   {
   return(rand());
   }

meine Fragen beziehen sich allgemein auf die Korrektheit von rand() in teter, jetzt habe ich alglib durchsucht, es verwendetMathRand() einmal in randomreal(), das dann oft innerhalb der alglib-Bibliothek verwendet wird

 
Igor Makanu:

meine Fragen beziehen sich allgemein auf die Korrektheit von rand() im Teter

Die Fragen beziehen sich genau auf die Initialisierung. Offenbar kann man im Tester nicht mit der Zeit initialisieren, um ein gutes rand() zu erhalten.
 
TheXpert:
Um eine gute Zufälligkeit im Tester zu erhalten, kann man offenbar nicht mit der Zeit initialisieren.

das ist genau das, was es ist

schrieb gestern, dass dies der Dokumentationhttps://www.mql5.com/ru/forum/1111/page2657#comment_15165819 widersprichtund das MathSrand()-Beispiel aus der Hilfe ein anderes Ergebnis liefert als im Tester erwartet


UPD: mein Problem ist ein bisschen tiefer - ich möchte Tester für Deep Learning verwenden und die bestmöglichen NS-Konfigurationen über den Austausch von Agenten zu Agenten speichern - ich habe alles im Allgemeinen geplant, aber ich wollte Kollisionen über Agentenstart (oder -stopp) Pause mit Zufallswert behandeln.... aber leider sind nicht alle Zufallswerte in Tester-Agenten zufällig )))

 
In den meisten Fällen muss der Prüfer die Reproduzierbarkeit der Ergebnisse sicherstellen. Die Anforderung, dass die Ergebnisse ohne Änderung der Eingabeparameter und des Zustands der Umgebung (alle Funktionen im Zusammenhang mit der virtuellen Zeit) randomisiert werden, steht im Widerspruch zur Aufgabe und Durchführung des Testers.
 
Stanislav Korotky:
In den meisten Fällen müssen Sie im Prüfgerät die Reproduzierbarkeit der Ergebnisse sicherstellen. Die Anforderung, dass die Ergebnisse randomisiert werden, ohne dass die Eingabeparameter und der Zustand der Umgebung (alle Funktionen, die mit der virtuellen Zeit zusammenhängen) geändert werden, widerspricht der Aufgabe und der Implementierung des Testers.

es ist in Ordnung, was Sie schreiben, aber ich muss die Reihenfolge des Zugriffs auf die Agenten beim Speichern in der Datenbank trennen

Sie benötigen im Wesentlichen eine lokale Agenten-ID im Testgerät, ich weiß nicht, warum es diese Funktion nicht gibt.