Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 2007

 
Maxim Dmitrievsky:

Hier werden die Balken nach der Totzeit neu indiziert, da es in der Historie fehlende Balken geben kann, so dass es keine Löcher gibt. Dann werden leere Werte entsorgt, und dann wird ein Detrend nach MA durchgeführt.

Es gibt keine Auslassungen im Händler, da n letzte Takte genommen werden. Sie sollten nicht rückgängig gemacht werden.

Ich glaube nicht, dass das viel bewirken würde. Ich glaube nicht, dass es einen großen Unterschied machen würde, aber ich werde es vielleicht noch einmal machen und sehen.

Nun, nicht neu machen, sondern einfach ausdrucken und mit dem Original vergleichen - wenn die Richtung stimmt
 
Ähnlich wie hier geschrieben wurde, dass es einfacher ist, einen vergangenen unbekannten Balken vorherzusagen als einen zukünftigen.
 
elibrarius:
Also nicht neu machen, einfach ausdrucken und mit dem Original vergleichen - wenn die Richtung nicht falsch ist
...        ...      ...
3267  0.001091  1.18140
3268  0.000421  1.18077
3269  0.001455  1.18191
3270  0.001636  1.18225
3271  0.001829  1.18258

[3258 rows x 2 columns]
>>>
...        ...      ...
3225  0.001091  1.18140
3226  0.000421  1.18077
3227  0.001455  1.18191
3228  0.001636  1.18225
3229  0.001829  1.18258

[3230 rows x 2 columns]

es ist ok, der letzte Wert entspricht dem Preis des letzten Balkens im Terminal

 

Ich werde meine Erfahrung teilen - bei der Verwendung von OHLC Werte der aktuellen Bar der oberen TF auf der Minute bar, sorgen für die Stabilität der Daten erhalten, kann es sehr wohl kritisch sein, wenn die Anwendung des Modells, weil niemand garantiert, dass der Preis ohne Berücksichtigung der Akkumulation von OHLC der aktuellen Minute bar erhalten wird.

Ich habe eine Funktion entwickelt, die dieses Problem löst.

//+------------------------------------------------------------------+
//|Получение информации о ценах OHLC текущего бара                   |
//+------------------------------------------------------------------+
void Get_OHLC(string symbol,ENUM_TIMEFRAMES TF, double &arr_OHLC[])
{
   ArrayResize(arr_OHLC,4);
   arr_OHLC[0]=iOpen(symbol,TF,0);
   arr_OHLC[3]=iOpen(symbol,PERIOD_M1,0);
   if(TF!=PERIOD_M1)
   {
      double arr_High[];
      double arr_Low[];
      int copied=0;
      datetime s=iTime(symbol,TF,0);
      datetime f=iTime(symbol,PERIOD_M1,1);
      if(s<f)
      {
         copied=CopyHigh(symbol,PERIOD_M1,s,f,arr_High);
         if (copied>0)
         {
            arr_OHLC[1]=arr_High[ArrayMaximum(arr_High,0,WHOLE_ARRAY)];
         }
         else
         {
            Print("Ошибка копирования в массив arr_High");
         }
         copied=CopyLow(symbol,PERIOD_M1,s,f,arr_Low);
         if (copied>0)
         {
            arr_OHLC[2]=arr_Low[ArrayMinimum(arr_Low,0,WHOLE_ARRAY)];
         }
         else
         {
            Print("Ошибка копирования в массив arr_Low");
         }
      }
      else
      {
         if(s==f)//Если ТФ открылся на прошлом минутном баре
         {
            arr_OHLC[1]=iHigh(symbol,PERIOD_M1,1);
            arr_OHLC[2]=iLow(symbol,PERIOD_M1,1);
         }
         if(s>f)//Если ТФ открылся на текущем минутном баре
         {
            arr_OHLC[1]=iOpen(symbol,PERIOD_M1,0);
            arr_OHLC[2]=iOpen(symbol,PERIOD_M1,0);
         }
      }
   }
   else
   {
      arr_OHLC[0]=iOpen(symbol,PERIOD_M1,0);
      arr_OHLC[1]=iOpen(symbol,PERIOD_M1,0);
      arr_OHLC[2]=iOpen(symbol,PERIOD_M1,0);
      arr_OHLC[3]=iOpen(symbol,PERIOD_M1,0);
   }
}
 
Aleksey Vyazmikin:

Ich werde meine Erfahrung teilen - bei der Verwendung von OHLC Werte der aktuellen Bar der oberen TF auf der Minute bar, stellen Sie sicher, die Stabilität der Daten erhalten, kann es sehr wohl kritisch sein, wenn die Anwendung des Modells, weil niemand garantiert, dass der Preis ohne Berücksichtigung der Akkumulation von OHLC der aktuellen Minute bar erhalten wird.

Ich habe eine Funktion entwickelt, die dieses Problem löst.

Ist es ein Terminalfehler oder was?
Ich dachte, dass mit dem ersten Tick, z.B. um 0:00 Uhr am Montag, automatisch alle Balken bis zum Wochenbalken erscheinen.

Wenn es sich um einen Fehler handelt, senden Sie bitte eine Anfrage mit Beschreibung und Code an servicedek zur Überprüfung. Wir werden dies in der nächsten Version beheben.

 
elibrarius:

Ist das ein Terminalfehler oder was?
Ich dachte, dass beim ersten Tick, z.B. um 0:00 Uhr am Montag, automatisch alle Balken bis zum Wochenbalken erscheinen.

Wenn es sich um einen Fehler handelt, senden Sie eine Anfrage mit Beschreibung und Code an servicedek zur Reproduktion. Dies wird in der nächsten Version behoben werden.

wird der Balken erst dann geöffnet, wenn der Tick für das Instrument empfangen wird. Es kann sein, dass es für eine sehr lange Zeit keine Zecke gibt ;-)

 
elibrarius:

Ist das ein Terminalfehler oder was?
Ich dachte, dass beim ersten Tick, z.B. um 0:00 Uhr am Montag, automatisch alle Balken bis zum Wochenbalken erscheinen.

Wenn es sich um einen Fehler handelt, senden Sie eine Anfrage mit Beschreibung und Code an servicedek zur Reproduktion. Dies wird in der nächsten Version behoben werden.

Es handelt sich um einen Fehler, nicht um eine Korrektur.

Die Situation kann wie folgt aussehen: Ein neuer Tick eines neuen Minutenbalkens kommt an und wir verwenden einen Indikator, der nicht vom ersten Tick an berechnet hat und den Tick überspringt oder einfach die Berechnung aller Prädiktoren durchführt, zu diesem Zeitpunkt geht und in der Mitte des Codes nach dem OHLC des aktuellen Balkens fragt. Der OHLC ändert sich ständig und kann im Falle eines MO entscheidend sein. Ich bin gerade selbst auf unterschiedliche Berechnungen von Prädiktoren gestoßen, die von der Art der Tick-Modellierung abhängen, und zwar bei Anwendung des Modells auf den Markt.

 

für die Terminologie, bitte beraten,

Ist "Prädiktor" nur eines der Elemente (einer der Werte) eines Vektors, der dem Training unterzogen wird?
nur ein Bündel von Bezeichnungen für dieselbe Sache.

 

Entschuldigung für die Frechheit!

Sie können diese Daten auch durch neuronale Netze laufen lassen, wenn Sie Zeit dafür haben, versteht sich.


EURUSD_options - diese Datei enthält alle möglichen Optionen, die in der Zeitreihe enthalten sein können.


EURUSD_data - die Zeitreihe selbst (der letzte empfangene Wert steht am Ende der Datei).

Es gibt drei Spalten, die erste ist das, was vorhergesagt werden sollte, die anderen beiden sind Varianten der Antworten.

Tatsächlich müssen wir NS beibringen, die richtige Variante aus zwei zu wählen. Wenn es möglich ist, den nächsten Wert von Spalten mit Antwortvarianten vorherzusagen, ist das auch in Ordnung.

Dateien:
 
Evgeny Dyuka:

für die Terminologie,

Ist "Prädiktor" nur eines der Elemente (einer der Werte) eines Vektors, der dem Training unterzogen wird?
nur ein Bündel von Bezeichnungen für dieselbe Sache.

Ja, Synonyme sind fetch, input, predictor.