L'auto-inganno del commerciante: la sfiducia nei confronti degli attaccanti. - pagina 2

 
Youri Tarshecki:

Chiunque può fare l'esperienza più semplice - ottenere il risultato del trading su un conto demo ed eseguire lo stesso sistema con le stesse impostazioni nel proprio tester per lo stesso periodo. Vale a dire, prendete un vero e proprio e un test virtuale in avanti e confrontatelo.

Questo non è un confronto valido perché il tester della strategia usa solo 4 quotazioni per l'apertura, la chiusura, il massimo e il minimo della barra. Di norma, gli Expert Advisors lavorano con tutte le quotazioni intra-barra sui conti demo o reali.

Youri Tarshecki:

In effetti, la simulazione del comportamento del sistema eseguendolo su un periodo storico non ottimizzato è il modo più efficiente di analisi per un trader. Il controllo della realtà è naturalmente il modo più affidabile, ma purtroppo bisogna vivere per sempre per passare attraverso tutte le varianti nei conti reali. Cioè la modellazione come avanti al passato è il modo più efficace di ricerca. Ma allora perché gli attaccanti sono completamente assenti dalle discussioni? Forse perché non c'è un software pratico per elaborare e analizzare i risultati di più test, sia indietro che in avanti?

Sono d'accordo con te. Sembra che tu lo faccia spesso. Per favore, ditemi quale strumento finanziario preferite per tale analisi. Ho un EA che si attiva solo all'apertura della barra e voglio testarlo con una modellazione simile.

 

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

Quello che voglio dire è che, indipendentemente dallo strumento, la metodologia di test dovrebbe includere l'inoltro. Ma la gente li ignora in massa. Quelli che li usano di solito li stimano a occhio. In altre parole, non ci sono programmi che introducano standard oggettivi nella valutazione dei premi.
 
Youri Tarshecki:
Quello che voglio dire è che, indipendentemente dallo strumento, la metodologia di test dovrebbe includere l'inoltro. Ma la gente li ignora in massa. Quelli che li usano, di regola, li stimano a occhio. Cioè, non ci sono programmi che introducano standard oggettivi nella valutazione dei premi.
Diversi strumenti hanno diverse proprietà di comportamento sul mercato. Includendo l'"inerzia della redditività" nel test di avanzamento. Ecco perché volevo chiederti: non hai trovato uno strumento (o un tipo di strumento) che mostra il miglior risultato nei tuoi esperimenti, a parità di altre condizioni?
 
Youri Tarshecki:
Quello che voglio dire è che, indipendentemente dallo strumento, la metodologia di test dovrebbe includere gli anticipi. Ma la gente li ignora in massa. Quelli che li usano, di regola, stimano a occhio. Cioè, non ci sono programmi che introducano standard oggettivi nei prezzi a termine.

Ignorando massicciamente i test in avanti. La ragione è semplice - il successo passato in avanti indica solo che il mercato sulla sezione in avanti è simile alla sezione di ottimizzazione. Strategy Tester si adatta perfettamente alle dinamiche attuali del mercato. Di conseguenza, dopo aver diviso il segmento di ottimizzazione in 12 parti in avanti, otterremo 12 insiemi di parametri non correlati, ognuno dei quali spargerà 11 delle 12 sezioni di tempo. Invece, è meglio trovare una serie di parametri, anche se mediata, per una lunga storia, che correre da una serie di parametri all'altra.

Il mercato non cambia, è solo che ogni sistema di trading cattura solo un particolare stato del mercato, e il mercato ha molti di questi stati.

 
È meglio non fidarsi degli attaccanti che fidarsi di loro. E se lo fai, è solo se usi la WFA
 
Vasiliy Sokolov:

Ignorando massicciamente i test in avanti. La ragione è semplice - il successo passato in avanti indica solo che il mercato sulla sezione in avanti è simile alla sezione di ottimizzazione. Strategy Tester si adatta perfettamente alle dinamiche attuali del mercato. Di conseguenza, dopo aver diviso il segmento di ottimizzazione in 12 parti in avanti, otterremo 12 set di parametri non correlati, ognuno dei quali spargerà 11 delle 12 sezioni di tempo. Invece, è meglio trovare una serie di parametri, anche se mediata, per una lunga storia, che correre da una serie di parametri all'altra.

Il mercato non cambia, è solo che ogni sistema di trading cattura solo un particolare stato del mercato, e ci sono molti di questi stati nel mercato.

Non si può dividere la "sezione ottimizzata in 12 parti avanti" perché un avanti è per definizione una sezione non ottimizzata. Cioè, state contrastando il metodo di controllo in avanti stesso e semplicemente la nozione di media.

Lo scopo di un forward è scoprire come si comporta il consulente in una situazione di futuro non ottimizzato. Quello di cui stai parlando ha più a che fare con il trovare il miglior pezzo di storia per l'ottimizzazione. Cioè se credi che la storia lunga funzioni meglio, nessun problema, carica il tester con 2 anni Indietro - 1 anno Avanti. E poi 2 mesi indietro -1 mese avanti per 12 volte. Se la performance forward del primo approccio è migliore della somma delle performance forward del secondo approccio, allora il primo approccio è migliore, e viceversa. Il fatto stesso che ottimizzi l'Expert Advisor suggerisce che credi nell'inerzia del mercato, ma semplicemente credi che si manifesti in un periodo di tempo significativamente più ampio. Ma non è che stai ottimizzando su TUTTA la storia disponibile di 30 anni, quindi stai tenendo conto anche della volatilità del mercato. È un'eterna contraddizione di costanza e variabilità, ma confrontando i premi di diversi periodi di prova si può capire meglio come questa contraddizione si risolve nella realtà. Finché non hai controllato - la tua affermazione è puramente intuitiva o solo abituale.

 
Youri Tarshecki:
Supponiamo che io usi OnTesterPass nel codice di un EA che sto testando. Come farà a sapere che si tratta di una corsa a termine e non di una normale corsa di ottimizzazione variabile? E anche se riesce a farlo, si tratterà di file diversi, e noi abbiamo bisogno di una tabella per molti avanzamenti di un EA. E poi un'altra tabella, e un'altra per un'altra, e tutto questo in un unico file.

Per quanto mi ricordo, questo è quello che ho fatto - ho salvato il tempo del primo trade nel frame - questo è il "saldo". Di conseguenza, quando si registrano i parametri e gli indicatori di tutte le corse in un file, è facile distinguere il backtest dal forward con due date distinte. Ho salvato tutte le corse esattamente in un file (aperto in OnTesterInit e chiuso in OnTesterDeinit).

I dettagli erano qui:

Forum sul trading, sistemi di trading automatico e strategie di trading di prova

Lavorare con le cornici

Stanislav Korotky, 2014.11.07 15:23

Nel gestore OnTester puoi aggiungere i tuoi frame con i dati usando FrameAdd - la cosa importante è che tutto questo è fatto nell'agente di test, che può essere remoto (per esempio nel cloud).

OnTesterInit, OnTesterDeinit, OnTesterPass sono chiamati sul terminale dove il processo di test/ottimizzazione è avviato e da dove i compiti sono distribuiti agli agenti. All'interno di OnTesterPass potete accedere a tutti quei frame che sono stati aggiunti ai test agent usando FrameAdd, come questo (morso dal vecchio EA, potrebbe non compilare):

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);
  }
}

e qui:

Forum sul trading, sistemi di trading automatico e strategie di trading di prova

Lavorare con le cornici

Stanislav Korotky, 2014.11.07 20:15

Dovresti aggiungere delle cornici, come ho scritto sopra, durante la corsa. In teoria, se l'EA ha dei parametri, dovresti ottenerli all'interno del frame insieme ai tuoi dati, cioè i params non dovrebbero essere vuoti. Ecco un altro po' di codice dello stesso 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);
}

 

Personalmente, penso che sia più logico controllare i risultati nel passato piuttosto che nel futuro, perché i cambiamenti di mercato più recenti sono i più significativi.

Per 15 minuti ho ottimizzato, setacciato i risultati inutili, e salvato i 5-10 rimanenti nel set e li ho eseguiti sulla storia fino al momento dell'ottimizzazione - e ho scelto i migliori dal grafico.

Stavo anche pensando al processo di automatizzazione di queste azioni...

Una soluzione semplice sembra essere semplicemente mettere delle restrizioni al trading nell'intervallo di tempo che può essere commutato nell'EA stesso, come risultato otterremo due corse virtuali sulla storia per una corsa reale, che può essere facilmente confrontata in excel.

 
-Aleks-:

Personalmente, penso che sia più logico controllare i risultati nel passato piuttosto che nel futuro, perché i cambiamenti di mercato più recenti sono i più significativi.

Per 15 minuti ho ottimizzato, setacciato i risultati inutili, e salvato i 5-10 rimanenti nel set e li ho eseguiti sulla storia fino al momento dell'ottimizzazione - e ho scelto i migliori dal grafico.

Stavo anche pensando al processo di automatizzazione di queste azioni...

Una soluzione semplice sembra essere semplicemente mettere delle restrizioni al trading nell'intervallo di tempo che può essere commutato nell'EA stesso, come risultato otterremo due corse virtuali sulla storia per una corsa reale, che può essere facilmente confrontata in excel.

Concentrarsi sull'ULTIMO cambiamento è un altro tipo di auto-inganno. Naturalmente, è necessario utilizzare nuove impostazioni per il trading. Ma limitandoti a ottimizzare per l'ultimo periodo, non sarai mai in grado di capire se il tuo Expert Advisor è resistente ai cambiamenti futuri. Guardate la seconda foto del mio post - potete vederlo chiaramente. Il futuro è un confronto tra il passato e il passato. Il suo metodo non ha niente a che vedere con l'analisi in avanti. Praticamente qualsiasi Expert Advisor può essere ottimizzato per un bel backtest. Il modello qui è il seguente: più le impostazioni sono ottimizzate, più il backtest è bello. E il più brutto è il più avanti. I forward aiutano a trovare esattamente la logica che utilizza modelli più a lungo termine, e quindi è più promettente.
 
Forward è un controllo utile, ma non una panacea. È possibile selezionare una variante di parametri nei risultati di ottimizzazione che forniscono un buon avanzamento, ma questo non garantisce buoni risultati sul reale.