Discussione sull’articolo "Approccio brute force per la ricerca di pattern (Parte VI): Ottimizzazione ciclica"

 

Il nuovo articolo Approccio brute force per la ricerca di pattern (Parte VI): Ottimizzazione ciclica è stato pubblicato:

In questo articolo mostrerò la prima parte dei miglioramenti che mi hanno permesso non solo di chiudere l'intera catena di automazione per il trading su MetaTrader 4 e 5, ma anche di fare qualcosa di molto più interessante. D'ora in poi, questa soluzione mi consente di automatizzare completamente sia la creazione di EA che l'ottimizzazione, nonché di minimizzare i costi di manodopera per trovare configurazioni di trading efficaci.

L'elemento più importante dell'intera idea è il sistema di interazione tra il terminale e il mio programma. Si tratta infatti di un ottimizzatore ciclico con criteri di ottimizzazione avanzati. Le più importanti sono state trattate nella sezione precedente. Affinché l'intero sistema funzioni, occorre innanzitutto una sorgente per le quotazioni, ovvero uno dei terminali MetaTrader 5. Come ho già mostrato nell'articolo precedente, le quotazioni vengono scritte in un file in un formato comodo per me. Per farlo si utilizza un EA, che a prima vista funziona in modo piuttosto strano:

concetto di scrittura delle quotazioni da parte di un EA

Ho trovato abbastanza interessante e utile l'esperienza di utilizzare il mio schema unico per il funzionamento dell’EA. Questa è solo una dimostrazione dei problemi che ho dovuto risolvere, ma tutto questo può essere utilizzato anche per gli EA di trading: 

esempio di utilizzo di un EA per scrivere quotazioni


Autore: Evgeniy Ilin

 

формулы 2

fattore di linearità

Cerchiamo di capire cosa c'è dentro questa formula:

  • N - il numero di posizioni di trading completamente aperte e chiuse nell'intero backtest o sezione di trading.
  • B(i) - il valore della linea di equilibrio dopo la corrispondente posizione chiusa "i".
  • L(i) - la linea tracciata da zero al punto di equilibrio più recente (saldo finale).

Sembra essere quasi Sharpe:

//--- calcolare i logaritmi degli incrementi dall'array di azioni
   for(int i = 1; i < m_bars_counter; i++)
     {
      //--- aggiungere solo se il patrimonio netto è cambiato
      if(m_equities[i] != prev_equity)
        {
         log_return = MathLog(m_equities[i] / prev_equity); // logaritmo dell'incremento
         aver += log_return;            // logaritmo medio degli incrementi
         AddReturn(log_return);         // riempire l'array di logaritmi dagli incrementi
         counter++;                     // contatore dei rendimenti
        }
      prev_equity = m_equities[i];
     }
//--- se non ci sono abbastanza valori per calcolare lo Sharpe ratio, restituire 0
   if(counter <= 1)
      return(0);
//--- valore medio del logaritmo dell'incremento
   aver /= counter;
//--- calcolare la deviazione standard
   for(int i = 0; i < counter; i++)
      std += (m_returns[i] - aver) * (m_returns[i] - aver);
   std /= counter;
   std = MathSqrt(std);
//--- Rapporto di Sharpe sul timeframe corrente
   double sharpe = aver / std;
Математика в трейдинге: Коэффициенты Шарпа и Сортино
Математика в трейдинге: Коэффициенты Шарпа и Сортино
  • www.mql5.com
Доходность является самым очевидным показателем, который используют инвесторы и начинающие трейдеры для анализа эффективности торговли. Профессиональные трейдеры пользуются более надежными инструментами для анализа стратегии, среди них — коэффициенты Шарпа и Сортино.
 
fxsaber #:

Penso che sia quasi uno Sharpe:

C'è qualcosa di simile, ma solo a prima vista. A tutti sfugge il modello di crescita del bilancio. Se la pendenza della crescita del bilancio è in costante diminuzione (la derivata seconda della curva di bilancio è negativa), allora tale modello non è preferibile, perché presto potrebbe diventare negativo. Il punto è selezionare le curve che graficamente sembrano più promettenti.

 
Evgeniy Ilin #:

Le somiglianze ci sono, ma solo a prima vista. A tutti sfugge il modello di crescita del saldo. Se la pendenza della crescita dell'equilibrio è in costante diminuzione (la derivata seconda della curva di equilibrio è negativa), allora tale modello non è preferibile, in quanto potrebbe presto passare in territorio negativo. Il punto è selezionare le curve che graficamente sembrano più promettenti.

L'algoritmo di Sharpe per le curve discendenti darà un valore negativo. L'ho indicato solo per analogia, non ha senso discutere di Sharpe....


Esempi tratti dalla mia esperienza.

  • criterio "curva bella" - non passa OOS.
  • criterio "curva brutta" - passa OOS, mentre la curva stessa si è rivelata bella.
  • Commissione zero - non passa OOS.
  • La commissione è impostata - passa OOS.

In altre parole, si scopre che quando l'ottimizzazione è per la bellezza, la componente di adattamento è elevata. Quando si trova qualcosa di valido, sembra bello.

Ecco perché io stesso non cerco la bellezza. Mi affido piuttosto al numero di accordi e all'algoritmo del nucleo TS. L'obiettivo è ottenere la bellezza senza criteri di bellezza. Di norma, questa variante passa OOS.


ZY La variante con commissione è più interessante (ma, di norma, viceversa: meno commissione - più probabilità di trovare un modello). In realtà riduce il numero di transazioni (significatività statistica), ma aumenta la probabilità di successo della ricerca.

 
fxsaber #:

L'algoritmo di Sharpe per le curve discendenti produrrà un valore negativo. L'ho indicato solo per analogia, non ha senso discutere di Sharpe.....


Esempi tratti dalla mia esperienza.

  • Il criterio "curva bella" - non passa OOS.
  • Il criterio "curva brutta" - passa OOS, ma la curva stessa si è rivelata bella.
  • Commissione zero - non passa OOS.
  • Commissione impostata - passa OOS.

In altre parole, si scopre che quando l'ottimizzazione è per la bellezza, la componente di adattamento è elevata. Quando si trova qualcosa di valido, sembra bello.

Ecco perché io stesso non cerco la bellezza. Mi affido piuttosto al numero di accordi e all'algoritmo del nucleo TS. L'obiettivo è ottenere la bellezza senza criteri di bellezza. Di norma, questa variante passa OOS.


ZY La variante con commissione è più interessante (ma, di norma, viceversa: meno commissione - più probabilità di trovare un modello). In realtà riduce il numero di transazioni (significatività statistica), ma aumenta la probabilità di successo della ricerca.

È chiaro che ci sono ancora dei limiti. Ad esempio, io agisco in questo modo:

  • Imposto l'aspettativa minima richiesta in pips (tenendo conto solo dello spread, aggiungo anche la commissione e lo swap, approssimativamente).
  • Imposto il numero minimo richiesto di operazioni, che mi serve tenendo conto della lunghezza della sezione considerata.
  • Regolo il fattore di corrispondenza della curva
Non ha senso cercare qualcosa all'interno dello spread ). Ci saranno pochissimi scambi, è un dato di fatto, non ci si può fare nulla. L'adattamento è presente ovunque, la questione è come ridurlo al minimo senza prestare attenzione all'algoritmo stesso. Ci sono dei modi. Solo che senza la stima della curva possiamo contare solo sul fatto che l'algoritmo è inizialmente graale, che penso sulle dita per contare. Ho metodi, come fare senza di essa, ma ho paura di scrivere una cosa del genere qui ))).
 
Evgeniy Ilin #:

È chiaro che ci sono ancora dei limiti. Questo è il mio modo di operare:

  • Stabilisco l'aspettativa di maturazione minima richiesta in punti (tenendo conto solo dello spread, aggiungo anche la commissione e lo swap, approssimativamente).

Io non lo faccio. Le regolarità del mercato non dipendono dalle condizioni di trading del broker. Sono propenso a questo.

Forum sul trading, sui sistemi di trading automatizzati e sulla verifica delle strategie di trading

Apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading

fxsaber, 2023.08.19 11:10 AM

Broker per i dati storici per scegliere il più alto profitto potenziale. Ad esempio, il potenziale di EURUSD_Broker1 è superiore a quello di EURUSD_Broker2. Allora scegliete EURUSD_Broker1.

Sia le major che i cross possono essere scalati. Ma non tutti. Basta allenarsi su ciascuno di essi e vedere i risultati. Questo è ciò che faccio io, a grandi linee.

Cioè è logico cercare dove la concentrazione di "oro nella roccia" è più alta.


  • Stabilisco il numero minimo di scambi di cui ho bisogno in base alla lunghezza dell'area in questione.
Sì, questa è una sorta di aiuto alla genetica per non andare in rami morti.
  • Regolazione del fattore di adattamento della curva.
Questo è esattamente ciò che non faccio di proposito. Ad esempio, è possibile addestrare il TS a produrre PF>2,5. Con un numero adeguato di operazioni, produrrà quasi automaticamente una bella curva. Non ho iniziato ad esercitarmi molto. Ma per la ricerca è sempre interessante vedere, naturalmente.
Non ha senso cercare qualcosa all'interno dello spread ). Ci saranno pochissimi scambi, è un dato di fatto, non si può fare nulla. C'è un adattamento ovunque, la questione è come ridurlo al minimo senza prestare attenzione all'algoritmo stesso. Ci sono dei modi. Solo che senza la stima della curva possiamo contare solo sul fatto che l'algoritmo è inizialmente graale, che penso sulle dita per contare. Ho metodi, come fare senza di essa, ma ho paura di scrivere una cosa del genere qui ))).

Non capisco la connessione del TS con lo spread.

 
@fxsaber

  • Например, можно обучить ТС, чтобы выдавал PF>2.5. При должном количестве сделок это почти автоматом выдаст красивую кривую
Sarà anche bello, ma la forma è diversa, il possibile avanzamento dipende dalla forma. Almeno aumenterà la probabilità di trovare un setup funzionante. Il fattore di profitto di 2,5 è molto grasso, direi che 1,5 è un bel po'). È una specie di modo per pesare le impostazioni rimanenti (i miei criteri) scartando altre impostazioni. In generale sono giunto a un paradigma interessante nella robotica, in cui il lavoro principale è svolto da componenti aggiuntivi rispetto agli algoritmi e poco dipende dall'algoritmo. In questo caso, qualsiasi criterio che aumenti l'importanza di una particolare impostazione è prezioso. Dopotutto, in aggregato, ognuno lavora al proprio livello.

Sono d'accordo con il resto.

.
  • Non capisco il nesso tra il TS e lo spread .
Se si tratta di scalping allora sì, qui usiamo il bid e tutto il resto, di norma l'ask fluttua dallo spread. Ma i tick sono diversi per molte persone, e molto dipende da questo). Il punto è che lo spread era il più piccolo possibile rispetto alla dimensione media di un'operazione in punti, come se trascurassimo lo spread in modo che non influisca sul segnale quando si cambia il broker, per esempio, beh, questa è la mia fantasia).
 
Evgeniy Ilin #:
Può essere bella, ma la forma è diversa e il possibile avanzamento dipende dalla forma.

Esempio di una curva trovata con il criterio MaxBalance (non con la bellezza).

 
fxsaber #:

Un esempio di curva trovata in base al criterio MaxBalance (non in base alla bellezza).

Sarebbe interessante vedere molte curve selezionate in questo modo (criterio MaxBalance "non per bellezza").

 
Anatoli Kazharski #:

Sarebbe interessante vedere molte curve selezionate in questo modo (criterio di MaxBalance "non per bellezza").

Questo è il sesto risultato nel file opt corrispondente. I primi cinque sembrano peggiori.

Eseguo un numero ridotto di passaggi GA in modo che i set di parametri di ingresso non siano vicini tra loro.

 

Ho l'impressione che ci siano alcuni approcci alla costruzione di un TS, quando il criterio del MaxBalance con un limite sul numero di trade dal basso dà sempre una bella curva sul Campione. In questo caso un TS di questo tipo può essere considerato razionale, anche se c'è una perdita totale in OOS. Ma sembra dubbio cercare la bellezza in base a Sharpe, R^2 o ai criteri di questo articolo. Forse mi sbaglio.