English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Türkçe
Algoritmi per Fare Soldi che Impiegano il Trailing Stop

Algoritmi per Fare Soldi che Impiegano il Trailing Stop

MetaTrader 5Sistemi di trading | 9 dicembre 2021, 14:24
318 0
Гребенев Вячеслав
Гребенев Вячеслав

Introduzione

Uno degli algoritmi con un entrata casuale e un'uscita a tempo è già stato esaminato nell'articolo La strategia Forex "Tutto o niente". Tale algoritmo non ha tenuto conto degli eventi di mercato e della direzione in cui il mercato doveva essere inserito. Solo la volatilità del mercato più o meno costante era importante per l'algoritmo. Fondamentalmente, l'algoritmo non ha prodotto alcun profitto o perdita, ma si è rivelato molto utile quando si gioca alla lotteria.

Il punto principale che attualmente dobbiamo prendere da quell'articolo è che la durata di un'operazione non può essere impostata su meno di un'ora o più di una settimana. I valori di meno di un'ora hanno comportato una perdita molto rapida a causa dello spread, mentre i valori di più di una settimana hanno trascinato la lotteria per anni.

Iniziamo il nostro studio degli algoritmi con la familiare coppia di valute EURUSD e un'uscita usando il trailing stop.

 

1. Algoritmo con Entrata e Uscita Casuali Tramite Trailing Stop.

  1. Entra nel mercato in una direzione casuale;
  2. Impostare il trailing stop uguale a TS;
  3. Attendere fino a quando non viene attivato il trailing stop;
  4. Torna al punto 1 o interrompi il trade.

Puoi aspettarti di ottenere un profitto utilizzando questo algoritmo poiché la situazione del mercato è monitorata dal trailing stop. Chiaramente, se il movimento dei prezzi fosse una passeggiata casuale, questo algoritmo non guadagnerebbe nulla. Ma il movimento dei prezzi reali è ben lungi dall'essere caotico, quindi c'è speranza di qualche profitto.

Invece di indovinare come funzionerà l'algoritmo, sviluppiamo un EA e testiamolo. È già stato detto molto sui modi di impostare un trailing stop in un programma. Non passeremo dal livello algoritmico alla programmazione in questo articolo, altrimenti non arriveremo alla fine. Poiché l'EA sarà sviluppato per scopi di studio, prendiamo il deposito massimo di USD 100.000 e un lotto minimo di 0.1. Questo ci permetterà di vedere più azione prima di uno stop out.

Concordiamo qui che il trailing stop sarà uguale a TS e tutti gli altri stop in questo articolo saranno espressi come percentuale della dimensione corporea media delle ultime cinque candlestick (alto-basso) nel grafico corrente. L'intervallo che useremo per visualizzare il grafico corrente è D1. Puoi prendere qualsiasi altro numero di candlestick, non necessariamente cinque, in quanto non avrà alcun effetto significativo sul ragionamento. È importante che dopo aver scelto questa scala di misurazione, non dipendiamo dalla volatilità attuale, dalla valuta scelta o dalla coppia di valute.

Per un'esecuzione di test, impostare TS=100% su D1. Dopo aver impostato tale valore TS, la durata di un trade sarà di circa un giorno. Come già accennato in precedenza, non è possibile impostare una durata di trade più breve e un valore TS inferiore a causa della perdita rapida dovuta allo spread. L'impostazione di valori maggiori trascinerà il runtime dell'algoritmo.


Fig. 1. Saldo ottenuto dall'algoritmo con un'entrata e un'uscita casuali utilizzando il trailing stop, dove TS=100

Fig. 1. Saldo ottenuto dall'algoritmo con un'entrata e un'uscita casuali utilizzando il trailing stop, dove TS=100

 

La Figura 1 suggerisce che l'algoritmo porta profitto e ora che l'EA è stato sviluppato, potremmo finire l'articolo qui, come di solito accade.

Tuttavia, dopo aver letto articoli di questo tipo, ci sono tre domande che ti lasciano profondamente insoddisfatto:

  1. Il profitto dimostrato è il risultato dell'adattamento dei parametri ai dati storici?
  2. Perché è stata scelta la coppia di valute EURUSD? Cosa succede se vengono utilizzate altre coppie di valute?
  3. Perché è stata selezionata proprio questa parte dei dati storici? Inoltre, l'algoritmo ha una voce casuale e il profitto prodotto potrebbe essere di natura meramente casuale.

Risponderemo a queste domande una per una.

L'algoritmo con un'entrata e un'uscita casuali che utilizzano il trailing stop ha un solo parametro TS che è stato selezionato in base a considerazioni puramente generali: perdita dovuta allo spread e alla durata del trade. L'algoritmo dovrebbe tuttavia essere ottimizzato.

Per l'ottimizzazione, utilizzeremo quasi tutti i dati storici disponibili dal 1990 al 2012. Poiché l'algoritmo ha una voce casuale, prenderemo 100 diverse sequenze casuali di voci per ogni valore TS. Pertanto, elimineremo la casualità nell'algoritmo ed eviteremo di adattarci ai dati storici.

 

Fig. 2. Ottimizzazione del valore TS del trailing stop per EURUSD, D1 (TS ottimale=500)

Fig. 2. Ottimizzazione del valore TS del trailing stop per EURUSD, D1 (TS ottimale=500)

 

L'ottimizzazione è stata eseguita nella modalità "Solo prezzi di apertura" del Tester, che spiega i calcoli allentati, in particolare per i valori TS più piccoli che tuttavia rendono correttamente l'idea generale.

Come si può vedere nella Fig. 2, l'ottimizzazione non dà un chiaro massimo. Il trailing stop più piccolo, dove TS è uguale a 50 e 100, porta a perdite. Inoltre, dove TS si trova tra 150 e 850, l'algoritmo, in media, produce profitto. Dove TS è compreso tra 900 e 1500, l'algoritmo ricomincia a perdere.

I valori TS superiori a 1500 non devono essere considerati. Dove TS = 1500, l'algoritmo esegue circa 25 trade in 22 anni, il che è al limite del ragionevole. Poiché non abbiamo identificato un massimo chiaro, prenderemo il centro dell'intervallo redditizio da 150 a 850, cioè TS = 500 (130 operazioni in 22 anni).

Consideriamo ora il saldo ottenuto dall'algoritmo per diverse coppie di valute. Ancora una volta, per evitare di adattarsi ai dati storici, non considereremo il saldo di un singolo passaggio, ma piuttosto il saldo medio di 100 passaggi con diverse voci casuali.

 

Fig 3. Saldo ottenuto dall'algoritmo con un'entrata e un'uscita casuali utilizzando il trailing stop TS =500 per EURUSD, in media su 100 voci casuali

Fig 3. Saldo ottenuto dall'algoritmo con un'entrata e un'uscita casuali utilizzando il trailing stop TS=500 per EURUSD, in media oltre 100 voci casuali

 

Fig 4. Saldo ottenuto dall'algoritmo con un'entrata e un'uscita casuali utilizzando il trailing stop TS =500 per GBPUSD, in media su 100 voci casuali

Fig 4. Saldo ottenuto dall'algoritmo con un'entrata e un'uscita casuali utilizzando il trailing stop TS = 500 per GBPUSD, in media su 100 voci casuali

 

Fig 5. Saldo ottenuto dall'algoritmo con un'entrata e un'uscita casuali utilizzando il trailing stop TS =500 per USDJPY, in media su 100 voci casuali

Fig 5. Saldo ottenuto dall'algoritmo con un'entrata e un'uscita casuali utilizzando il trailing stop TS=500 per USDJPY, in media oltre 100 voci casuali

 

I saldi ottenuti dall'algoritmo con un'entrata e un'uscita casuali utilizzando il trailing stop TS=500 per EURUSD, GBPUSD e USDJPY, in media su 100 voci casuali, sono mostrati nelle Figure 3-5. I saldi medi vengono visualizzati lungo gli assi Y, il tempo viene visualizzato lungo gli assi X. Diamo un'occhiata più da vicino ai saldi medi.

La prima cosa che può essere sottolineata per tutte le coppie di valute è una forte ripresa verticale e lunghe flessioni piatte. Suggerisco di chiamare algoritmi che si traducono in equilibri di questo tipo algoritmi "pseudo-perdenti". In effetti, se prendiamo un periodo casuale di 3 mesi, molto probabilmente non conterrà una forte ripresa e tutto ciò che vedremo sarà una perdita aggraziata, costante e coerente. Detto questo, questa perdita sarà molto più veloce di una perdita normale a causa dello spread. Allo stesso tempo, possiamo vedere che l'algoritmo pseudo-perdente può essere sia vincente che perdente per un periodo di 20 anni.

Secondo. Il numero di rialzi verticali varia a base di diverse coppie di valute. Ad esempio, non ci sono così tante riprese nel grafico GBPUSD come nel grafico USDJPY. Inoltre, le riprese non sono affatto di natura caotica rispetto al tempo. Un significativo movimento al rialzo del 2009 può essere osservato per tutte e tre le coppie di valute: EURUSD, GBPUSD e USDJPY. I grafici valutari suggeriscono che il movimento al rialzo del 2009 è il risultato della crisi del dicembre 2008. Le ripresa sono quindi indicazioni di crisi. Da questo momento in poi, mi riferirò a tutti i movimenti significativi verso l'alto come crisi.

Le crisi mostrate nei grafici del saldo medio possono riflettere eventi storici reali, ma possono anche accadere da sole, cioè possono essere false. Tali crisi potrebbero anche essere osservate in una passeggiata casuale idealmente caotica, tuttavia tutte sarebbero false. Le crisi non sarebbero mai in sincronia l'una con l'altra in caotiche passeggiate casuali. Il numero di crisi identificate sulla curva del saldo medio determina se il movimento dei prezzi reali è di natura crisi o priva di crisi.

Terzo. Dopo aver esaminato i saldi e le prestazioni dell'algoritmo utilizzando valute diverse, arriviamo gradualmente a comprendere il funzionamento dell'algoritmo. Mentre il mercato è tranquillo, il movimento dei prezzi è simile a una passeggiata casuale caotica e l'algoritmo, in media, perde a causa dello spread. Periodi di perdita consistente si alternano a false crisi - movimenti al rialzo - che si traducono, in media, in perdite dovute allo spread.

Poiché i trade nell'algoritmo sono di una durata molto lunga, in cui la durata del trade può essere di circa due mesi, le perdite sono molto lente e possono essere trascurate. All'avvicinarsi di una vera crisi, il movimento dei prezzi smette di essere caotico. Diventa prevedibile e orientato alle tendenze, cioè incline allo sviluppo di tendenze. L'ulteriore sviluppo della crisi potrebbe portare a un movimento dei prezzi simile a una valanga totalmente diverso da una caotica passeggiata casuale.

L'algoritmo si comporta in crisi come segue: dopo aver indovinato la direzione del trend, l'algoritmo attende il picco di crisi avvicinando il trailing stop ad esso che poi si innesca una volta raggiunto il picco. Se l'algoritmo ha fatto un'ipotesi errata per quanto riguarda la direzione della tendenza, il trailing stop entra in azione all'inizio della tendenza e l'algoritmo inverte la posizione con una probabilità di 50/50. Pertanto, l'algoritmo gestisce con successo circa tre quarti di tutte le crisi reali, che è fondamentalmente il modo in cui fa soldi.

Come si può vedere, per realizzare profitti, l'algoritmo ha bisogno di movimenti di tendenza di crisi. Si riferisce pienamente al movimento dei prezzi EURUSD dalle coppie di valute mostrate sopra. Mentre il movimento dei prezzi GBPUSD è senza tendenza e privo di crisi. Perché c'è una tale differenza nel comportamento dei prezzi? Tutto quello che so dall'analisi fondamentale è che le guerre commerciali scoppiano sempre tra Europa e Stati Uniti, mentre il Regno Unito e gli Stati Uniti hanno una relazione molto amichevole. Possiamo vedere quanto vale questa amicizia nei grafici del saldo medio tracciati utilizzando l'algoritmo.

Il comportamento dei prezzi può anche essere determinato dai regolatori finanziari. La crisi del 2008 è stata soppressa da iniezioni finanziarie riflesse da picchi nei grafici di saldo medio di quasi tutte le coppie di valute. Siamo ben consapevoli della crisi del 2008 dai notiziari di allora. Da allora, gli Stati Uniti hanno intrapreso due cicli di allentamento quantitativo. Dove, quando, in quale direzione e come il denaro è stato iniettato non è stato per qualche motivo, come al solito, segnalato.

Il saldo medio per EURUSD suggerisce crisi nel 2010 e a metà 2010. Possono essere questi i round dell’allentamento quantitativo? I regolatori cercano di intervenire silenziosamente senza informare il mercato. Non è sempre facile identificare una crisi nel grafico dei prezzi ad occhio nudo - i massimi o i minimi dei prezzi non sempre indicano crisi. Il saldo medio del movimento dei prezzi funge da indicatore che aiuta a rivelare le crisi. Quali delle crisi visualizzate sono false e quali sono vere è un argomento complicato trattato a parte.

Diciamo qualche parola sulla stabilità dei movimenti dei prezzi. Ad esempio, il saldo GBPUSD è in costante calo per 22 anni, mentre il saldo EURUSD mostra una crescita abbastanza costante. Il movimento USD/JPY ha pochissima stabilità. La stabilità del movimento dei prezzi è molto importante in quanto è l'unica garanzia della redditività futura dell'algoritmo. Non ci può essere altra garanzia di redditività dell'algoritmo nell'analisi tecnica.

Quindi abbiamo capito come e quali movimenti di prezzo vengono utilizzati dall'algoritmo per portare profitto. E' giunto il momento di esaminare il profitto. Ai fini dello studio, la dimensione del lotto utilizzata sopra era 0,1. Questa dimensione del lotto non è ottimale in termini di profitto. Calcoliamo la dimensione ottimale del lotto. Il profitto cresce in proporzione alla dimensione del lotto. Il rischio di uno stop out è anche proporzionale alle dimensioni del lotto. Per il saldo EURUSD, nel 1991 è stato osservato il prelievo massimo di USD 200.

Se la dimensione del lotto fosse 25 anziché 0,1, il drawdown potrebbe raggiungere USD 50.000 o il 50%. In altre parole, se la dimensione del lotto fosse 25, non saremmo sicuramente in grado di evitare lo stop out. Pertanto, la dimensione ottimale del lotto si trova nell'intervallo di 0,1 e 25. Sentiti libero di fare un calcolo più accurato della dimensione del lotto, se vuoi; prenderei semplicemente la media di 0,1 e 25 e otterrei un 10 approssimativo. Quindi, la dimensione ottimale del lotto è 10.

L'algoritmo ha realizzato 1.400 USD utilizzando la dimensione del lotto di 0,1 (vedi il saldo EURUSD). Se il lotto fosse 10, l'algoritmo porterebbe un profitto di 140.000 USD . Il deposito era di USD 100.000. Di conseguenza, in 22 anni, il nostro profitto sarebbe del 140%, o circa il 6% all'anno. Da un punto di vista pratico, non è molto ma più di un tasso di interesse offerto da molte banche sui depositi in valuta estera.


Variazioni dell'Algoritmo

L'algoritmo sopra discusso presentava un'entrata e un'uscita casuali utilizzando il trailing stop. Era necessaria un'entrata casuale per ottenere i saldi medi senza adattarsi ai dati storici. È stato di grande aiuto quando si è cercato di analizzare e capire come funziona il trailing stop. Tuttavia, l'algoritmo non era al suo meglio affrontando una crisi e la natura guidata dalle tendenze dei movimenti dei prezzi.

Come abbiamo potuto vedere sopra, l'algoritmo potrebbe gestire con successo solo tre quarti delle crisi. Lo sviluppo di un algoritmo che gestisca in modo ottimale il comportamento dei prezzi guidato dalle tendenze è uno dei compiti generali dell'analisi tecnica che non affronteremo questa volta. Per ora, cercheremo solo di migliorare l'algoritmo con una voce casuale.

Una delle idee più semplici è un algoritmo con un’entrata inversa. Abbiamo potuto vedere sopra che quando l'entrata non riuscita nella tendenza e l'attivazione del trailing stop, l'algoritmo potrebbe indovinare la direzione della tendenza con una probabilità 50/50. Smettiamo di indovinare ed entriamo proprio nella direzione opposta al trade precedente.

2. Algoritmo con Entrata e Uscita Inversi Tramite Trailing Stop

  1. Entra nel mercato nella direzione opposta al trade precedente. In primo luogo, entriamo, diciamo, nella direzione dell'acquisto.
  2. Impostare il trailing stop uguale a TS
  3. Attendere l'attivazione del trailing stop
  4. Torna al punto 1 o interrompi il trade.

Lo sviluppo di un EA basato sull'algoritmo è un'attività di routine. Senza preoccuparci dell'ottimizzazione del valore TS, prendiamo il valore ottimale precedentemente identificato di 500. (Se si sceglie di eseguire l'ottimizzazione, si otterrà comunque TS = 500). Il deposito è, come prima, USD 100.000, la dimensione del lotto è 0.1 e l'intervallo di tempo è D1.

Fig. 6. Saldo ottenuto dall'algoritmo con un’entrata inversa (prima entrata - buy)

Fig. 6. Saldo ottenuto dall'algoritmo con una voce inversa (prima entrata - buy)

Fig. 6. Saldo ottenuto dall'algoritmo con un’entrata inversa (prima entrata - sell)

Fig. 6. Saldo ottenuto dall'algoritmo con un’entrata inversa (prima entrata - sell)

Le Figure 5-6 mostrano i saldi ottenuti dall'algoritmo con un’entrata inversa. Possiamo vedere che la direzione della prima entrata conta solo fino alla prima crisi. Dopo la prima crisi, i saldi diventano paralleli.

Come prima, questo è un algoritmo pseudo-perdente che ottiene soldi sulle crisi, specialmente sulla crisi del 2008. I valori di drawdown mostrati dagli algoritmi con una voce casuale e inversa sono circa gli stessi, tuttavia il profitto prodotto utilizzando l'algoritmo di entrata inversa è di 9.000 USD rispetto a 1.400USD prima. E di conseguenza, la redditività non è più del 6%, ma invece 6*9000/1400=38% all'anno. E il 38% all'anno da un punto di vista concreto non è poi così male.

L'algoritmo con un'uscita che utilizza il trailing stop può essere ulteriormente migliorato in diverse direzioni. È possibile utilizzare voci diverse per prevedere la direzione del trend o utilizzare la natura periodica delle crisi o abilitare/disabilitare l'algoritmo basato sull'analisi fondamentale. E molte altre cose. Lo lascerò come un trattamento speciale per gli appassionati.

La parte più difficile di questi algoritmi non è lo sviluppo o addirittura la corretta ottimizzazione di un EA, ma piuttosto l'ottenimento di un comportamento di prezzo stabile a lungo termine (cioè il saldo medio) dal punto di vista algoritmico. E la stabilità del prezzo sarà generosamente ripagata in profitto. L'ottenimento del comportamento del prezzo in termini di un determinato algoritmo richiederà la modifica dei parametri dell'algoritmo, che è un'altra procedura complicata separata.

Infine, non posso che approfittare del costante comportamento di perdita dei prezzi GBPUSD mostrati nella Figura sopra. La cosa più primitiva che possiamo fare è fare trading nella direzione opposta ai trade dell'algoritmo con un'entrata e un'uscita casuali usando il trailing stop. Tuttavia, non sarà così grande. Una soluzione migliore sarebbe quella di utilizzare il trailing take o il trailing profit - non sono sicuro di quale sia il modo migliore per chiamarlo.

Il trailing take è, in sostanza, molto simile al trailing stop, ma invece del livello di stop loss l'algoritmo segue costantemente il livello di take profit. Se il prezzo corrente si allontana dal livello di take profit di un valore superiore a TP, il livello di take profit viene spostato verso il prezzo. Il livello di stop loss rimane non impostato, cioè al livello di stop out.

Per evitare di ripetere l'algoritmo di entrata casuale, stabilirò immediatamente l'algoritmo con un'entrata e un'uscita inverse utilizzando la presa finale.

3. Algoritmo con Entrata e Uscita Inversi Utilizzando il Trailing Take

  1. Entra nella direzione opposta al trade precedente;
  2. Impostate il take trailing uguale a TP;
  3. Attendere fino a quando non scatta il take trailing;
  4. Torna al punto 1.

Stiamo lavorando con GBPUSD, D1, il deposito è di USD 100.000, la dimensione del lotto per scopi di studio è 0.1, TP=500.

Fig. 7. Saldo ottenuto dall'algoritmo con un'entrata e un'uscita inverse utilizzando la take trailing.GBPUSD, D1

Fig. 7. Saldo ottenuto dall'algoritmo con un'entrata e un'uscita inverse utilizzando la take trailing. GBPUSD, D1

L'algoritmo funziona su movimenti di prezzo senza crisi e senza tendenze.

Il meccanismo di funzionamento dell'algoritmo è il seguente: Un movimento di prezzo senza tendenza tende a rompere qualsiasi tendenza e trasformarsi in un canale orizzontale. Se il take profit viene attivato nel canale orizzontale, significa che siamo già accanto al muro del canale e dovremmo entrare nella direzione opposta al trade precedente che è esattamente quello che facciamo.

La Figura suggerisce che i valori di drawdown dimostrati da questo algoritmo sono un po’ più piccoli di quelli dei precedenti, mentre il profitto prodotto in 19 anni utilizzando la dimensione minima del lotto di 0,1 adottato per scopi di studio è di USD 7.000. La redditività ottenuta utilizzando il lotto ottimale può essere stimata approssimativamente al 30% annuo.

Penso che, nel solito modo, finirò questo articolo con questo grafico di saldo, muovendomi abbastanza vigorosamente verso l'alto. Speriamo che la coppia di valute e i dati storici scelti, così come l'ottimizzazione dell'algoritmo fornita in questo articolo, non ti lascino profondamente insoddisfatto.

Conclusione

L'articolo ha preso in considerazione tre algoritmi con entrate e uscite casuali e inverse nel trading utilizzando il trailing stop. Ha dimostrato il comportamento dei prezzi EURUSD, USDJPY e GBPUSD in termini di algoritmo con un'entrata e un'uscita casuali utilizzando il trailing stop.

Sulla base della stabilità esibita dei movimenti dei prezzi, è stato proposto di utilizzare l'algoritmo con un'entrata e un'uscita inverse utilizzando il trailing stop come redditizio con una redditività stimata del 6% all'anno. In base alla stabilità dei movimenti dei prezzi e alla comprensione del funzionamento dell'algoritmo di entrata casuale, sono stati proposti due algoritmi di entrata inversa che possono raggiungere una redditività del 30% all'anno. Sono stati presi in considerazione i meccanismi di funzionamento dell'algoritmo e sono stati forniti i codici dei pertinenti EA.

Tradotto dal russo da MetaQuotes Ltd.
Articolo originale: https://www.mql5.com/ru/articles/442

Come Creare un Robot di Trading in Pochissimo Tempo Come Creare un Robot di Trading in Pochissimo Tempo
Il trading sui mercati finanziari comporta molti rischi, incluso il più critico: il rischio di prendere una decisione di trading sbagliata. Il sogno di ogni trader è quello di trovare un robot di trading, che sia sempre in buona forma e non soggetto alle debolezze umane: paura, avidità e impazienza.
Crea il Tuo Robot di Trading in 6 Passaggi! Crea il Tuo Robot di Trading in 6 Passaggi!
Se non sai come vengono costruite le classi di trading e hai paura delle parole "Programmazione Orientata agli Oggetti", allora questo articolo fa per te. In effetti, non è necessario conoscere i dettagli per scrivere il proprio modulo di segnali di trading. Basta seguire alcune semplici regole. Tutto il resto verrà fatto da MQL5 Wizard e otterrai un robot di trading pronto all'uso!
Tuffo veloce in MQL5 Tuffo veloce in MQL5
Hai deciso di studiare il linguaggio di programmazione delle strategie di trading MQL5, ma non ne sai nulla? Abbiamo cercato di esaminare il terminale MQL5 e MetaTrader 5 dal punto di vista dei principianti ​​e abbiamo scritto questo breve articolo introduttivo. In questo articolo, puoi trovare una breve idea delle possibilità del linguaggio, oltre ad alcuni suggerimenti su come lavorare con MetaEditor 5 ed il terminale.
Sistemi di Trading Semplici che Utilizzano Indicatori Semaforici Sistemi di Trading Semplici che Utilizzano Indicatori Semaforici
Se esaminiamo nel dettaglio qualsiasi sistema di trading complesso, vedremo che si basa su una serie di semplici segnali di trading. Pertanto, non è necessario che gli sviluppatori alle prime armi inizino immediatamente a scrivere algoritmi complessi. Questo articolo fornisce un esempio di un sistema di trading che utilizza indicatori semaforici per eseguire operazioni.