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

 
Aleksey Nikolayev:


Das Einzige - um Lücken und Abflüsse von Kursen zu bekämpfen, ist es besser, close[i]-open[i] anstelle vonclose[i]-close[i-1] als Inkremente zu nehmen.


Ich verstehe, aber wie hilft das bei den Lücken in den Anführungszeichen? Ist es nicht besser, sie für H1 zu berücksichtigen?

"Es ist besser, close[i]-open[i] als Inkrement zu nehmen" - vielleicht ist eine prozentuale Änderung besser?
 
Aleksey Nikolayev:

Es ist nicht schwer, ich bin sicher, dass Sie es schaffen können, wenn Sie wollen. Das Einzige, was Sie tun sollten, ist, close[i]-open[i] anstelle vonclose[i]-close[i-1] als Inkremente zu verwenden, um Lücken und Abflüsse von Kursen zu kontrollieren.

close[i-1] und open[i] unterscheiden sich um 1 Tick. Welchen Sinn hat es, mit der 1. Zecke zu kämpfen?

 
Evgeniy Chumakov:


Ich verstehe, was mit Lücken passiert, aber wie hilft es, mit Preisrückgängen umzugehen? Ist es nicht besser, für H1 zu rechnen?

Wenn ein Takt = ein Inkrement ist, ist es kein Problem, wenn einige Takte verloren gehen. Wenn die Schrittweite durch zwei Balken gezählt wird, gibt es viele Ausschläge.

Evgeniy Chumakov:


"Wenn wir close[i]-open[i] als Inkremente verwenden wollen" - wäre es vielleicht besser, die prozentuale Veränderung zu verwenden?

Ja, so ist es besser. Sie können auch Logarithmus-Schritte verwenden.

 
elibrarius:

close[i-1] und open[i] unterscheiden sich um 1 Tick. Welchen Sinn hat es, mit 1 Zecke zu kämpfen?

Praktisch eine Garantie dafür, dass Lücken und Aussetzer in der Geschichte beseitigt werden.

 
Aleksey Nikolayev:

Es ist fast garantiert, dass Lücken und Lücken in der Geschichte beseitigt werden.

Eine Lücke kann bei jedem anderen Tick innerhalb einer Minute auftreten. Fehlende Balken sollten ab dem letzten bekannten Preis des letzten bekannten Balkens aufgefüllt werden.
 
elibrarius:
Eine Lücke kann bei jedem anderen Tick innerhalb einer Minute auftreten. Fehlende Balken sollten ab dem letzten bekannten Preis des letzten bekannten Balkens aufgefüllt werden.

Gleichmäßig auf die Balken verteilte Lücken sind nicht sehr beängstigend. Die unangenehmen sind diejenigen, die zu einer bestimmten Zeit zusammengedrängt sind, was in der Regel Lücken zwischen den Takten sind.

Die "verpassten" Takte sind ein zweideutiger Begriff, es kann sich um einen Feiertag, eine kurze Sitzung usw. handeln oder einfach um aus völlig unklaren Gründen ausgelassene Takte. Ich habe beschlossen, dass es einfacher ist, die Inkremente für einen Balken zu berechnen, als Sherlock Holmes zu zeigen, wie er mit mehreren einminütigen Balken des Zehnjahreszeitraums umgeht.

 
elibrarius:

Ich tue dies:

1) Ich erstelle ein Array von String-Indizes mit einer Länge, die der Anzahl der Strings entspricht, und fülle es mit Werten von 0 bis N Strings

2) Ich mische diese Anordnung

Dabei ist RandomInteger() eine beliebige Variante der

3) dann nehme ich alle Werte dieser Indizes in einer Schleife und durch sie aus dem Haupt-Array die erforderliche Zeichenfolge, es stellt sich heraus, Pseudo-Zufall nach dem Mischen der Indizes zu sein

Ich habe diesen Algorithmus mit der Zufallsfunktion ausprobiert, die ich zuvor angegeben habe. Es stellt sich heraus, dass es eine Verschiebung zur ersten Hälfte des numerischen Arrays gibt, wenn man die ersten n Werte des resultierenden Arrays nimmt und dann das Array der Reihe nach filtert. Und die Gruppen in einer Reihe werden beobachtet, was auch nicht gut ist, aber besser als nichts.

 
Aleksey Vyazmikin:

Ich habe diesen Algorithmus mit der Zufallsfunktion ausprobiert, die ich zuvor angegeben habe. Es stellt sich heraus, dass es einen Versatz zur ersten Hälfte der Zahlenreihe gibt, wenn man die ersten n Werte aus dem resultierenden Array nimmt und dann das Array der Reihe nach filtert. Und die Gruppen in einer Reihe werden beobachtet, was auch nicht toll ist, aber besser als nichts.

Seltsam. Ich frage mich, wie sich das erklären lässt?
Ich habe eine andere Version auskommentiert, die mir aber aus logischen Gründen nicht gefallen hat:

        for (int r = 0; r<rows; r++) {//перебор train участка
                //j = r + RandomInteger(rows - r);//номер строки с которой поменять  
                j = RandomInteger(rows);//номер строки с которой поменять - так равномернее. Формулой выше меняются последние с последними. А тут с любыми.
                c = idx[r]; idx[r] = idx[j]; idx[j] = c;
        }

Welche RandomInteger() verwenden Sie? Ich verwende XOR.

 
elibrarius:

close[i-1] und open[i] unterscheiden sich um 1 Tick. Was bringt es, mit 1 Zecke zu kämpfen?

Du liegst falsch), unterscheiden sie sich nicht um 1 Tick, diese Werte werden gleich sein. Nur im Falle einer Lücke wird es einen Unterschied geben. Ja, close[i-1] wird nicht funktionieren))) für einen neuen Takt
 
Alexander Alekseyevich:
Sie sind falsch) sie unterscheiden sich nicht um 1 Tick, diese Werte werden gleich sein.

https://www.mql5.com/ru/docs/runtime/testing

Ein neuer Minutenbalken öffnet sich nicht, wenn eine neue Minute beginnt (die Anzahl der Sekunden wird zu 0), sondern wenn ein Tick kommt - eine Preisänderung von mindestens einem Punkt.

Документация по MQL5: Программы MQL5 / Тестирование торговых стратегий
Документация по MQL5: Программы MQL5 / Тестирование торговых стратегий
  • www.mql5.com
Идея автоматической торговли привлекательна тем, что торговый робот может без устали работать 24 часа в сутки и семь дней в неделю. Робот не знает усталости, сомнений и страха, ему не ведомы психологические проблемы. Достаточно четко формализовать торговые правила и реализовать их в виде алгоритмов, и робот готов неустанно трудиться. Но прежде...