Die Selbsttäuschung des Händlers: Misstrauen gegenüber der Zukunft. - Seite 2

 
Youri Tarshecki:

Jeder kann die einfachste Erfahrung machen - Handelsergebnisse auf einem Demokonto abrufen und das gleiche System mit den gleichen Einstellungen in seinem Testgerät für den gleichen Zeitraum laufen lassen. D.h. einen realen und einen virtuellen Stürmer zu testen und zu vergleichen.

Dies ist kein gültiger Vergleich, da der Strategietester nur 4 Quotierungen für die Bar Open, Close, Max und Min verwendet. In der Regel arbeiten Expert Advisors mit allen Intra-Bar-Quotierungen auf Demo- oder Realkonten.

Youri Tarshecki:

In der Tat ist die Simulation des Systemverhaltens durch einen nicht optimierten Zeitraum die effizienteste Art der Analyse für einen Händler. Der Realitätscheck ist natürlich der zuverlässigste Weg, aber leider muss man ewig leben, um alle Varianten in echten Konten durchzugehen. D.h. die Modellierung wie in der Vergangenheit ist der effektivste Weg der Forschung. Aber warum sind dann die Stürmer bei den Diskussionen nicht dabei? Vielleicht liegt es daran, dass es keine praktische Software für die Verarbeitung und Analyse der Ergebnisse mehrerer Tests gibt, sowohl für die Rück- als auch für die Vorwärtsanalyse?

Ich stimme mit Ihnen überein. Sie scheinen das oft zu tun. Bitte sagen Sie mir, welches Finanzinstrument Sie für eine solche Analyse bevorzugen. Ich habe einen EA, der nur bei der Balkeneröffnung ausgelöst wird, und ich möchte ihn mit einer ähnlichen Modellierung testen.

 

 Скажите пожалуйста какой финансовый инструмент Вы предпочитаете для подобного анализа. У меня есть советник который срабатывает только на открытие бара. Хочу проверить его подобным моделированием.

Was ich damit sagen will, ist, dass die Testmethodik, unabhängig vom Werkzeug, Vorwärtsbewegungen beinhalten sollte. Aber die Menschen ignorieren sie massenhaft. Diejenigen, die sie verwenden, schätzen sie in der Regel nach Augenmaß. Mit anderen Worten: Es gibt keine Programme, die objektive Maßstäbe für die Bewertung von Vorleistungen einführen würden.
 
Youri Tarshecki:
Was ich damit sagen will, ist, dass die Testmethodik, unabhängig vom Werkzeug, Vorwärtsbewegungen beinhalten sollte. Aber die Menschen ignorieren sie massenhaft. Diejenigen, die sie verwenden, schätzen sie in der Regel nach Augenmaß. Das heißt, es gibt keine Programme, die objektive Standards für die Bewertung von Vorleistungen einführen würden.
Verschiedene Instrumente haben unterschiedliche Eigenschaften des Marktverhaltens. Einbeziehung der "Trägheit der Rentabilität" in den Vorwärtstest. Deshalb wollte ich fragen: Haben Sie ein Instrument (oder eine Art von Instrument) gefunden, das bei Ihren Experimenten die besten Ergebnisse liefert, wenn alle anderen Dinge gleich sind?
 
Youri Tarshecki:
Was ich meine, ist, dass die Testmethodik unabhängig vom Instrument auch Vorwärtsbewegungen beinhalten sollte. Aber die Menschen ignorieren sie massenhaft. Diejenigen, die sie verwenden, schätzen in der Regel nach Augenmaß. Das heißt, es gibt keine Programme, die objektive Standards für die Bewertung von Vorleistungen einführen würden.

Massives Ignorieren von Vorwärtstests. Der Grund dafür ist einfach: Ein erfolgreicher Forward zeigt nur an, dass der Markt auf dem Forward-Abschnitt ähnlich ist wie der Optimierungsabschnitt. Strategy Tester passt sich perfekt an die aktuelle Marktdynamik an. Folglich erhalten wir nach der Aufteilung des Optimierungsabschnitts in 12 Vorwärtsabschnitte 12 voneinander unabhängige Parametersätze, von denen jeder 11 von 12 Zeitabschnitten abdeckt. Stattdessen ist es besser, einen, wenn auch gemittelten, Satz von Parametern für eine lange Geschichte zu finden, als von einem Satz von Parametern zum anderen zu eilen.

Der Markt ändert sich nicht, es ist nur so, dass jedes Handelssystem nur einen bestimmten Zustand des Marktes erfasst, und der Markt hat viele dieser Zustände.

 
Es ist besser, den Stürmern nicht zu vertrauen, als ihnen zu vertrauen. Und wenn doch, dann nur, wenn Sie die WFA
 
Vasiliy Sokolov:

Massives Ignorieren von Vorwärtstests. Der Grund dafür ist einfach: Ein erfolgreicher Forward zeigt nur an, dass der Markt auf dem Forward-Abschnitt ähnlich ist wie der Optimierungsabschnitt. Strategy Tester passt sich perfekt an die aktuelle Marktdynamik an. Folglich erhalten wir nach der Aufteilung des Optimierungsabschnitts in 12 Vorwärtsabschnitte 12 voneinander unabhängige Parametersätze, von denen jeder 11 von 12 Zeitabschnitten abdeckt. Stattdessen ist es besser, einen, wenn auch gemittelten, Satz von Parametern für eine lange Geschichte zu finden, als von einem Satz von Parametern zum anderen zu eilen.

Der Markt ändert sich nicht, es ist nur so, dass jedes Handelssystem nur einen bestimmten Zustand des Marktes erfasst, und von diesen Zuständen gibt es viele auf dem Markt.

Sie können den "optimierten Abschnitt nicht in 12 Vorwärtsabschnitte" unterteilen, da ein Vorwärtsabschnitt per Definition ein nicht optimierter Abschnitt ist. Das heißt, Sie stellen die Methode der Vorwärtsprüfung selbst und die bloße Idee der Mittelwertbildung einander gegenüber.

Der Zweck eines Forward ist es, herauszufinden, wie sich der Berater in einer Situation mit nicht optimierter Zukunft verhält. Was Sie ansprechen, hat eher damit zu tun, das beste Stück Geschichte für die Optimierung zu finden. D.h. wenn Sie glauben, dass die lange Historie besser funktioniert, kein Problem, lassen Sie uns den Tester mit 2 Jahren Zurück - 1 Jahr Vorwärts laden. Und dann 2 Monate zurück - 1 Monat vorwärts 12 Mal. Wenn die Vorwärtsleistung des ersten Ansatzes besser ist als die Summe der Vorwärtsleistung des zweiten Ansatzes, dann ist der erste Ansatz besser und umgekehrt. Allein die Tatsache, dass Sie den Expert Advisor optimieren, deutet darauf hin, dass Sie an die Trägheit des Marktes glauben, aber einfach glauben, dass sie sich in einem wesentlich größeren Zeitraum manifestiert. Aber es ist ja nicht so, dass Sie die gesamte verfügbare Historie von 30 Jahren optimieren, so dass Sie auch die Volatilität des Marktes berücksichtigen müssen. Es ist ein ewiger Widerspruch zwischen Konstanz und Variabilität, aber durch den Vergleich von Stürmen aus verschiedenen Testperioden kann man besser verstehen, wie dieser Widerspruch in der Realität aufgelöst wird. Bis Sie das überprüft haben - ist Ihre Aussage rein intuitiv oder nur Gewohnheit.

 
Youri Tarshecki:
Angenommen, ich verwende OnTesterPass im Code eines EAs, den ich gerade teste. Woher weiß sie, dass es sich um einen zukunftsorientierten Lauf handelt und nicht um einen gewöhnlichen variablen Optimierungslauf? Und selbst wenn er es schafft, werden es verschiedene Dateien sein, und wir brauchen eine Tabelle für viele Stürme eines EAs. Und dann noch eine Tabelle, und noch eine für eine andere, und das alles in einer Datei.

Soweit ich mich erinnere, habe ich das so gemacht - ich habe die Zeit des ersten Handels im Rahmen gespeichert - das ist die "Bilanz". Wenn also die Parameter und Indikatoren aller Läufe in einer Datei aufgezeichnet werden, ist es einfach, den Backtest vom Forwardtest durch zwei unterschiedliche Daten zu unterscheiden. Ich habe alle Läufe in genau einer Datei gespeichert (geöffnet in OnTesterInit und geschlossen in OnTesterDeinit).

Die Einzelheiten finden Sie hier:

Forum zum Thema Handel, automatische Handelssysteme und Testen von Handelsstrategien

Arbeiten mit Frames

Stanislav Korotky, 2014.11.07 15:23

Im OnTester-Handler können Sie mit FrameAdd eigene Frames mit Daten hinzufügen - wichtig ist, dass dies alles im Test-Agenten geschieht, der auch remote sein kann (z. B. in der Cloud).

OnTesterInit, OnTesterDeinit, OnTesterPass werden auf dem Terminal aufgerufen, auf dem der Test-/Optimierungsprozess gestartet wird und von dem aus die Aufgaben an die Agenten verteilt werden. Innerhalb von OnTesterPass können Sie auf alle Frames zugreifen, die den Testagenten mit FrameAdd hinzugefügt wurden, etwa so (aus dem alten EA entnommen, möglicherweise nicht kompilierbar):

void OnTesterPass()
{
  string  name;
  ulong   pass;
  long    id;
  double  value, data[];
  string  params[];
  uint    par_count;
  string  output = "";
  ushort eq = StringGetCharacter("=", 0);

  while(FrameNext(pass, name, id, value, data)) // data - массив положенный во фрейм с помощью FrameAdd
  {
    output = pass + ";" + (data[0]);
    
    for(int i = 1; i < 10; i++) output += ";" + data[i];
    
    if(FrameInputs(pass, params, par_count))
    {
      for(uint i = 0; i < par_count; i++)
      {
        string pair[];
        int n = StringSplit(params[i], eq, pair);
        if(n == 2)
        {
          long pvalue, pstart, pstep, pstop;
          bool enabled = false;
          if(ParameterGetRange(pair[0], enabled, pvalue, pstart, pstep, pstop))
          {
            if(enabled)
            {
              output += ";" + pair[1];
            }
          }
        }
      }
    }
    
    output += "\n";
    // TODO: FileWriteString(fhandle, output);
  }
}

und hier:

Forum zum Thema Handel, automatische Handelssysteme und Testen von Handelsstrategien

Arbeiten mit Frames

Stanislav Korotky, 2014.11.07 20:15

Sie sollten, wie ich oben geschrieben habe, während des Laufs Bilder hinzufügen. Wenn der EA Parameter hat, sollten Sie diese innerhalb des Frames zusammen mit Ihren Daten erhalten, d.h. params sollte nicht leer sein. Hier ist ein weiterer Code aus demselben Expert Advisor.

int fhandle = -1;

void OnTesterInit()
{
  // готовим каким-то образом файл, как нам нужно
  fhandle = FileOpen("tester-" + _Symbol + GetTickCount() + ".csv", FILE_WRITE|FILE_CSV|FILE_ANSI);
  FileWriteString(fhandle, "Pass;First;LR;Profit;Expected Payoff;Profit Factor;Recovery Factor;Sharpe Ratio;Custom;Equity DD %;Trades\n");
}

void OnTesterDeinit()
{
  FileClose(fhandle);
}

double OnTester()
{
  // собираем данные по эквити
  double LR = CountChannels(Equity);
  
  // конструируем собственный критерий оптимизации
  double result = MathAbs(LR) * TesterStatistics(STAT_PROFIT) * TesterStatistics(STAT_PROFIT_FACTOR) * TesterStatistics(STAT_TRADES) * (100 - TesterStatistics(STAT_EQUITY_DDREL_PERCENT));

  // рассчитываем еще какие-то данные
  //...

  // складываем все в массив
  double data[10];
  // data[0] = first;
  // data[1] = LR;
  // data[2] = TesterStatistics(STAT_PROFIT);
  // ...
  // data[7] = result;
  // ...
  // data[9] = ...

  // отправляем данные в терминал
  if(!FrameAdd(MQL5InfoString(MQL5_PROGRAM_NAME), 1, LR, data))
    Print("Frame add error: ", GetLastError());
  else
    Print("Frame added, Ok");

  return(result);
}

 

Ich persönlich halte es für logischer, die Ergebnisse in der Vergangenheit und nicht in der Zukunft zu überprüfen, da die jüngsten Marktveränderungen am wichtigsten sind.

15 Minuten lang optimierte ich, sortierte unnötige Ergebnisse aus und speicherte die verbleibenden 5-10 im Set und ließ sie bis zum Zeitpunkt der Optimierung in der Historie laufen - und wählte die besten anhand der Tabelle aus.

Ich habe auch über den Prozess der Automatisierung dieser Aktionen nachgedacht...

Eine einfache Lösung scheint darin zu bestehen, den Handel im Zeitbereich einzuschränken, der im EA selbst umgeschaltet werden kann. Als Ergebnis erhalten wir zwei virtuelle Läufe in der Historie für einen realen Lauf, die leicht in Excel verglichen werden können.

 
-Aleks-:

Ich persönlich halte es für logischer, die Ergebnisse in der Vergangenheit und nicht in der Zukunft zu überprüfen, da die jüngsten Marktveränderungen am wichtigsten sind.

15 Minuten lang optimierte ich, sortierte unnötige Ergebnisse aus und speicherte die verbleibenden 5-10 im Set und ließ sie bis zum Zeitpunkt der Optimierung in der Historie laufen - und wählte die besten anhand der Tabelle aus.

Ich habe auch über den Prozess der Automatisierung dieser Aktionen nachgedacht...

Eine einfache Lösung scheint darin zu bestehen, den Handel im Zeitbereich einzuschränken, der im EA selbst umgeschaltet werden kann. Als Ergebnis erhalten wir zwei virtuelle Läufe in der Historie für einen realen Lauf, die leicht in Excel verglichen werden können.

Die Konzentration auf die LETZTE Veränderung ist eine weitere Form der Selbsttäuschung. Natürlich müssen Sie für den Handel neue Einstellungen verwenden. Wenn Sie sich jedoch auf die Optimierung für den letzten Zeitraum beschränken, werden Sie nie verstehen können, ob Ihr Expert Advisor resistent gegen zukünftige Veränderungen ist. Sehen Sie sich das zweite Bild in meinem Beitrag an - Sie können es deutlich erkennen. Vorwärts ist ein Vergleich der Vergangenheit mit der Vergangenheit. Ihre Methode hat nichts mit der Vorwärtsanalyse zu tun. Praktisch jeder Expert Advisor kann für einen schönen Backtest optimiert werden. Dabei gilt: Je mehr Einstellungen optimiert werden, desto schöner ist der Backtest. Und je hässlicher, desto weiter. Die Vorwärtsbewegung hilft, genau die Logik zu finden, die mehr langfristige Muster verwendet und daher vielversprechender ist.
 
Forward ist eine nützliche Kontrolle, aber kein Allheilmittel. Es ist möglich, in den Optimierungsergebnissen eine Variante von Parametern zu wählen, die eine gute Vorwärtsbewegung ermöglicht, aber dies garantiert keine guten Ergebnisse in der Realität.