
Algoritmo di riacquisto: Simulazione di trading multivaluta
Contenuto
- Introduzione
- Spiegazione della necessità di una simulazione di trading
- Modello matematico della simulazione dei prezzi con l’utilizzo della logica di discretizzazione
- Test del modello
- Test EA
- Conclusioni
Introduzione
Nell'articolo precedente vi ho mostrato un sacco di funzioni utili che probabilmente non conoscevate, ma la cosa più interessante è davanti a voi - la ricerca o la simulazione di trading. A volte un tester di strategia non è sufficiente. Anche se si tratta di uno strumento molto comodo per conoscere il mercato, questo è solo il primo passo. Se avete letto attentamente l'articolo precedente, molto probabilmente ne conoscete già il motivo.
Spiegazione della necessità di una simulazione di trading
La ragione della simulazione di trading risiede direttamente nel fatto che la quantità di dati storici di qualsiasi strumento di trading è limitata. Questo problema può essere visto solo se si comprende il materiale che ho fornito nell'articolo precedente o in qualche altro modo alternativo.
L'essenza del problema è che un semplice storico delle quotazioni non è sempre sufficiente, perché questo storico si forma all'incrocio di molti eventi mondiali casuali e non casuali, ed esistono innumerevoli scenari per lo svolgimento dell'evento. Al momento sto cercando di descrivere le cose nel modo più semplice possibile, ma se passiamo al linguaggio della teoria della probabilità e allo stesso tempo utilizziamo i risultati ottenuti nell'articolo precedente, capiamo che lo storico delle quotazioni di tutti gli strumenti a noi noti potrebbe svilupparsi in modo diverso.
Questo fatto è ovvio, se avete visto il film "Ritorno al Futuro". Presenta molti errori e divertenti incongruenze dal punto di vista scientifico, ma, nonostante ciò, questo film trasmette l'idea principale del messaggio qui fornito. L'essenza del messaggio è che una sola versione degli eventi che si stanno svolgendo non è sufficiente per noi, e dovremmo considerare il loro numero massimo. Lo storico ci fornisce solo una versione, e la sua dimensione può talvolta essere insufficiente per una valutazione oggettiva. Ad esempio, non molto tempo fa, molti broker hanno ottenuto alcuni dei simboli crypto più popolari. Questo è molto positivo in termini di possibilità di testare e negoziare questi simboli. Il rovescio della medaglia è che non ci sono dati storici sufficienti per sviluppare sistemi di trading sostenibili per gli EA che lavorano sulle barre.
La simulazione permetterà di creare strumenti artificiali e di generare le loro quotazioni ogni volta in modo completamente differente. Questo ci fornirà il quadro più ampio possibile per studiare il modello matematico di riacquisto e altri importanti principi matematici di cui ho parlato nell'articolo precedente. Un altro importante vantaggio è che potremo simulare un numero illimitato di strumenti indipendenti per il trading parallelo. In definitiva, non abbiamo più limiti alla durata dei test e al numero di strumenti negoziati in modo indipendente. Naturalmente non si tratterà di quotazioni reali, ma non differiranno in alcun modo da quelli reali in termini di leggi sui prezzi.
Modello matematico della simulazione dei prezzi con l’utilizzo della logica di discretizzazione
Nel contesto del nostro compito, l'uso dell'approccio della "discretizzazione arbitraria" è più che sufficiente, perché una forte discretizzazione aumenterà solo l'efficienza del nostro algoritmo, se non altro perché tali sistemi resistono automaticamente agli spread in modo più efficace. Tuttavia, ho costruito un algoritmo che consente di simulare anche i tick. Dopotutto, un tick è l'intervallo di tempo più piccolo. Il tempo tra gli arrivi dei tick è molto differente, ma se si calcola il tempo medio tra i tick, è possibile imitare i tick in prima approssimazione.
In questo caso, per barra si intende un periodo di tempo fisso, che è conveniente per distinguere da un punto di vista visivo. Ma questo è conveniente solo perché vi è stato detto che è conveniente, e non potete farne a meno, perché tutti i terminali di trading sono fatti su misura per questo paradigma. Tuttavia, questo è lontano dal modo migliore per discretizzare i prezzi. Credo che molti di voi conoscano il termine "renko". Questo approccio alla discretizzazione dei prezzi ha un solo scopo - allontanarsi dal tempo. Il valore di questo approccio può essere completamente differente per approcci e trader diversi. Tuttavia, utilizzo questo esempio solo per mostrare uno dei modi alternativi di discretizzare le serie di prezzi. Questo esempio, a mio avviso, dovrebbe dirvi che nel contesto del nostro compito utilizzeremo una logica di discretizzazione completamente diversa e poco familiare, ma che ci permetterà di modellare i prezzi in modo molto semplice ed efficiente senza eccessivi costi computazionali.
Per la corretta costruzione di un paradigma efficiente ed economico in termini di potenza di calcolo, osservate la seguente immagine:
L'immagine mostra un paio di possibili scenari per il rollback dei prezzi. Questi due rollback per me denotano due punti arbitrari che possono essere scelti assolutamente in qualsiasi modo e il metodo di scelta non ha alcuna importanza. L'aspetto importante è che possiamo scegliere arbitrariamente qualsiasi punto che possa essere considerato un probabile punto di inversione.
La parola "probabile" dovrebbe dire immediatamente ad ogni matematico che in un dato punto c'è una certa probabilità di un evento desiderato. Nel nostro caso, possiamo dire che un dato evento può essere arbitrario. L'evento di rollback è caratterizzato dai limiti superiore e inferiore dell'incremento di prezzo. La probabilità di questo evento può essere calcolata nel modo seguente:
Ecco la probabilità di raggiungere il limite superiore e l'equazione da cui deriva questa formula. L'equazione caratterizza l'aspettativa matematica dell'incremento del prezzo in assenza di un momento predittivo. La mancanza di momento predittivo si traduce in un'aspettativa pari a zero, ma nella nostra simulazione voglio essere in grado di regolare i parametri del momento predittivo in modo da poter aumentare o indebolire convenientemente le caratteristiche dei nostri prezzi simulati. In definitiva, vedrete come questo influisce sull'algoritmo di riacquisto e otterrete un modello matematico funzionante per il trading diversificato utilizzando l'algoritmo di riacquisto. Ma prima voglio darvi la matematica completa che c’è dietro a tutto questo.
Attualmente, possiamo notare che tutte queste equazioni sono belle e apparentemente utili, ma finora non esiste un algoritmo conveniente per regolare il livellamento (rollback) dello strumento. Per sviluppare un algoritmo di questo tipo, è necessario inserire i seguenti valori:
Il primo valore è in realtà il valore medio "alfa". Possiamo anche chiamarla l'aspettativa matematica del valore di rollback del prezzo dopo un movimento arbitrario al ribasso. Il secondo valore è l'aspettativa matematica della percentuale di rollback espressa come valore relativo al suo movimento precedente. L'essenza di queste grandezze è la stessa con un’unica eccezione:
Qui sto solo mostrando come queste grandezze sono correlate e come vengono calcolate. Nel nostro modello, regoleremo il rollback medio impostandone la percentuale media e invertiremo la logica utilizzandola per determinare il rollback medio del prezzo. Bisogna ammettere che la percentuale media di rollback è molto comoda come valore regolatore per il parametro di livellamento del mercato. Se questa percentuale è impostata a zero, allora si richiede effettivamente un prezzo casuale (questo è solo un esempio). L'unica cosa che vorrei notare è che tutti i drawdown dei prezzi sono considerati relativi al punto "theta". Spero che mi perdonerete le libertà nella notazione, perché questo materiale è completamente mio e non c'è una goccia di lavoro altrui. Queste equazioni sono necessarie per capire cosa farò in seguito.
Un'altra caratteristica importante di qualsiasi prezzo è la volatilità (tasso di variazione dei prezzi). Questo parametro è associato al tempo e dobbiamo trovare un modo estremamente comodo per impostare questo valore. Ciò dovrebbe consentirci di controllare in modo semplice ed efficace la variazione di prezzo e di calcolare correttamente la tempistica dei cicli di trading. Al momento tutto questo può sembrare troppo complicato, ma sarà molto più chiaro quando mi dedicherò alla pratica e inizierò a mostrarvi come funziona. Occupiamoci innanzitutto della volatilità.
Nell'interpretazione classica, la volatilità è un po' differente, piuttosto, il grado del possibile movimento relativo dei prezzi da un minimo a un massimo e viceversa, da un massimo a un minimo. Si tratta di un modo molto scomodo per impostare il tasso di movimento dei prezzi. Esiste un metodo molto più conveniente, che consiste nel misurare il movimento medio dei prezzi in un periodo di tempo prestabilito. Abbiamo questi segmenti. Si chiamano barre. Infatti, abbiamo la legge di distribuzione di una variabile casuale del modulo di variazione del prezzo per barra. Maggiore è questo valore, maggiore è la volatilità dei prezzi (tasso di variazione). Inseriamo le seguenti impostazioni:
Se la distribuzione casuale del valore "S" debba essere simulata, posso dire che non è necessario. L'unica cosa da sapere è che il prezzo effettivo sarà diverso dal metodo che utilizzeremo nel modello matematico. Propongo di correggere il valore "S" al livello del suo valore medio. Poiché il tempo di ogni fase è già corretto, si ottiene sia la dimensione del passo che la sua durata nel tempo. Questo ci permetterà di valutare successivamente la redditività annuale del sistema di trading, nonché di misurare il tempo medio del ciclo di trading. Ora diamo un'occhiata all'immagine seguente per andare avanti:
Dal momento che dovremo simulare i prezzi per ogni passo, è ovvio che il passo può essere sia verso il basso che verso l'alto. Se impostiamo un passo equiprobabile in entrambe le direzioni, otteniamo prezzi casuali. Ciò significa che, per regolare il livellamento, dobbiamo modificare le probabilità di queste fasi. Si tratta di fornire una sorta di "gravità" al punto di partenza del prezzo, dal quale il prezzo ha iniziato a muoversi verso l'alto o verso il basso. Nel nostro caso, dovremo realizzare quanto segue:
In questo caso, per semplificare il modello, ho ipotizzato che l'inversione di prezzo mediamente scelta richieda esattamente lo stesso tempo impiegato per il precedente rialzo o ribasso del prezzo. Lo scopo di questi calcoli è quello di determinare l'aspettativa istantanea per un singolo passo, al fine di calcolare la probabilità che il passo si verifichi verso l'alto. Con questa probabilità, viene regolata la simulazione del nuovo passo. Questo valore viene ricalcolato dopo ogni fase per ogni singolo strumento di trading.
Ecco un punto molto importante: se descriviamo ogni strumento separatamente, dovremo creare un array con i dati sulla variazione media del prezzo per ognuno di essi. Ma nell'ambito del mio compito, tutti gli strumenti sono uguali e quindi è possibile introdurre una caratteristica generale e più comoda per descrivere un passo sotto forma di percentuale media di variazione dei prezzi:
Il vantaggio di questa caratteristica è che è invariante rispetto a qualsiasi prezzo corrente. Inoltre, se consideriamo strumenti ideali, non importa a quale prezzo inizia la simulazione, perché questo non influisce sul profitto o sulla perdita durante il test. Dopo aver capito questo, possiamo tranquillamente iniziare il trading parallelo per il nostro algoritmo di riacquisto a partire da un prezzo, diciamo, uguale a 1. Dopo aver determinato questo valore, è già possibile calcolare il valore del passo stesso:
Ora, conoscendo il passo, possiamo affermare di aver raccolto tutti i dati necessari per calcolare la probabilità che ci sia una fase verso l'alto. Per farlo, utilizziamo la nostra formula originale per l'aspettativa matematica di un passo con alcune sostituzioni:
Dopo questa sostituzione, possiamo risolvere questa equazione per la probabilità di una fase verso l'alto e, infine, ottenere la probabilità mancante:
L'unica cosa che vale la pena notare è che queste equazioni sono valide per il caso in cui il prezzo della simulazione scenda al di sotto del punto di partenza. Ma cosa fare quando il prezzo è salito? Tutto è molto semplice. Basta considerare il grafico a specchio. Questo può essere fatto perché stiamo considerando strumenti perfetti. Se immaginiamo che il grafico dei prezzi può essere descritto da una certa espressione "P = P(t)", allora l'inversione dello strumento sembrerà così:
Questa inversione manterrà le equazioni funzionanti per la situazione in cui il prezzo è andato al di sopra del punto di partenza. L'unica cosa che dobbiamo capire è che tutte le grandezze nelle nostre espressioni che vengono calcolate utilizzando i prezzi (ad esempio, i delta) devono utilizzare il prezzo già convertito elevato alla prima potenza negativa.
Costruiamo ora un modello di trading. L'ho reso unidirezionale, in quanto originariamente destinato al trading spot di criptovalute. Tuttavia, questo modello di trading è adatto anche alle coppie di valute forex. Il fatto è che se il modello funziona, ad esempio, solo nel caso di un riacquisto, allora funzionerà altrettanto bene per una rivendita. L'unica cosa è che durante il test salteremo le semionde superiori e lavoreremo solo su quelle inferiori. Per gestire il modello di trading, ho inserito le seguenti caratteristiche:
L'acquisto iniziale parte dal prezzo "1-Step Percent/100" e il passo di riacquisto sarà pari a "Step Percent/100". In realtà, dovrebbe esserci ancora una moltiplicazione per il prezzo di partenza, ma poiché consideriamo questo prezzo uguale a uno, il calcolo del passo è notevolmente semplificato. Inoltre, è stata introdotta la possibilità di un aumento ricorrente del passo. Ad esempio, possiamo aumentare di N volte ogni fase di riacquisto successiva rispetto alla precedente, oppure diminuirla allo stesso modo. Tutto ciò dipende dal valore del coefficiente corrispondente. Il passo di riacquisto è misurato nella valuta quotata dello strumento (non in quella di base). Questa regola vale anche per le criptovalute.
Per semplificare il modello, si ipotizza che gli strumenti di trading applicati in questo caso siano approssimativamente i seguenti: EURUSD, GBPUSD, NZDUSD e così via, cioè la valuta secondaria dello strumento negoziato per tutti gli strumenti negoziati deve essere la stessa. Questo semplifica un modello già molto complesso, ma è sufficiente sia per testare i principi matematici dell'ultimo articolo sia per ottimizzare gli algoritmi di riacquisto. Nel nostro caso lo spread viene preso in considerazione sotto forma di commissione, che è la stessa cosa. In generale, i parametri sono sufficienti per il prototipo del modello matematico. Diamo un'occhiata al processo di riacquisto:
Utilizzeremo la prima opzione (con il movimento di ritorno verde). Si tratta di acquistare effettivamente la valuta di base e di venderla al punto blu. Con questo approccio, qualsiasi ciclo di trading completato sarà redditizio. Lo stesso vale per il ciclo di vendita con un movimento di ritorno rosso, ma li salteremo, come ho detto, affinché il modello sia il più multifunzionale possibile e adatto sia al trading sul mercato forex che per il trading spot sulle borse delle criptovalute.
Il modello è realizzato in modo tale che la leva del trading non giochi alcun ruolo. Penso di avervi dato abbastanza informazioni teoriche per farvi capire meglio la parte pratica e che questo possa aiutare qualcuno a costruire il proprio modello utilizzando le mie realizzazioni.
Test del modello
Iniziamo il nostro test con diverse varianti di generazione di quote. Per mostrare visivamente la differenza nella generazione delle quotazioni, impostiamo prima il modello nella seguente posizione:
Con questa impostazione, otterremo dei prezzi casuali. Vediamo un paio di quotazioni generate da questo punto di vista:
Si tratta di un grafico di un modello matematico, che mostra due quotazioni prese a caso dal mazzo e un'altra curva aggiuntiva, che presenta la maggiore deviazione dal prezzo di partenza. Nel modello matematico è possibile impostare il numero necessario di strumenti da simulare in parallelo; è naturale che ve ne siano molti e che ve ne sia sempre uno meno simmetrico e più volatile. Ma spero che comprendiate che questo è solo il risultato di processi probabilistici. Ora mettiamo il parametro in una posizione differente:
Come avrete già capito, questa fase crea una gravità di ritorno del prezzo al punto di partenza. Il risultato è il seguente:
Notare la differenza tra l'immagine precedente e quella attuale. Qui abbiamo già forzato la regolazione nella direzione desiderata. Possiamo notare che le curve sono fortemente schiacciate contro il prezzo di partenza - la stessa cosa è successa con la quotazione più volatile colorata in nero. Entrambi gli esempi simulano esattamente mille passi per ogni strumento. In seguito aumenterò questi numeri e ci giocherò sopra per capire come funziona il tutto e quali sono i parametri esattamente interessati.
Ora è necessario stabilire quali parametri devono essere utilizzati per testare il trading artificiale e come dovrebbe essere testato. Ricordiamo rapidamente le domande a cui ho risposto nell'articolo precedente. In modo più semplice e comprensibile, suonavano così:
- Condizione di profittabilità dei sistemi di trading con riacquisto.
- La linea dei profitti tende a una linea retta perfetta quando si fa trading all'infinito con gli strumenti di trading ideali?
- La linea dei profitti tende a una linea retta perfetta quando il numero di strumenti aumenta fino all'infinito con un periodo di trading fisso?
Scopriamo le condizioni di redditività. Per far questo, eseguiamo innanzitutto un trading parallelo con prezzi casuali e osserviamo il risultato. L'aspetto sarà approssimativamente il seguente:
In diverse generazioni sono state ottenute curve redditizie o non redditizie. Non è ancora chiaro, ma la conferma dell'inutilità dei riacquisti in caso di prezzi casuali potrebbe essere un aumento estremo del numero di strumenti negoziati in parallelo. Vediamo cosa succede se aumentiamo il loro numero, diciamo, a un centinaio, e allo stesso tempo aumentiamo il numero di passi di simulazione per ogni strumento a 10.000:
Come si può notare, né l'aumento del numero di strumenti negoziati in parallelo, né l'aumento della durata dei test hanno avuto un effetto visibile. Molto probabilmente, questo conferma il fatto matematicamente provato nell'articolo precedente che qualsiasi sistema di trading, compreso l'algoritmo di riacquisto, prosciuga il conto in caso di prezzi completamente casuali e senza un momento predittivo. A questo punto, considero il punto 1 teoricamente e praticamente dimostrato. Passiamo ora al secondo punto e stabiliamo la seguente impostazione:
Secondo i miei test, la gravità di ritorno si è rivelata abbastanza sufficiente per la possibilità di una valutazione visiva dell'effetto per qualsiasi lettore. Naturalmente è possibile impostare una percentuale inferiore, ma l'effetto non sarà così marcato. Ho ripristinato il numero di passi della simulazione al valore originale di mille passi. Ora diamo un'occhiata al risultato:
Penso che non sarà difficile capire che questo grafico, tra le altre cose, è un'aggiunta alla prova del paragrafo precedente, ma, allo stesso tempo, è anche un punto di partenza per la prova del comma successivo. La prossima cosa nel mio progetto è aumentare la durata di tutti i segmenti di test senza modificare altri parametri. Per chiarezza, ho aumentato di cinquanta volte il numero di passi della simulazione per ogni strumento, passando da 1000 a 50.000. Si tratta di un aumento piuttosto consistente, ma questo è l'unico modo per percepire visivamente l'effetto senza test multipli e calcolare la media dei risultati. Diamo un'occhiata al risultato:
Come si può notare, la curva è diventata molto più dolce e si avvicina a una linea retta, il che significa che il secondo principio di aumento del fattore di linearità (bellezza del grafico) con l'aumento della durata del test funziona esattamente come previsto. Naturalmente, ciò è vero solo nell'ipotesi che sia noto che la strategia scelta sia profittevole. A questo punto, ritengo che il secondo comma sia teoricamente che praticamente dimostrato.
Riportiamo ora il numero di passi di simulazione al livello iniziale di mille passi e viceversa, aumentiamo di dieci volte il numero di strumenti negoziati in parallelo, fino a raggiungere il valore di 1000. Secondo la legenda, dovremmo ottenere un aumento visibile della bellezza del grafico. Vediamo se è vero:
Come possiamo vedere, questa ipotesi è stata confermata e l'effetto è estremamente pronunciato. A questo punto, ritengo che tutte e tre le ipotesi siano teoricamente e praticamente dimostrate. I risultati sono i seguenti:
- La condizione per la redditività di qualsiasi sistema di trading è la presenza di un momento predittivo.
- Con l'aumento della durata del trading o del backtesting, qualsiasi curva di un sistema di trading profittevole diventa più bella e dritta (senza auto lot) + [a condizione che il punto 1 sia soddisfatto].
- Con l'aumento del numero di coppie di valute negoziate per un sistema di trading multivaluta o con l'aumento del numero di sistemi negoziati simultaneamente, la curva di redditività del sistema di trading diventa più bella e rettilinea [a patto che sia soddisfatto il punto 1 per ciascuno di questi sistemi].
Test EA
Abbiamo capito come utilizzare correttamente i sistemi di trading, compreso l'algoritmo di riacquisto, per guadagnare nel modo più efficiente e sicuro possibile sia con il trading automatico che con quello manuale. Il calcolo del money management e altre situazioni varie per la corretta combinazione dei sistemi di trading meritano un articolo a parte che scriverò un po' più avanti.
Ho aggiunto questa sezione in modo che possiate vedere chiaramente che l'algoritmo di riacquisto è una strategia funzionante. A tal fine, ho creato un EA di prova che ripete il nostro modello matematico, con l'unica differenza che elabora anche le mezze onde superiori (cicli di trading di vendita). Ho trovato alcune impostazioni che dimostrano la possibilità di creare un sistema di trading analogo per MetaTrader 5. Eccone uno:
I test sono stati condotti nel periodo dal 2009 al 2023 utilizzando test paralleli di tutte le "28" coppie di valute simili al nostro modello matematico. Per costruire l'algoritmo di prova ho utilizzato il modello multibot descritto in uno degli articoli precedenti. Naturalmente, la curva dei profitti è ben lontana dall'essere ideale e il deposito iniziale per questo tipo di trading dovrebbe essere enorme, ma, tuttavia il mio compito in questo articolo non è quello di fornirvi un robot già pronto, ma di dimostrare la vicinanza al modello matematico. La cosa più importante che si dovrebbe capire è che, con alcune modifiche, questo algoritmo sarà molto più sicuro, efficiente e valido. Vi suggerisco di scoprire da soli l'essenza dei miglioramenti. Penso che sia giusto, visto che mostro cose che di solito sono nascoste.
L'Expert Advisor, insieme alle impostazioni e al modello matematico stesso, sono allegati all'articolo come file e, se lo desiderate, potete studiarne la struttura in modo più dettagliato e, forse, sviluppare ulteriormente l'idea. In realtà, il mio modello matematico ha un uso molto più ampio di quanto non abbia descritto qui. Calcola molte importanti caratteristiche di trading grazie alla propria serie di parametri di output dopo il backtest. Naturalmente, la sua funzionalità è molto limitata, ma è sufficiente per la prova e le stime approssimative.
Conclusioni
In questo articolo ho completato la parte pratica della dimostrazione che il principio della diversificazione funziona e va utilizzato. Soprattutto, in combinazione con l'articolo precedente, ho dimostrato sia a livello teorico che pratico molte cose importanti che vi permetteranno almeno di aumentare l'efficienza del vostro trading. Inoltre, la sopravvivenza dell'algoritmo di riacquisto per più di un decennio è stata dimostrata con l'aiuto dell'EA creato.
Considerando ciò, abbiamo la conferma della teoria ondulatoria dei prezzi, o della piattezza del mercato. Vi consiglio di prestare attenzione a questo articolo come ulteriore conferma. All’interno, l'autore presta la massima attenzione esattamente allo stesso algoritmo che ho descritto nel mio articolo. Da qui, è possibile ottenere ulteriori conoscenze su come utilizzare questi effetti per migliorare il mio EA di test o per svilupparne uno proprio.
Tradotto dal russo da MetaQuotes Ltd.
Articolo originale: https://www.mql5.com/ru/articles/12579





- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso