SOM: Kochmethoden - Seite 3

 

alexeymosc!

> Analyse des GBPUSD-Paares auf täglichen Balken, 1989 bis 2011

[...]

> OOS-Zeitraum (von Anfang 2010 bis heute).


Handelt es sich um einen Tippfehler oder wird der OSS-Zeitraum versehentlich über den Analysezeitraum hinaus ausgedehnt?

 
Ha, gute Frage.
 
Das ist ganz einfach. Das Netz wurde aus Daten von 1989 bis Ende 2009 aufgebaut. Und ich habe die resultierende Strategie von Anfang 2010 überprüft... Warum regst du dich so auf, ich verstehe das nicht. Wiederholen Sie die Analyse und überzeugen Sie sich selbst.
 
Sie sollten lieber etwas zur Sache sagen, denn sie haben die Daten selbst angefordert und werden kein Wort sagen.
 
alexeymosc:
Sagen Sie lieber etwas zur Sache, Sie haben nach den Daten gefragt und nichts gesagt.


Hallo Alexey!

Ich glaube, viele hier sind an Ihren Ergebnissen interessiert. Ich werde versuchen, "aus meiner Sicht" zu erklären, also stampfen Sie bitte nicht zu sehr mit den Füßen und Hörnern auf!

Wenn wir die folgende Transformation durchführen: Cycle = Close[]-ma(Close[], 25), dann erhalten wir ein stationäres Signal (mean = Const, sigma = Const). Und wir werden versuchen, ein Handelssystem für diesen Zyklus zu entwickeln, indem wir SOM und das gleiche Muster der Länge 40 verwenden. Wir werden ein gutes, robustes System bekommen... Und bei einer normalen Preisreihe gibt es stochastische Trends, die von Inflation, Deflation und anderen externen Fundamentaldaten bestimmt werden. Und diese stochastischen Trends verhindern, dass viele stabile Systeme entstehen. Wie man mit ihnen umgehen kann, wenn man nur die Preisreihen eines Instruments verwendet, ist mir nicht klar. Und Ihr Ergebnis bei einer gewöhnlichen Preisreihe ist ziemlich angenehm überraschend!

 

Ich danke Ihnen! Die Umstellung verstehe ich. In meinem Fall wollte ich aus dem "reinen Preis" ein Ergebnis herausquetschen. Ehrlich gesagt, wurde ich von einigen Genossen inspiriert, die rein auf den Preis und erfolgreich handeln (es gab solche Nachrichten auf diesem Forum).

Ich war auch etwas überrascht über das Ergebnis, aber bisher sehe ich einige Schwachpunkte dieser Strategie, nämlich den Drawdown (sogar in der SOM-Trainingsperiode) und die geringe Handelsfrequenz. Das ergibt etwa 250 Pips pro Monat. Wenn Sie es auf mehrere Instrumente, erhalten Sie, sagen wir, 1000 Pips pro Monat, aber 1) unregelmäßig und 2) die Drawdowns werden noch wachsen.

Wenn ich abstrakt denke, betrachte ich die Aufgabe, auf dem Forex-Markt Gewinne zu erzielen (wenn auch nur auf dem Papier), als eine Aufgabe mit fast unendlich vielen Dimensionen. Und deshalb versuche ich, an verschiedenen Stellen in diesem Raum sozusagen zu "stochern". Nun - manchmal ergeben sich lokale, unvollkommene Lösungen für das Problem.

 

alexeymosc, wenn es nicht zu viel Mühe macht, bitte etwas ausführlicher, das Thema ist für mich sehr interessant. Für den Anfang, geben Sie mir ein Skript, mit dem die Daten vorbereitet wurde, oder die Methodik der Datenaufbereitung, und im Großen und Ganzen möchte ich die endgültigen Ergebnisse in mql haben, nicht in exel, wenn es Probleme mit dem Übergang zu mql schreiben, ich denke, wir werden helfen, und ich werde die NS-Programmierung lernen - ich verstehe es nicht selbst, danke im Voraus.

 

)) Alles ist bereits in Excel gespeichert (ich habe 2 Archive angelegt). Ich schätze, ich bin einfach sehr freundlich zu ihr, und ich denke, so ist es...

Aber zur Sache!

Ich habe das Drehbuch nicht. Aber es ist nicht schwer, die Bildung von Einträgen in MQL zu implementieren. Wir berechnen die Maximal- und Minimalwerte für die letzten 40 Bars anhand der Eröffnungskurse, einschließlich des letzten abgeschlossenen Bars. Und dann rechnen wir die offenen Preise nach der bekannten Formel um: (Open-Min) / (Max - Min), wodurch ein Vektor von 40 Werten mit Werten im Bereich [0;1] gebildet wird.

Dann würde ich persönlich es vorziehen, das ACS in einem Neuropackage zu trainieren und eine dll-Datei zu erstellen, die mit dem Expert Advisor kommuniziert. Es ist einfach praktisch für mich, und es ist bequem, alle Analysen in ein und demselben Excel zu machen. Sie könnten sich die Mühe machen, SOM-Training in MQL zu programmieren, das ist auch eine Option, aber ich bin KEIN Programmierer, ich kann nicht helfen.... Ich kann eine Expert Advisor-Vorlage für den Tester vorbereiten, zusammen mit einer dll-Datei der selbstorganisierenden Karte, und wir können gemeinsam den Code selbst und einige der Nuancen finalisieren.

Übrigens ist es nicht nur möglich, auf dem Tageschart zu handeln. Ich bekam Gewinn auf OOS-Periode auch auf 15-Minuten-Perioden), aber die Drawdowns waren groß...

 
alexeymosc:

Berechnen Sie aus den Eröffnungskursen das Maximum und Minimum der letzten 40 Balken, einschließlich des letzten abgeschlossenen Balkens. Anschließend transformieren wir die offenen Preise nach der bekannten Formel: (Open-Min) / (Max - Min), wodurch ein Vektor von 40 Werten mit Werten im Bereich [0;1] gebildet wird.

Dies ist wahrscheinlich das Drehbuch:

//+------------------------------------------------------------------+
//|                                                     SOM_data.mq4 |
//|                               https://www.mql5.com/ru/users/igorm |
//|                               https://www.mql5.com/ru/users/igorm |
//+------------------------------------------------------------------+
#property copyright "https://www.mql5.com/ru/users/igorm"
#property link      "https://www.mql5.com/ru/users/igorm"

extern int     NumBars = 40;
extern string  FileName = "som_data.csv";

int start(){
   int i,Max,Min,file_handle;
   double _open[];
   double out,max_min;
   ArrayResize(_open,NumBars);
   file_handle = FileOpen(FileName,FILE_CSV|FILE_WRITE);
   if(file_handle<1){
         Print("Файл ",FileName,"не открыт для записи, ошибка №", GetLastError());
         return(0);
    }
    for(i=1;i<=NumBars;i++) _open[i-1] = Open[i];
    Max = ArrayMaximum(_open);
    Min = ArrayMinimum(_open);
    max_min = _open[Max] - _open[Min];
    if (max_min ==0){
         Print("Деление на ноль, невозможно выполнить код");
         return(0);
    }
    for(i=1;i<=NumBars;i++){
        out = (Open[i]-_open[Min]) / max_min;
        FileWrite(file_handle,out);
    }
return(0);
}
//+------------------------------------------------------------------+

der Code ist etwas lang, sollte aber ohne Kommentare verständlich sein

SZZ: Ich kann gut mit Excel umgehen, aber nur sehr selten - auf Taschenrechnerniveau ))))

 

Ich danke Ihnen!

Das Skript funktioniert, die Werte sind korrekt.

Ich denke gerade über die SOM-Datei nach, ich werde versuchen, sie mit dem EA zu verbinden.

Grund der Beschwerde: