Diskussion zum Artikel "Die Anwendung der Monte Carlo Methode beim Reinforcement-Learning" - Seite 5

 

Danke, Maxim.

Ich habe mit dem Code gespielt und verschiedene Datentypen für die Feature-Eingangsvektoren eingeführt. Ich habe Close, Open, High, Low, Price Typical, Tick Volumes und Derivate davon ausprobiert.

Ich hatte Probleme mit dem Optimierer, der sich über "einen Fehler nach Abschluss des Durchlaufs" beschwerte, aber es gelang mir schließlich, die Ursache dafür zu finden: Der Optimierungsfehler tritt auf, wenn die Daten des Eingangsvektors Nullwerte enthalten.

Wenn ich eine Ableitung gebildet habe, z. B. Close[1]-Close[2], sind die Close-Werte manchmal gleich, was eine Ableitung von Null ergibt. Für diese Arten von Eingangsvektorwerten fand ich die einfachste Lösung darin, eine Konstante, z. B. 1000, zu allen Vektorwerten hinzuzufügen. Dadurch wurden die Fehler des Optimierers behoben und das RDF funktionierte dennoch.

Ich habe auch festgestellt, dass die unbeabsichtigte Folge der wiederholten Durchführung derselben Tests ist, dass der Umfang der Kurvenanpassung für den getesteten Zeitraum zunimmt. Manchmal ist es besser, die aufgezeichneten RDF-Dateien zu löschen und die Optimierung erneut durchzuführen.

Ich experimentiere noch und habe weitere Ideen für andere Arten von Funktionen.


[Gelöscht]  
Mark Flint:

Danke, Maxim.

Ich habe mit dem Code gespielt und verschiedene Datentypen für die Feature-Eingangsvektoren eingeführt. Ich habe Close, Open, High, Low, Price Typical, Tick Volumes und Derivate davon ausprobiert.

Ich hatte Probleme mit dem Optimierer, der sich über "einen Fehler nach Abschluss des Durchlaufs" beschwerte, aber es gelang mir schließlich, die Ursache zu finden: Die Optimierungsfehler treten auf, wenn die Daten des Eingabevektors Nullwerte enthalten.

Wenn ich eine Ableitung gebildet habe, z. B. Close[1]-Close[2], sind die Close-Werte manchmal gleich, was eine Ableitung von Null ergibt. Für diese Art von Eingangsvektorwerten fand ich die einfachste Lösung darin, eine Konstante, z. B. 1000, zu allen Vektorwerten hinzuzufügen. Dadurch wurden die Optimierungsfehler behoben und das RDF funktionierte dennoch.

Ich habe auch die unbeabsichtigte Folge bemerkt, dass bei wiederholter Durchführung der gleichen Tests der Umfang der Kurvenanpassung für den getesteten Zeitraum zunimmt. Manchmal ist es besser, die aufgezeichneten RDF-Dateien zu löschen und die Optimierung erneut durchzuführen.

Ich bin noch am Experimentieren und habe weitere Ideen für andere Arten von Funktionen.


Hallo, Mark. Das hängt vom Algorithmus für die Merkmalsauswahl ab (im Falle dieses Artikels ist es 1 Merkmal/ein weiteres Merkmal (unter Verwendung von Preisrenditen) in der "rekursiven Eliminierungsfunktion"), wenn Sie also "0" im Teiler haben, kann dieser "Fehler" auftreten, wenn Sie cl[1]-cl[2] verwenden.

Ja, verschiedene Optimierungsläufe können sich unterscheiden, da eine Zufallsstichprobe verwendet wird, auch ein RDF-Zufallsalgorithmus. Um dies zu beheben, können Sie MathSrand(number_of_passes) in expert OnInint() func, oder eine andere feste Zahl verwenden.

[Gelöscht]  
Maxim Dmitrievsky:

Ja, wenn man die gesamte Logik (einschließlich RF) auf offene Cl-Kerne umschreibt :) auch Random Forest hat die schlechteste gpu-Machbarkeit und Parallelität

Hey Maxim, ich habe mir gerade Ihren Code angesehen. Mir ist aufgefallen, dass die Dateien mit dem besten Modell, den Merkmalen und den Parameterwerten zwar während der Optimierung gespeichert werden ("OFFLINE"). Die Update-Agent-Politik und Update-Agent-Belohnung sind auch "OFFLINE", wenn Sie sich entscheiden, Ihre EA laufen zu lassen, also wie werden die Belohnungen und die Politik aktualisiert, während der EA live läuft, da MQLInfoInteger(MQL_OPTIMIZATION) == true im Offline-Modus und bei der Ausführung auf einem Demo oder Live-Konto mit Ihrem EA MQLInfoInteger(MQL_OPTIMIZATION) == false . Übersehe ich etwas ????


//+------------------------------------------------------------------+
//|Agent-Richtlinie aktualisieren|
//+------------------------------------------------------------------+
CRLAgent::updatePolicy(double action,double &featuresValues[]) {
   if(MQLInfoInteger(MQL_OPTIMIZATION)) {
      numberOfsamples++;
      RDFpolicyMatrix.Resize(numberOfsamples,features+2);
      //Eingangsvariablen
      for(int i=0;i<features;i++)
         RDFpolicyMatrix[numberOfsamples-1].Set(i,featuresValues[i]);
      //Ausgangsvariablen
      RDFpolicyMatrix[numberOfsamples-1].Set(features,action);
      RDFpolicyMatrix[numberOfsamples-1].Set(features+1,1-action);
     }
  }
//+------------------------------------------------------------------+
//|Agentenbelohnung aktualisieren|
//+------------------------------------------------------------------+
CRLAgent::updateReward(void) {
   if(MQLInfoInteger(MQL_OPTIMIZATION)) {
      if(getLastProfit()>0) return;
      double randomReward = (getLastOrderType()==0) ? 1 : 0;
      RDFpolicyMatrix[numberOfsamples-1].Set(features,randomReward);
      RDFpolicyMatrix[numberOfsamples-1].Set(features+1,1-randomReward);
     }
  }
[Gelöscht]  
developeralgo:

Hey Maxim, ich habe mir gerade Ihren Code angesehen. Mir ist aufgefallen, dass, obwohl die Dateien mit dem besten Modell, den Merkmalen und den Parameterwerten während der Optimierung gespeichert werden ("OFFLINE"). Die Update-Agent-Politik und Update-Agent-Belohnung sind auch " OFFLINE ", wenn Sie sich entscheiden, Ihre EA laufen zu lassen, so wie die Belohnungen und Politik aktualisiert werden, während der EA live läuft, da MQLInfoInteger(MQL_OPTIMIZATION) == true im Offline-Modus und bei der Ausführung auf einem Demo oder Live-Konto mit Ihrem EA MQLInfoInteger(MQL_OPTIMIZATION) == false . Übersehe ich etwas ????


Hallo, Politik und Belohnungen sind nicht in den realen Handel aktualisiert, es ist nur für das Lernen Random Forest in der Optimierer benötigt.

 
MetaQuotes Software Corp.:

Neuer Artikel Applying Monte Carlo method in reinforcement learning wurde veröffentlicht:

Autor: Maxim Dmitrievsky

es gibt diese Datei, die fehlt, "#include <MT4Orders.mqh>" und die Funktionen sehen aus wie MT4-Funktionen.

Handelt es sich also um einen MT4-Experten oder einen MT5-Experten?

[Gelöscht]  
ffoorr:

es gibt diese Datei, die fehlt, "#include <MT4Orders.mqh>" und die Funktionen sehen aus wie MT4-Funktionen.

Ist es also ein MT4-Experte oder ein MT5-Experte?

Mit dieser Bibliothek können Sie den Stil von mt4-Orders in mt5 verwenden

https://www.mql5.com/ru/code/16006

MT4Orders
MT4Orders
  • www.mql5.com
Данная библиотека позволяет работать с ордерами в MQL5 (MT5-hedge) точно так же, как в MQL4. Т.е. ордерная языковая система (ОЯС) становится идентичной MQL4. При этом сохраняется возможность параллельно использовать MQL5-ордерную систему. В частности, стандартная MQL5-библиотека будет продолжать полноценно работать. Выбор между ордерными...
 
Maxim Dmitrievsky:

ok Danke

 

falsch oder veraltet:
CRLAgent::getRDFstructure(void) { ......

richtig:
void CRLAgent::getRDFstructure(void) {......

Eine andere Version des Compilers?

 
Otto Pauser:

falsch oder veraltet:
CRLAgent::getRDFstructure(void) { ......

richtig:
void CRLAgent::getRDFstructure(void) {......

Eine andere Version des Compilers?

Ja, in der letzten Version wurde eine strengere Prüfung eingebaut.

 

Hallo Maxim, vielen Dank für Ihre Arbeit, ich habe versucht, Ihren Code zu testen, aber es zeigt mir einige Fehler in der mq4-Datei mit dem folgenden Text

'getRDFstructure' - Funktion ist bereits definiert und hat einen anderen Typ RL_Monte_Carlo.mqh 76 11

RecursiveElimination' - Funktion ist bereits definiert und hat einen anderen Typ RL_Monte_Carlo.mqh 133 11

updatePolicy' - Funktion ist bereits definiert und hat einen anderen Typ RL_Monte_Carlo.mqh 221 11

updateReward' - Funktion ist bereits definiert und hat einen anderen Typ RL_Monte_Carlo.mqh 236 11

setAgentSettings' - Funktion ist bereits definiert und hat einen anderen Typ RL_Monte_Carlo.mqh 361 12

updatePolicies' - Funktion ist bereits definiert und hat einen anderen Typ RL_Monte_Carlo.mqh 373 12

updateRewards' - Funktion ist bereits definiert und hat einen anderen Typ RL_Monte_Carlo.mqh 380 12

Wissen Sie, wie man dieses Problem lösen kann?