Bibliotheken: BestInterval - Seite 11

[Gelöscht]  
fxsaber:

Das scheint nicht viel zu sein. Hier ist noch etwas zu beachten. ML und BestInterval sind unterschiedliche Konzepte. ML sucht nach TC, BestInterval sucht nicht nach irgendetwas.

Ich frage mich, wie ein Beispiel wie dieses funktionieren würde. Angenommen, ML hat 100 Parameter und findet einen TC. Was wird am Ende besser sein, ML100 + BestInterval10 oder ML110?

Nun, da nicht wenige... man muss die Prädiktoren irgendwie berücksichtigen, 1 Parameter für jeden ist das Minimum.

Ich denke, es wird +- das gleiche sein. Ich setze einfach Handelsintervalle manuell, z.B. in der Nachtsitzung - trainiert immer noch nach. D.h. wenn man das beste Intervall für etwas entfernt, verschwindet der Overfit nicht.

 
Maxim Dmitrievsky:

Ich setze die Handelsintervalle einfach manuell, zum Beispiel in der Nachtsitzung - und trainiere trotzdem weiter.

Über diesen Satz kann man nur schmunzeln, denn er bedeutet "noch kein Gral".

Meiner Meinung nach ist ML für BigData relevant. Und Preisreihen können nicht BigData genannt werden, auch nicht mit einem nyatyatyazhka BigData.

Deshalb ist mein Ansatz etwas anders - konservativ. Ich recherchiere (ein wenig) und natürlich schaue ich (es ist dumm, es nicht zu tun). Dann schreibe ich und beobachte die Ausgabe. BestInterval ist natürlich unverzichtbar geworden.

Gleichzeitig nehme ich irgendein cooles Stück echtes Cotir (mit bestimmten Eigenschaften) und rase mit Ideen darauf herum. Der grundlegende Unterschied zu ML besteht darin, dass ich immer verstehe, warum es auf diese Weise gehandelt wird und nicht andersherum.

[Gelöscht]  
fxsaber:

Über diesen Satz kann man nur schmunzeln, denn er bedeutet "noch nicht der Gral".

Meiner Meinung nach ist ML für BigData relevant. Und Preisreihen kann man nicht als BigData bezeichnen, auch nicht mit ein wenig BigData.

Deshalb ist mein Ansatz auch etwas anders - konservativ. Ich recherchiere (ein wenig) und natürlich schaue ich nach (es wäre dumm, es nicht zu tun). Dann schreibe ich und beobachte die Ausgabe. BestInterval, natürlich, ist unverzichtbar geworden.

Gleichzeitig nehme ich irgendein cooles Stück echtes Cotir (mit bestimmten Eigenschaften) und rase mit Ideen darauf herum. Der Hauptunterschied zu ML ist, dass ich immer verstehe, warum es auf diese Weise handelt und nicht andersherum.

Ich wollte Nachrichten hochladen, da kann es wirklich interessant werden, aber sie haben keine API für den eingebauten Kalender gemacht, aber ich denke, sie wollten es. Ich bin zu faul zum Parsen.

ja, mir ist klar, dass ein ml nicht ausreicht :) bestinterval ist an sich eine sehr coole Sache, danke dafür.

 

Wenn jemand einen kritischen Fehler bei OnTester hat, geben Sie mir die Daten, um ihn zu reproduzieren. Ich habe noch nie einen gehabt.


ZY Aktualisiert mit Virtual.

 

Es wird gefragt, ob es möglich ist, BestInterval dazu zu bringen, das beste Intervall nicht für den Gewinn, sondern z. B. für den Erholungsfaktor (RF) oder den Gewinnfaktor (PF) (jede Variante) zu finden?


Für den PF liegt die Antwort auf der Hand, denn der maximale PF wird erreicht, wenn es nur einen Handel in der Historie gibt. Und dieses Geschäft muss positiv sein. Daher, natürlich, nein.

Für PF ist die Situation ungefähr die gleiche. Die Sache ist die, dass BestInterval von FB nur per Saldo berechnen kann. Daher ist die Historie eines Geschäfts (positiv) genug. Die Antwort ist also dieselbe.


Aber wenn es um andere Optimierungskriterien geht, muss man das genauer erklären. Und das ist der Grund, warum ich es in der Verzweigung tue. Der Kern von BestInterval ist ein nicht komplizierter und sehr effizienter (One-Pass) Algorithmus. Wenn zum Beispiel 1000 Trades gemacht werden, berechnet BestInterval das beste Intervall für 1000 einfache Operationen. BestInterval basiert auf diesem Algorithmus (er kann auf Wochen, nicht nur auf Tage angewendet werden) und auf keinem anderen. Dies ist der Punkt, an dem die Geschwindigkeit einen großen Unterschied macht - die Optimierung. Aus diesem Grund sind die Berechnungen zeitlos - sofort.


BestInterval arbeitet nicht nach dem Prinzip "wegwerfen - anschauen, wegwerfen - anschauen,..., bis es voll ist". Sonst wäre es wahnsinnig langsam. Deshalb funktioniert es nur, um den absoluten Gewinn aus der Geschichte der Trades zu erhöhen. Und deshalb ist es sehr sinnvoll, die biblah bei der Optimierung für TS im Constant-Lot-Modus zu verwenden. Und MM sollte verwendet werden, nachdem BestInterval berechnet wurde.


Es gibt jedoch eine (noch nicht implementierte) Möglichkeit, die Suche nach dem besten Intervall für den maximalen Gewinn nicht absolut, sondern relativ (d.h. mit Reinvestition) zu gestalten. Solche (und andere) Funktionen sind geplant...


Im Moment (es war ursprünglich in der Bibliothek, wurde aber nur für mich selbst belassen - ohne Beschreibung) gibt es eine Möglichkeit. Wenn Sie eine solche Zeile schreiben

#define  BESTINTERVAL_ONTESTER_FORMULA BestInterval.GetProfit() * BestInterval.GetRecoveryFactor()

schreiben, wird OnTester bei der Optimierung den farblich hervorgehobenen Wert zurückgeben. In diesem Fall ist es Gewinn * FV. Sie können diese Formel durch eine beliebige andere Formel (einen beliebigen Ausdruck, einschließlich Funktionsaufrufe) ersetzen. In diesem Fall sind die folgenden Teilnehmer von BestInterval verfügbar:

BestInterval.GetProfit()
BestInterval.GetProfitPlus()
BestInterval.GetProfitMinus()
BestInterval.GetTotal()
BestInterval.GetTotalPlus()
BestInterval.GetTotalMinus()
BestInterval.GetProfitFactor()
BestInterval.GetMean()
BestInterval.GetMaxDrawDown()
BestInterval.GetRecoveryFactor()

Aus ihren Namen ist ersichtlich, welche Informationen sie enthalten. Daher ist es möglich, einen benutzerdefinierten OnTester zu setzen, aber die entsprechenden BestInterval-Werte zu verwenden.


Wenn Sie also eine gute Variante nach einem anderen Kriterium suchen, setzen Sie die Formel, die Sie brauchen, und der Optimierer wird finden, was Sie brauchen. Verstehen Sie aber, dass BestInterval für jeden Durchgang erstellt wurde, um den Gewinn zu maximieren, und Ihr Optimierungskriterium hilft Ihnen nur (BestInterval ist davon nicht betroffen), schnell eine gute Variante aus Ihrer Sicht zu finden.


ZY Es gibt verschiedene Methoden in der Bibliothek, um sie beim Programmieren zu verwenden. Ich bin mir fast sicher, dass das niemand machen wird, deshalb wird dieser Teil gar nicht beschrieben. Wenn Sie es wirklich brauchen, gibt es einen Standardweg

Anhand des Quellcodes ist die Bedeutung schnell klar.

Ich habe die Methoden markiert, die ich für die weitere Verwendung der Berechnungsergebnisse bei der Erstellung von Robotern in der Praxis für wichtig halte.

 

Ich dachte, es wäre logisch, das BestInterval-Prinzip zu verallgemeinern. In der Tat ist BestInterval eine Klassifizierung der Transaktionen nach OrderOpenTime. Aber niemand hindert uns daran, nach einem anderen Kriterium zu klassifizieren.

Wir wissen zum Beispiel, wie hoch der МАшка zum Zeitpunkt der Positionseröffnung war (wir werden ihn in den OrderComment schreiben). Dementsprechend können alle Positionen in der Handelshistorie mit diesen MA-Werten verglichen werden.

Und dann wenden wir BestInterval auf diese MAs an. Und am Ausgang erhalten wir die Bereiche von МАшки, in denen Positionen eröffnet werden sollten, und in denen nicht.


Natürlich können Sie anstelle eines MA eine beliebige numerische Funktion verwenden. Als Ergebnis können Sie coole Filter finden, die die Zeit übertreffen.

[Gelöscht]  
fxsaber:

Natürlich können Sie anstelle des MA auch eine beliebige numerische Funktion verwenden. Die Quintessenz ist, dass Sie coole Filter finden können , die die Zeit übertreffen.

Aus welchem Wissensbereich stammt das?

Sie machen ML, Sir, nur auf Ihre eigene, sehr seltsame Art :)

und wenn ja, dann sollten Sie es nach ML-Kanon machen, mit Unterteilung in Training, Test und Validierung, mit Verallgemeinerung der Auswertungen.

 
Maxim Dmitrievsky:

Aus welchem Wissensbereich stammt das?

Das Kriterium der Überlegenheit ist die Steigerung des Gewinns bei der Trainingsstichprobe mit der gleichen Anzahl von geworfenen "Intervallen" (Eingangsvariablen).

Ich sehe keinen Grund, warum eine zufällig gewählte Uhrzeit (wir sind nur daran gewöhnt) besser sein sollte als andere Indikatoren.

Ja, wir können sagen, dass die Tages-/Wochenzeit einen direkten Einfluss auf das menschliche Leben hat, und daraus erwachsen die Beine der Marktmuster. Aber der Algo-Handel hat bereits einen erheblichen Anteil am Umsatz, und deshalb ist es durchaus sinnvoll, andere Funktionen zu verwenden, die aus demselben Grund der Uhrzeit überlegen sein können.

Es sollte nach dem ML-Kanon vorgegangen werden, mit Trennung in Training, Test und Validierung, mit Verallgemeinerung der Auswertungen

Ich werde nichts dergleichen tun, denn das ist eine endlose Gralssuche. Es muss eine potenziell rentable ML geben - das ist die erste Voraussetzung.

Ehrlich gesagt ist es seltsam, dass ML-Methoden nicht einmal in die Nähe der einfachsten TesterEA kommen können. Wahrscheinlich graben ML-Adepten alles auf einmal aus.

[Gelöscht]  
fxsaber:

Ich werde nichts dergleichen tun, denn das ist eine endlose Suche nach dem Gral. Es muss einen potenziell rentablen TS geben - das ist die erste notwendige Bedingung.

Ehrlich gesagt ist es seltsam, dass ML-Methoden nicht einmal in die Nähe des einfachsten TesterEA kommen können. Wahrscheinlich graben ML-Adepten alles auf einmal aus.

Das Problem ist, dass die lokalen ML-Adepten nicht nur in ML, sondern auch in der Programmierung null Niveau haben. Die Amateure sind Einzelgänger. Aber alles entwickelt sich... sehr langsam :)

Es gibt ein eindeutiges Gödel-Theorem, das die Notwendigkeit eines externen Bewertungskriteriums besagt, das ein Kriterium für das Testintervall sein kann, aber nicht für das Trainingsintervall.

 
Maxim Dmitrievsky:

Das Problem ist, dass die lokalen ML-Adepten nicht nur in ML, sondern auch in der Programmierung null Niveau haben. Die Amateure sind Einzelgänger. Aber die Dinge entwickeln sich... sehr langsam :)

Es gibt ein eindeutiges Gödel-Theorem, das besagt, dass ein externes Bewertungskriterium erforderlich ist, das ein Kriterium für das Testintervall sein kann, aber nicht für das Trainingsintervall.

95% der ML-Macher nehmen EURUSD-Kurse. Sie kümmern sich nicht einmal um die Qualität der Notierungen. Und sie beginnen zu leiden.

Warum nicht GBPUSD? Warum Notierungen von MQ und nicht von einer anderen Quelle? Warum M1 und nicht M2, usw. Eine elementare Frage noch vor der Anwendung eines ML, die grundlegend ist. Aber nein, die Hauptsache ist, TensorFlow oder CatBoost zu verbinden.


Der schwierigste Trick für den besten ML-Händler der Welt ist es, SB zu geben und zu überzeugen, dass sie Kotirs sind. Das ist genug Forschung für den Rest deines Lebens.