Diskussion zum Artikel "Mit der Monte-Carlo-Methode Handelsstrategien optimieren"

 

Neuer Artikel Mit der Monte-Carlo-Methode Handelsstrategien optimieren :

Bevor wir einen Roboter auf einem Handelskonto starten, testen und optimieren wir ihn in der Regel anhand der Kurshistorie. Es stellt sich jedoch die berechtigte Frage: Wie können uns die Ergebnisse der Vergangenheit in Zukunft helfen? Der Artikel beschreibt die Anwendung der Monte-Carlo-Methode, um benutzerdefinierte Kriterien für die Optimierung der Handelsstrategie zu erstellen. Zusätzlich werden die EA-Stabilitätskriterien berücksichtigt.

Erklären wir alles von oben durch die Grafik. Sie zeigt mehrere Kapitalkurven. Jede wird durch eine eigens erzeugte Reihenfolge der Positionen bestimmt. Der Übersichtlichkeit halber sind die Kurven in verschiedenen Farben dargestellt. Tatsächlich ist ihre Zahl aber viel größer - es sind mehrere zehntausend. Für jeden von ihnen berechnen wir die notwendigen Parameter und treffen statistische Schlussfolgerungen auf der Grundlage ihrer Gesamtheit. Die wichtigste dieser Eigenschaften ist natürlich der Endgewinn.

Generierte Kapitalkurven

Andere Ansätze zur probabilistischen Formalisierung und weiteren EA-Operationsmodellierung sind ebenfalls möglich. Zum Beispiel können wir anstelle von Handelsfolgen Preisfolgen simulieren und die Gesamtgewinne untersuchen, die ein EA mit ihnen erzielt hat. Das Prinzip der Generierung von Preisreihen kann je nach Aufgabenstellung gewählt werden. Diese Methode benötigt jedoch viel mehr Rechenleistung. Darüber hinaus bietet MetaTrader derzeit keine regulären Möglichkeiten, das auf beliebige EAs anzuwenden.

Autor: Aleksey Nikolayev

 

Функция setks() вычисляет массив прибылей сделок, исходя из истории торговли. 

bool setks(double &k[])
  {
   if(!HistorySelect(0,TimeCurrent())) return false;
   uint nhd=HistoryDealsTotal();
   int nk=0;
   ulong hdticket;
   double capital=TesterStatistics(STAT_INITIAL_DEPOSIT);
   long hdtype;
   double hdcommission,hdswap,hdprofit,hdprofit_full;
   for(uint n=0;n<nhd;++n)
     {
      hdticket=HistoryDealGetTicket(n);
      if(hdticket==0) continue;

      if(!HistoryDealGetInteger(hdticket,DEAL_TYPE,hdtype)) return false;
      if(hdtype!=DEAL_TYPE_BUY && hdtype!=DEAL_TYPE_SELL) continue;

      hdcommission=HistoryDealGetDouble(hdticket,DEAL_COMMISSION);
      hdswap=HistoryDealGetDouble(hdticket,DEAL_SWAP);
      hdprofit=HistoryDealGetDouble(hdticket,DEAL_PROFIT);
      if(hdcommission==0.0 && hdswap==0.0 && hdprofit==0.0) continue;

      ++nk;
      ArrayResize(k,nk,NADD);
      hdprofit_full=hdcommission+hdswap+hdprofit;
      k[nk-1]=1.0+hdprofit_full/capital;
      capital+=hdprofit_full;
     }
   return true;
  }

Die hervorgehobene Vermutung ist, dass einige Abschlussgeschäfte mit Null-Gewinn irgendwie nicht in der Stichprobe enthalten sind, während einige Eröffnungsgeschäfte enthalten sind.

Versuchen Sie DEAL_ENTRY.


Müssen Swaps und Provisionen bei der Analyse von Monte-Carlo-Geschäften berechnet werden? Sie haben keinen systemischen Wert.

Ich würde empfehlen, das Verhältnis von Eröffnungs- und Schlusskurs als Gewinn zu verwenden. Hier können wir über die Frage diskutieren, ob Lose berücksichtigt werden sollten.

 

Einerseits wird angenommen, dass die Geschäfte unabhängig sind.

Andererseits ist es schwierig, sich einen TS vorzustellen, bei dem die Geschäfte unabhängig sind.


Wenn Sie beispielsweise bereits eine Position offen haben, können Sie diesen Umstand nicht ignorieren, wenn Sie sich entscheiden, einen Handel zu tätigen.

Es stellt sich heraus, dass Monte-Carlim ein nicht zufälliger Wert ist. Oder habe ich etwas nicht verstanden?

 
fxsaber:

Die hervorgehobene Annahme ist, dass einige Abschlussgeschäfte mit Null-Gewinn irgendwie nicht in der Stichprobe enthalten sind, während einige Eröffnungsgeschäfte enthalten sind.

Versuchen Sie DEAL_ENTRY.

Zur Vereinfachung des Modells betrachten wir nur solche Geschäfte, die die Kapitalkurve beeinflussen.

 
fxsaber:

Müssen Swaps und Provisionen bei der Analyse von Monte-Carlo-Geschäften berechnet werden? Sie haben keinen systemischen Wert.

Das hängt vom EA-Gerät ab, denke ich. Wenn ihr Wert klein ist, hat er keinen Einfluss auf die Berechnung des Optimierungskriteriums, wenn er groß ist, verzerrt die Vernachlässigung die Optimierungsergebnisse.

 

fxsaber:

Ich würde empfehlen, das Verhältnis von Eröffnungs- und Schlusskurs als Gewinn zu verwenden. Hier können wir das Thema "Sollten Lose berücksichtigt werden?" diskutieren.

Was Sie ansprechen, ähnelt dem, was ich in dem Artikel über das Risiko als Rentabilität bezeichnet habe . In diesem Artikel untersuchen wir den EA von innen, während wir ihn hier als gegeben ansehen - eine "Black Box", und die Verwaltung der Handelsgröße ist ein integraler Bestandteil davon. Das bedeutet, dass die Verteilung der Gewinne ganz anders aussehen kann als die Verteilung der Erträge. Wenn wir uns also nur auf die Erträge verlassen, werden wir einen ganz anderen EA optimieren.

 
fxsaber:

Einerseits wird davon ausgegangen, dass die Transaktionen unabhängig sind.

Andererseits ist es schwierig, sich ein TS vorzustellen, in dem die Transaktionen unabhängig sind.


Wenn Sie beispielsweise bereits eine offene Position haben, können Sie diesen Umstand nicht ignorieren, wenn Sie sich entscheiden, einen Handel zu tätigen.

Es stellt sich heraus, dass Monte-Carlim ein nicht zufälliger Wert ist. Oder habe ich etwas nicht verstanden?

Natürlich ist die Unabhängigkeit der Handelsgeschäfte eine Idealisierung. Wenn sich zwei Geschäfte zeitlich kaum überschneiden, können wir sie als unabhängig betrachten, da die Preise in erster Näherung als Zufallsprozess mit unabhängigen Inkrementen betrachtet werden können. Das heißt, Unabhängigkeit und Zufälligkeit werden durch den Ausgangspreis des Geschäfts bestimmt. Der Einfachheit halber ist ein Geschäft hier das, was in MT4 eine Position genannt wird. Ich habe bereits versucht, in diesem Artikel einige Überlegungen zum Thema Unabhängigkeit von Trades anzustellen.
 
Aleksey Nikolayev:
Natürlich ist die Unabhängigkeit der Abschlüsse eine Idealisierung. Wenn sich zwei Geschäfte zeitlich nicht stark überschneiden, können wir sie als unabhängig betrachten, da die Preise in erster Näherung als Zufallsprozess mit unabhängigen Inkrementen betrachtet werden können. Das heißt, Unabhängigkeit und Zufälligkeit werden durch den Ausgangspreis des Geschäfts bestimmt. Der Einfachheit halber ist ein Geschäft hier das, was in MT4 eine Position genannt wird. Ich habe bereits versucht, in diesem Artikel einige Überlegungen zum Thema der Unabhängigkeit von Trades anzustellen.

Aber was ist mit den anderen Geschäften, die nicht geöffnet wurden, weil sie bereits geöffnet waren? Und was ist mit den Geschäften, die nach den Signalen der gleichen Toruslogik eröffnet wurden, die aber nur das Glück hatten, dass zum Zeitpunkt des Handelssignals keine anderen Geschäfte offen waren?

Hierin liegt ein gewisser Widerspruch. Vielleicht wäre es sinnvoll, die Handelssignale zu monetarisieren. Sie hängen wirklich nicht voneinander ab, da sie nur eine Funktion des Preises sind.

 
fxsaber:

Aber andere Geschäfte, die nicht geöffnet wurden, weil sie bereits geöffnet waren - was ist mit ihnen? Und die Geschäfte, die nach den Signalen der gleichen Torus-Logik eröffnet wurden, die aber nur das Glück hatten, dass zum Zeitpunkt ihres Eröffnungssignals keine anderen Geschäfte offen waren - sind sie etwas Besonderes?

Hierin liegt ein gewisser Widerspruch. Vielleicht wäre es sinnvoll, Handelssignale zu monetarisieren. Sie hängen wirklich nicht voneinander ab, da sie nur eine Funktion des Preises sind.

Der Ansatz des Artikels ist ja gerade, dass wir nicht auf die Logik des Expert Advisors eingehen, sondern das Ergebnis seiner Arbeit "so nehmen, wie es ist". Ihr Ansatz wird wahrscheinlich genauere Ergebnisse liefern, erfordert aber viel mehr Arbeit bei der Programmierung und Analyse der Ergebnisse.
[Gelöscht]  

Vielen Dank für den Artikel, aber ich habe die Tests auf der Vorderseite nicht gesehen, da das Hauptziel darin bestand, die Robustheit des TS auf der neuen Probe durch die Einführung neuer Optimierungskriterien zu verbessern.

Aber es gibt eine Menge zu bedenken.

 
Maxim Dmitrievsky:

wurden keine Tests mit dem Stürmer durchgeführt, da das Hauptziel darin bestand, die Stabilität des TS bei einer neuen Probe durch die Einführung neuer Optimierungskriterien zu verbessern

Sie haben Recht, es fehlt daran. Aber für ein aussagekräftiges Ergebnis wäre es notwendig, sie für eine ausreichend große Anzahl von Zeitintervallen, Symbolen und EAs durchzuführen (Gesetz der großen Zahlen). Es war nicht beabsichtigt, den Artikel zu sehr aufzublähen.