Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Strategia BackTest del canale di prezzo scoppiata in Python
Strategia BackTest del canale di prezzo scoppiata in Python
Ciao e bentornati sul mio canale. Nel video di oggi, ci concentreremo sullo sviluppo e sul backtest di una strategia basata sui breakout dei canali di prezzo. Se sei nuovo qui, ti consiglio di guardare il nostro episodio precedente in cui ho introdotto e spiegato il codice per il nostro indicatore del canale di prezzo basato su Python personalizzato. Lascio un link nella descrizione qui sotto. Ora, tuffiamoci nell'argomento di oggi ed eseguiamo la parte del backtesting.
Nel video precedente, abbiamo presentato il codice per rilevare i canali di prezzo. Ricapitolando, rileviamo i frattali, che sono i punti alti e bassi delle candele. Un frattale è un punto sulla candela che è più alto o più basso di tutte le candele vicine allo stesso tempo. Rileviamo diversi frattali, sia alti che bassi, e li adattiamo alle pendenze usando la regressione. Queste pendenze rappresentano il canale che definisce il canale di prezzo. Quindi proviamo a rilevare i breakout quando il prezzo esce da questo canale, supponendo che il prezzo continui nella stessa direzione.
Visivamente, l'indicatore sembra funzionare bene, ma siamo curiosi di vedere come si comporta su una strategia a lungo termine. Ecco perché stiamo conducendo il backtest completo oggi. Useremo Python per il backtest e puoi scaricare il codice dal link nella descrizione.
Per iniziare, carichiamo i nostri dati, prendendo da 10 a 20 anni di dati dal 2003 al 2023, che è quello che abbiamo usato anche nell'ultimo video. Impostiamo il numero di back candle a 45, che è la finestra sopra la quale rileveremo i frattali (alti e minimi) e definiremo il nostro canale.
Abbiamo una funzione chiamata is_pivot che rileva se una candela è un punto pivot o un punto frattale. Prende due parametri: l'indice della candela e la dimensione della finestra. Controlla se la candela è più alta o più bassa di tutti i massimi o minimi delle candele vicine all'interno della finestra specificata. Restituisce un valore basato sul tipo di pivot: 1 per un pivot alto, 2 per un pivot basso, 3 per entrambi e 0 per gli altri casi. Applichiamo questa funzione a ogni candela nel nostro data frame e salviamo i risultati in una nuova colonna chiamata "is_pivot".
Successivamente, dobbiamo raccogliere i canali o rilevare i canali. Guardiamo le 45 candele prima della candela corrente e controlliamo i frattali alti e bassi. Se abbiamo almeno tre massimi e tre minimi, li adattiamo utilizzando la regressione lineare e restituiamo i parametri delle pendenze. Altrimenti, restituiamo zeri. Applichiamo questa funzione al frame di dati utilizzando la dimensione della finestra specificata ei risultati vengono salvati in una nuova colonna chiamata "canale".
Abbiamo anche una funzione chiamata is_breakout che rileva i breakout al di fuori del canale del prezzo. Per ogni candela, controlliamo se il massimo della candela precedente è all'interno del canale e se il prezzo di chiusura della candela precedente è inferiore al minimo del canale. Se entrambe le condizioni sono soddisfatte e anche i prezzi di apertura e chiusura della candela corrente sono al di fuori del canale, restituiamo un segnale: 1 per un segnale di tendenza al ribasso, 2 per un segnale di tendenza al rialzo e 0 per gli altri casi. Eseguiamo questa funzione su tutte le candele e salviamo i risultati in una nuova colonna chiamata "is_breakout".
Ora che abbiamo i segnali di breakout, possiamo procedere con il backtesting. Utilizziamo la libreria di backtesting come di consueto, con una dimensione iniziale del lotto pari al 10% dell'equity. Definiamo un rapporto tra take profit e stop loss e impostiamo i livelli di stop loss e take profit in base al segnale. Ad esempio, se il segnale è 2 (uptrend) e non ci sono posizioni aperte, impostiamo lo stop loss al minimo della candela precedente e il take profit a un multiplo dell'average true range (ATR).
Iteriamo su ogni candela nel data frame e controlliamo se c'è un segnale di breakout. Se c'è un segnale e nessuna operazione è attualmente aperta, entriamo in una nuova operazione basata sul segnale. Calcoliamo la dimensione dell'operazione in base alla dimensione del lotto e all'equità disponibile.
Una volta aperta una negoziazione, ne seguiamo l'avanzamento. Aggiorniamo i livelli di stop loss e take profit man mano che il prezzo si sposta a nostro favore. Se il prezzo raggiunge il livello di stop loss o take profit, chiudiamo l'operazione e registriamo il risultato.
Infine, calcoliamo e stampiamo le metriche delle prestazioni complessive, incluso il numero totale di operazioni, la percentuale di operazioni vincenti, il rendimento medio per operazione e il rendimento complessivo del capitale proprio.
Ecco una spiegazione dettagliata della strategia di breakout del canale di prezzo senza il codice:
L'implementazione di questa strategia nel codice ti consentirà di eseguirne il backtest su dati storici e di analizzarne le prestazioni. Il codice fornito in precedenza dimostra l'implementazione della strategia utilizzando la libreria Backtesting in Python.
Indicatore di interruzione del canale in Python
Indicatore di interruzione del canale in Python
CIAO! Oggi approfondiremo gli esempi di breakout del canale di prezzo generati da un algoritmo. Successivamente, ti mostrerò il codice, che puoi scaricare gratuitamente dal link nella descrizione qui sotto. Cominciamo col capire cos'è il breakout del canale di prezzo.
Il breakout del canale di prezzo è uno strumento di analisi tecnica utilizzato dai trader per identificare potenziali breakout di prezzo. Funziona tracciando un canale attorno all'azione del prezzo, rappresentando i punti più alti e più bassi del prezzo in un periodo specifico. Quando il prezzo esce da questo canale, può indicare un potenziale cambiamento di tendenza o un'opportunità di mercato.
La parte interessante è che possiamo automatizzare il processo di identificazione dei canali e dei potenziali breakout utilizzando Python. In questo video, ti guiderò attraverso i passaggi dell'algoritmo e ti fornirò il codice, permettendoti di modificarlo e perfezionarlo in base alle tue preferenze di trading e all'asset su cui lo utilizzerai.
Analizziamo gli esempi riportati nel grafico. Le stelle nere rappresentano i breakout rilevati dall'algoritmo. Le stelle sotto le candele segnalano un futuro trend rialzista, mentre le stelle sopra le candele indicano un futuro trend ribassista. Questi breakout si basano sui canali identificati dall'algoritmo.
Per spiegare l'algoritmo, consideriamo il primo esempio. Abbiamo una tendenza al ribasso, seguita da un breakout al di sotto di un certo canale. La stella sotto la candela indica una futura tendenza al ribasso. È importante notare che questo particolare canale è diverso da quello mostrato sul grafico. L'algoritmo rileva i canali in base alle candele precedenti.
Un altro esempio è un breakout sopra un canale, che segnala un futuro trend rialzista. Possiamo osservare questi breakout e la loro relazione con i canali rilevati dall'algoritmo. L'algoritmo utilizza tre punti di rilevamento: punti pivot, rilevamento del canale e rilevamento del breakout.
Innanzitutto, rileva i punti pivot, che sono candele con valori elevati rispetto alle candele vicine o valori bassi rispetto alle candele vicine. L'algoritmo verifica la presenza di due candele su ciascun lato come pivot massimi o minimi. Questi punti di rotazione fungono da punti di riferimento per le linee di raccordo per definire i canali.
Successivamente, l'algoritmo adatta le linee ai massimi e ai minimi del pivot, creando il canale. Questo passaggio identifica i limiti superiore e inferiore del canale. Il canale rappresenta il potenziale intervallo di movimento dei prezzi.
La terza fase è il rilevamento dei breakout. L'algoritmo determina se si è verificato un breakout confrontando la candela corrente con il canale. La condizione di breakout è definita in base alla posizione dei prezzi di apertura e chiusura rispetto al canale. In questo video consideriamo i breakout sopra e sotto il canale.
In Python, hai la flessibilità di modificare le condizioni di breakout e definire i tuoi schemi in base alle tue preferenze di trading e all'asset che stai negoziando. Il codice fornito nel link servirà come punto di partenza per la tua sperimentazione.
L'algoritmo sembra funzionare bene sulla base degli esempi mostrati utilizzando l'intervallo di tempo giornaliero e i prezzi in euro/dollaro USA. Tuttavia, sono necessari ulteriori test e analisi. Ora, tuffiamoci nel codice.
Nel file Jupyter Notebook importiamo le librerie necessarie: pandas, numpy, plotly e scipy.stats. Importiamo anche un file di dati CSV contenente i prezzi delle candele giornaliere in euro/dollaro USA dal 2003 al 2023.
Il codice inizia definendo una funzione per rilevare se una candela è un punto di rotazione. Richiede due argomenti: l'indice della candela da testare e il parametro della finestra, che determina il numero di candele vicine da considerare. La funzione controlla se il massimo e il minimo della candela corrente sono superiori o inferiori ai massimi e minimi delle candele vicine. Assegna etichette (0, 1, 2 o 3) in base al tipo di pivot (alto, basso o entrambi).
Per rilevare i breakout dei canali di prezzo in un grafico a candela, puoi seguire questi passaggi:
L'idea generale è quella di identificare le linee di tendenza che racchiudono i movimenti dei prezzi all'interno del numero specificato di back candle. Rilevando i breakout da questi canali, puoi potenzialmente identificare movimenti di prezzo significativi e prendere decisioni di trading informate.
È importante notare che il codice fornito in precedenza è un esempio semplificato e, a seconda dei requisiti di trading specifici, potrebbe essere necessario modificare e mettere a punto il codice in base alle proprie esigenze. Inoltre, considera di incorporare strategie di gestione del rischio, altri indicatori e fattori rilevanti per il tuo approccio al trading quando utilizzi tecniche di breakout del canale per scopi di trading reali.
Sfida della strategia di trading di ChatGPT
Sfida della strategia di trading di ChatGPT
Ciao e benvenuto al nostro ultimo esperimento. In questo video, mostrerò il potere dell'intelligenza artificiale confrontandolo con l'esperienza di un vero trader umano. Approfondiremo la strategia di breakout del canale di prezzo e sfideremo il nostro modello di intelligenza artificiale, ChatGPT, per vedere come si comporta. Se scopriamo qualcosa di interessante, scriverò il mio algoritmo nel prossimo video e confronterò i risultati delle prestazioni. Più avanti condividerò anche il codice Python che userò in questo video. Puoi scaricarlo dal link nella descrizione qui sotto se sei curioso e hai voglia di sperimentare ed estendere la nostra strategia. Quindi, siediti, rilassati e godiamocela.
Quando parliamo di indicatori di breakout del canale, di solito consideriamo modelli di grafici a candele e punti frattali. Il breakout si verifica in genere quando il prezzo si sposta oltre un canale e, dopo il breakout, prevediamo che il trend continui nella stessa direzione, almeno per un po'. Oggi proveremo a fare in modo che ChatGPT generi il codice per noi, in particolare per la strategia di breakout del canale di prezzo.
Prima di immergerci nel nostro esperimento con ChatGPT, programmerò la stessa strategia, il breakout del canale del prezzo, a modo mio nel prossimo video. Questo ci permetterà di confrontare i risultati ed evidenziare il controllo che abbiamo su ogni singolo dettaglio del nostro programma. Quindi, rimanete sintonizzati e cominciamo.
Ora, iniziamo definendo la strategia di breakout del prezzo. Questo approccio al trading prevede l'identificazione dei livelli chiave di supporto e resistenza utilizzando strumenti di analisi tecnica come linee di tendenza e modelli grafici. Presta molta attenzione ai livelli che sono stati testati più volte in passato e osserva l'azione dei prezzi a quei livelli. Una volta individuati i livelli chiave, possiamo impostare le regole di entrata e di uscita.
L'impostazione delle regole di entrata e uscita è la parte più impegnativa della strategia. Implica decidere a quale livello di prezzo entrerai in un trade e quando uscirai per prendere profitti o limitare potenziali perdite. Il monitoraggio dei movimenti di prezzo dell'asset è fondamentale una volta aperta una posizione. Dovremmo utilizzare gli ordini di stop loss per limitare le potenziali perdite nel caso in cui il trade vada contro di noi.
Dopo aver impostato le regole di ingresso e gestito il commercio, dobbiamo monitorare i commerci aperti. Se il prezzo continua a muoversi nella direzione prevista, possiamo considerare di modificare la nostra strategia di uscita per acquisire ulteriori profitti. Ciò richiede un monitoraggio e un adattamento continui in base alle mutevoli condizioni del mercato.
Ecco una ripartizione della strategia:
Identifica i livelli chiave di supporto e resistenza: utilizza strumenti di analisi tecnica come linee di tendenza e schemi grafici per identificare i livelli che sono stati testati più volte in passato. Questi livelli fungono da supporto o resistenza e formano i canali.
Definire il livello di breakout: una volta identificati i canali, determinare il livello di breakout. Questo è il livello di prezzo al quale il prezzo si sposta oltre i confini del canale. Indica una potenziale continuazione del trend.
Imposta le regole di entrata e uscita: determina i criteri per entrare in un'operazione quando si verifica un breakout. Questo può avvenire quando il prezzo chiude al di sopra del limite superiore del canale per un breakout rialzista o al di sotto del limite inferiore del canale per un breakout ribassista. Inoltre, stabilisci criteri per uscire dal trade, come prendere profitti a un determinato livello target o utilizzare un trailing stop loss per proteggerti da movimenti di prezzo avversi.
Monitorare le negoziazioni aperte: una volta inserita una negoziazione, monitorare attentamente il movimento dei prezzi. Regola la strategia di uscita se il prezzo continua a muoversi favorevolmente. Ciò potrebbe comportare il trascinamento dello stop loss per proteggere i profitti o l'impostazione di un nuovo livello target per acquisire ulteriori guadagni.
Gestire il rischio: implementare tecniche di gestione del rischio per limitare le potenziali perdite. Ciò può includere l'impostazione di un ordine di stop loss a un livello predeterminato per uscire dall'operazione se il prezzo si muove contro la tendenza prevista.
Adattamento continuo: adattare la strategia in base alle mutevoli condizioni di mercato. La strategia di breakout del canale di prezzo richiede un monitoraggio e un aggiustamento continui per cogliere le migliori opportunità di trading.
Seguendo questi passaggi e applicandoli al mercato e al periodo di tempo specifici in cui stai negoziando, puoi implementare la strategia di breakout del canale di prezzo. Ricorda che l'efficacia della strategia può variare a seconda di vari fattori ed è importante eseguire il backtest e convalidare la strategia prima di applicarla nel trading in tempo reale.
Padroneggia il trading di griglia FOREX con la strategia di copertura automatizzata utilizzando Python
Padroneggia il trading di griglia FOREX con la strategia di copertura automatizzata utilizzando Python
Nel video precedente, abbiamo testato il sistema di trading a griglia sul mercato Forex e abbiamo scoperto che ha prodotto buoni risultati con rendimenti elevati e un rapporto eccezionale. Tuttavia, sulla base dei tuoi commenti, ci siamo resi conto che alcuni dettagli dovevano essere corretti per condurre un backtest più accurato. Di conseguenza, abbiamo apportato le modifiche proposte al nostro algoritmo.
Se non hai guardato il video precedente in cui abbiamo dettagliato la strategia della griglia, ti consiglio di verificarlo prima in quanto fornisce una comprensione più approfondita della strategia. Puoi trovare il link a quel video nella descrizione qui sotto. Inoltre, puoi scaricare la versione aggiornata del codice Python dal link fornito.
Dopo aver implementato le modifiche al codice, abbiamo ancora un sistema potenzialmente preferibile, a seconda del set di parametri utilizzato. Tieni presente che non ho dedicato molto tempo all'ottimizzazione dei parametri, quindi puoi scaricare il codice e sperimentare regolandoli a tuo piacimento. Ciò ti consentirà di regolare il livello di rischio in base alle tue preferenze. Puoi includere più rischio a scapito della diminuzione del rapporto tagliente o diminuire il rischio e i rendimenti aumentando il rapporto tagliente.
Ora, discutiamo le modifiche specifiche apportate alla versione precedente del codice. In primo luogo, abbiamo rimosso uno dei parametri relativi al rapporto take profit/stop loss. Ci siamo resi conto che questo rapporto dovrebbe essere modificato all'interno della strategia stessa, quindi non è necessario impostarlo a questo punto. Le funzioni utilizzate nella versione precedente rimangono le stesse.
La prima modifica significativa è stata relativa alla dimensione del lotto. Nella versione precedente, la dimensione del lotto era impostata su un valore inferiore a uno, che indicava una percentuale dell'equity corrente. Tuttavia, questo ha violato le regole della strategia della griglia perché stavamo negoziando in entrambe le direzioni con lotti di dimensioni diverse. Per correggere ciò, impostiamo la dimensione del lotto come valore fisso (50 in questo esempio).
La seconda importante modifica riguarda la funzione backtest. In precedenza, quando aprivamo uno scambio e poi provavamo ad aprire uno scambio opposto o uno scambio nella direzione opposta, la funzione di backtest chiudeva lo scambio precedente. Ciò significava che se prima vendevamo e poi acquistavamo lo stesso importo, la funzione di backtesting chiudeva la nostra posizione di vendita. Per consentire al backtesting di aprire due operazioni indipendentemente in direzioni opposte, abbiamo utilizzato il parametro di copertura impostato su true. Ciò consente posizioni nella direzione opposta sullo stesso asset contemporaneamente. Inoltre, impostiamo il parametro degli ordini esclusivi su false, il che significa che un ordine non annullerà l'ordine precedente.
Per i valori di stop loss, li impostiamo a 1,5 volte la distanza della griglia e il take profit è impostato a 0,5 volte la distanza della griglia. Il rapporto take profit/stop loss è impostato a 0,5. Si noti che questi sono parametri casuali utilizzati per l'esempio. In un sistema reale, è importante assicurarsi che lo stop loss sia più lontano del take profit, poiché la strategia si basa sull'instabilità del mercato per generare profitti.
Utilizzando questi parametri, un conto in contanti di $ 500 e un margine di 1 a 10, abbiamo ottenuto i seguenti risultati su due mesi di dati: una percentuale di rendimento di 13,49, un rapporto netto di 3,8 e un tasso di vincita del 72%. La curva equity mostra una pendenza crescente con alcune aree di drawdown.
Per diminuire il rischio e aumentare il rapporto netto, potresti prendere in considerazione l'idea di iniziare con denaro aggiuntivo o di adeguare il margine. Ad esempio, iniziando con $ 1.000 e mantenendo un margine di 1 a 10, il rendimento è sceso all'1,7% in due mesi, ma il rapporto netto è aumentato a 4,9. Ciò indica che il rischio è diminuito con questo cambiamento di parametro.
Tieni presente che ci sono molti parametri con cui lavorare in questo sistema e trovare il giusto equilibrio è fondamentale. Puoi provare a modificare anche i rapporti di stop loss e take profit.
È importante notare che non tutti i broker consentono operazioni di copertura, il che significa che potrebbero non consentire di aprire posizioni opposte contemporaneamente sullo stesso asset. Questo può dipendere dal broker e dalla tua posizione. Alcuni telespettatori degli Stati Uniti hanno menzionato nei commenti che ciò non è consentito nella loro regione. Pertanto, è consigliabile discutere con il proprio broker prima di implementare questa strategia per assicurarsi che sia in linea con le loro politiche.
Infine, ricorda che il backtesting è il primo passo per studiare un sistema, ma non è sufficiente. È fondamentale testare la strategia dal vivo sul mercato utilizzando un conto cartaceo, in quanto ciò includerà lo spread della valuta scambiata e potrebbe influire sui risultati attesi.
Strategia di copertura per il trading in Python
Strategia di copertura per il trading in Python
Ciao a tutti, oggi testeremo la strategia di grid trading. Questa strategia è nota per la sua semplicità e non richiede alcun indicatore tecnico per determinare la tendenza. Ciò significa che non abbiamo bisogno di indovinare la tendenza in anticipo. Il trading a griglia implica il trading simultaneo in entrambe le direzioni long e short, rendendolo adatto al trading algoritmico.
Per valutare questa strategia, condurremo un backtest utilizzando il linguaggio Python. Useremo i dati storici che coprono due mesi, con un intervallo di tempo di cinque minuti. I risultati del backtest mostrano un costante aumento del patrimonio netto durante il periodo di test e la strategia produce rapporti di performance impressionanti. L'indice di Sharpe, che misura i rendimenti aggiustati per il rischio, si attesta intorno a 5,7.
Se sei interessato alla parte di codifica, puoi scaricare il file Jupyter Notebook dal link fornito nella descrizione sottostante. La strategia ha un significato personale per l'autore, poiché ricorda di aver trasformato un piccolo conto in una somma considerevole utilizzando questo sistema quando ha iniziato a fare trading per hobby.
Il concetto alla base della strategia di grid trading è quello di creare una griglia di livelli di prezzo sul grafico. Ogni volta che il prezzo attraversa queste linee della griglia, apriamo sia posizioni lunghe che corte. Il livello di take profit è impostato sulla riga della griglia successiva per ogni posizione. Come mostrato in un grafico di esempio, la strategia prevede l'apertura delle posizioni lunghe e corte iniziali, seguita dalla chiusura della posizione vincente al livello successivo della griglia. Quindi, vengono aperte due posizioni aggiuntive, una lunga e una corta, ogni volta che viene attraversata una linea della griglia.
Una sfida con questa strategia è gestire le negoziazioni in perdita che rimangono aperte ai margini della griglia. Alcune posizioni potrebbero non raggiungere mai i loro valori di take profit, creando difficoltà nel sistema. Vari approcci possono essere impiegati per gestire questa situazione. Alcuni trader possono scegliere di chiudere le negoziazioni rimanenti alla fine della giornata di negoziazione, mentre altri possono calcolare se si trovano in una situazione di profitto generale ogni poche ore e chiudere tutto per ricominciare da capo con una nuova griglia. La soluzione dipenderà da parametri aggiuntivi, come l'intervallo di tempo, il numero massimo consentito di operazioni parallele e la distanza della griglia.
Nella parte di codifica, l'autore applica un valore di stop loss per ogni operazione utilizzando l'Average True Range (ATR). Questo valore di stop loss viene inizialmente calcolato in base alla distanza della griglia, ma poi viene utilizzato l'ATR per perfezionarlo. L'ATR tiene conto della volatilità del mercato al momento dell'immissione delle negoziazioni. L'autore afferma che questo potrebbe non essere l'approccio migliore e incoraggia la sperimentazione con diversi parametri per trovare lo scenario ottimale per la strategia.
Il motivo per cui questo sistema potrebbe funzionare in molti casi è che sfrutta il rumore del mercato. Finché il mercato oscilla intorno alla griglia, la strategia beneficia delle fluttuazioni dei prezzi e apre posizioni sia in direzione lunga che corta. Si prevede che il sistema funzionerà meglio in intervalli di tempo più brevi, dove vi è una maggiore oscillazione dei prezzi e, quindi, profitti potenzialmente più elevati.
La strategia offre due vantaggi. In primo luogo, elimina la necessità di indovinare la tendenza, poiché non segue alcuna tendenza specifica. In secondo luogo, semplifica il processo di trading concentrandosi sulla gestione delle operazioni aperte in perdita. C'è solo un parametro regolabile in questa strategia, che è la distanza della griglia. Tuttavia, è fondamentale scegliere l'intervallo di tempo e la distanza della griglia appropriati per l'asset specifico oggetto di negoziazione.
Il file Jupyter Notebook fornito dimostra l'implementazione della strategia in Python. Il codice importa varie librerie, tra cui yfinance per il recupero dei dati, pandas e numpy per la manipolazione dei dati e pandas_ta per le funzioni di analisi tecnica come il calcolo dell'ATR. I dati per la coppia EUR/USD vengono scaricati utilizzando un periodo di tempo specifico.
La distanza della griglia, il rapporto take profit/stop loss e il prezzo medio della griglia sono definiti come variabili. Il prezzo medio funge da prezzo medio attorno al quale è costruita la griglia. La funzione generate_grid() è definita per generare i livelli della griglia in base al prezzo medio e alla distanza della griglia. La funzione calcola i livelli superiore e inferiore della griglia utilizzando un ciclo.
Successivamente, viene implementata la logica della strategia. Il backtest inizia inizializzando variabili come il saldo iniziale, la dimensione della posizione e il livello di stop loss. Un ciclo for viene utilizzato per scorrere ogni barra nei dati cronologici.
All'interno del ciclo, il prezzo corrente viene controllato per determinare se attraversa uno qualsiasi dei livelli della griglia. Se si verifica un cross, vengono aperte nuove posizioni sia in direzione long che short. I livelli di take profit e stop loss sono impostati in base ai livelli della griglia e alla distanza di stop loss.
Il ciclo controlla anche se eventuali posizioni aperte raggiungono i livelli di take profit o stop loss. Se una posizione raggiunge uno dei due livelli, viene chiusa e viene registrato il profitto o la perdita corrispondente.
Alla fine del backtest, viene tracciata la curva del patrimonio netto, che mostra la crescita del saldo del conto nel tempo. Le metriche delle prestazioni, inclusi il profitto totale, il numero di operazioni, la percentuale di vincita e l'indice di Sharpe, vengono calcolate e visualizzate.
È importante notare che mentre la strategia di trading di rete può aver mostrato risultati promettenti nel backtest, è essenziale valutare e convalidare a fondo qualsiasi strategia di trading prima di implementarla nel trading reale. Il backtesting aiuta a valutare la performance storica, ma non garantisce la redditività futura.
Per comprendere appieno i dettagli dell'implementazione ed esplorare il codice, ti invito a scaricare il file Jupyter Notebook fornito nella descrizione. Il notebook contiene il codice completo con commenti dettagliati per guidare l'utente attraverso il processo.
Ricorda che il trading comporta dei rischi ed è sempre consigliabile consultare un consulente finanziario professionista prima di prendere qualsiasi decisione di investimento.
Come costruire un bot di trading in Python
Come costruire un bot di trading in Python
Ciao, in questo video ti mostrerò come automatizzare la tua strategia di trading usando Python. In altre parole, ti guiderò attraverso il processo di creazione del tuo bot di trading gratuito che può eseguire automaticamente operazioni per tuo conto, seguendo una strategia specifica. Il codice che userò è disponibile per il download dal link nella descrizione qui sotto, quindi puoi seguire il video e poi scaricare il file per usarlo come preferisci.
Quello che dimostrerò in questo video può funzionare per qualsiasi strategia di trading che può essere implementata come funzione Python. Può essere un modo eccellente per testare la tua strategia sui dati di mercato in tempo reale invece di limitarsi a eseguire il backtest sui dati passati. Se vuoi testare la tua strategia su dati futuri o in tempo reale, puoi utilizzare le tecniche presentate in questo video.
Iniziamo aprendo il nostro file Jupyter Notebook. Innanzitutto, scaricherò alcuni dati storici a scopo di test. È importante notare che non utilizzeremo questi dati per il trading dal vivo; è principalmente per testare le nostre funzioni di segnale. Per scaricare i dati, sto utilizzando il modulo YFinance e recuperando i dati di cambio da Euro a Dollaro USA tra due date specifiche, con un intervallo di tempo di 15 minuti.
Una cosa da tenere a mente è che quando si scaricano dati per intervalli di tempo brevi come l'intervallo di 15 minuti, Yahoo Finance consente di scaricare solo gli ultimi 60 giorni di dati. Quindi, non possiamo scaricare più di 60 giorni alla volta e questi devono essere gli ultimi 60 giorni dalla data corrente. Se riscontri problemi con il file scaricato, ricontrolla le date di inizio e di fine specificate.
Una volta scaricati i dati, possiamo testarli controllando le righe scaricate. Rimuovendo il '-1' nel codice, possiamo visualizzare l'intero frame di dati, che consiste di circa 3973 righe. Il frame di dati include colonne per data, ora, prezzo di apertura, massimo, minimo, chiusura e chiusura rettificata. In questo video non utilizzeremo i dati sul volume, ma sentiti libero di incorporarli nella tua strategia, se necessario.
Il prossimo passo è definire il nostro generatore di segnali, che è una funzione responsabile della generazione dei segnali di trading. Questa funzione accetta un frame di dati come input perché quando trasmettiamo in streaming dati in tempo reale per il nostro bot di trading, acquisiamo un frame di dati e lo inseriamo in questa funzione. La funzione determinerà quindi se è presente un segnale, come un segnale di acquisto, un segnale di vendita o nessun modello chiaro. In questo esempio, ci concentreremo sul rilevamento di modelli di candele engulfing, ma tieni presente che questa non è una strategia di trading completa. Serve allo scopo di questo video e puoi inserire la tua strategia di generatore di segnali all'interno di questa funzione.
La funzione del generatore di segnali legge i prezzi di apertura e chiusura della candela corrente e della candela precedente utilizzando rispettivamente l'indice -1 e -2. In base alle condizioni definite nella funzione, come il rilevamento di un pattern engulfing ribassista o di un pattern engulfing rialzista, restituisce un valore di segnale pari a 1 per la vendita, 2 per l'acquisto o 0 per nessun segnale. Per verificare che la funzione funzioni correttamente, possiamo testarla utilizzando alcune righe di codice. Eseguendo il looping sulle righe del frame di dati e controllando ogni riga per engulfing pattern utilizzando la funzione del generatore di segnale, possiamo memorizzare i segnali generati in un elenco. Possiamo quindi aggiungere questo elenco come colonna aggiuntiva nel frame di dati di test. La stampa del frame di dati mostra la colonna aggiunta e, eseguendo un conteggio dei valori, possiamo vedere il numero di ciascun tipo di segnale presente nel set di dati.
Tieni presente che questo è un esempio semplificato ai fini di questo video ed è essenziale per sviluppare una strategia di trading completa basata sulle tue esigenze specifiche.
Ora che abbiamo la nostra funzione di generatore di segnale, il passo successivo è definire il bot di trading. Il bot di trading è responsabile dell'esecuzione delle negoziazioni in base ai segnali generati. In questo esempio, creeremo un semplice bot di trading che acquista quando riceve un segnale di valore 2 (che indica un segnale di acquisto) e vende quando riceve un segnale di valore 1 (che indica un segnale di vendita). Ancora una volta, questo è solo un esempio di base e puoi modificare il bot di trading in base alla tua specifica strategia di trading.
La funzione del bot di trading prende il frame di dati e i segnali generati come input. Inizializza il saldo del portafoglio e mantiene un flag di posizione per tenere traccia della presenza o meno di una posizione aperta. Quindi, esegue il loop su ogni riga del frame di dati, controlla il valore del segnale ed esegue l'azione di acquisto o vendita corrispondente.
Quando viene ricevuto un segnale di acquisto e non abbiamo una posizione aperta, il bot di trading acquista l'importo specificato dell'asset e detrae il costo dal saldo del portafoglio. Imposta anche il flag di posizione per indicare che ora abbiamo una posizione aperta. Quando viene ricevuto un segnale di vendita e abbiamo una posizione aperta, il trading bot vende l'intera posizione e aggiunge l'importo di vendita al saldo del portafoglio. Quindi reimposta il flag di posizione per indicare che non abbiamo posizioni aperte.
Per testare il bot di trading, possiamo chiamare la funzione con il frame di dati di test e i segnali generati. Possiamo anche specificare un saldo iniziale del portafoglio e l'importo dell'asset da acquistare o vendere. Dopo aver eseguito la funzione di trading bot, possiamo stampare il saldo finale del portafoglio per vedere il risultato.
In questo esempio, non stiamo prendendo in considerazione i costi di transazione, lo slippage o altri fattori che potrebbero influenzare gli scenari di trading reali. È importante tenere conto di questi fattori quando si sviluppa il proprio bot e la propria strategia di trading.
Infine, discutiamo di come implementare questo codice per il trading dal vivo. Il codice che abbiamo sviluppato finora è adatto per eseguire backtest e testare la tua strategia su dati storici. Per implementarlo per il trading dal vivo, dovresti collegarlo a un feed di dati in tempo reale e a un'API di trading fornita dal tuo broker o scambio. Ciò comporta la gestione del flusso di dati e l'esecuzione di ordini di trading in tempo reale basati sui segnali generati dal bot di trading.
Sono disponibili varie librerie e pacchetti Python che possono aiutarti a connetterti a feed di dati in tempo reale e API di trading, come Alpaca, Binance o API di Interactive Brokers. Dovresti ricercare e scegliere quello che meglio si adatta alle tue esigenze e si integra bene con lo scambio o il broker che hai scelto.
Ricorda, il trading dal vivo comporta denaro reale, quindi è fondamentale testare a fondo il tuo codice e la tua strategia in un ambiente simulato prima di implementarlo per il trading dal vivo. Inizia con piccole posizioni e aumenta gradualmente la tua esposizione man mano che acquisisci fiducia nelle prestazioni del tuo trading bot.
Questo è tutto per questo video! Spero che tu l'abbia trovato utile per capire come automatizzare la tua strategia di trading usando Python. Ricordati di scaricare il codice dal link in descrizione e di modificarlo in base alle tue specifiche esigenze e strategie. Se hai domande, sentiti libero di lasciarle nei commenti qui sotto. Grazie per la visione e buon trading!
Backtest di Python: strategia di scalping redditizia con VWAP, bande di Bollinger e indicatori RSI
Backtest di Python: strategia di scalping redditizia con VWAP, bande di Bollinger e indicatori RSI
Ciao a tutti! Oggi sono lieto di annunciare che abbiamo un vincitore. In questo video, condividerò una strategia di scalping utilizzando le bande di Bollinger V-WAP (Volume Weighted Average Price) e l'RSI (Relative Strength Index) per conferma. Prima di condividere questa strategia, l'ho testata a fondo per assicurarne l'efficacia.
In primo luogo, voglio menzionare che questa è la prima strategia di scalping che presentiamo su questo canale. Lo scalping può essere impegnativo per gli algoritmi a causa dei dati rumorosi su intervalli di tempo inferiori. Tuttavia, credo che questa strategia superi queste sfide.
Se sei nuovo su questo canale, puoi scaricare il codice Python dal link nella descrizione. Non dimenticare di sostenerci iscrivendoti e lasciando un commento con le tue idee da condividere. Il tuo feedback è prezioso.
Dopo tre anni di backtesting, il rendimento totale di questa strategia è di circa il 300%. Quello che mi piace particolarmente di questa strategia è la durata media degli scambi, che è di circa 51 minuti. Questo la rende la strategia di chiusura commerciale più veloce che abbiamo dimostrato finora. Il vantaggio della chiusura rapida delle negoziazioni è la riduzione delle commissioni overnight e meno stress, poiché puoi vedere immediatamente i risultati delle tue negoziazioni eseguite.
Nella sezione dei commenti, qualcuno ha chiesto informazioni sull'indice di Sharpe. L'ho incluso in questa strategia ed è di circa 1,65. Tuttavia, tieni presente che questo valore può cambiare con modifiche ai parametri nel codice Python. Puoi massimizzare il rapporto Sharpe sperimentando diversi valori di parametro.
Entriamo nei dettagli della strategia. Sto usando il timeframe di 5 minuti e la curva V-WAP. Per determinare la tendenza, cerco che 15 candele siano costantemente al di sopra o al di sotto della curva V-WAP, rappresentata dalla linea blu. Se 15 candele sono al di sopra della curva V-WAP, indica un trend rialzista. Se siamo al di sotto della curva V-WAP, la considero una tendenza al ribasso.
Per le posizioni di ingresso, utilizzo le bande di Bollinger con una lunghezza di 14 e una deviazione standard di 2. In un trend rialzista sopra la curva V-WAP, cerco posizioni di acquisto quando una candela si chiude al di sotto della banda di Bollinger inferiore. In una tendenza al ribasso, sotto la curva V-WAP, aspetto che una candela si chiuda sopra la banda di Bollinger superiore come segnale di vendita.
Per confermare i segnali, utilizzo l'RSI. Se l'RSI è inferiore a 45, conferma un segnale di acquisto. Se l'RSI è superiore a 55, conferma un segnale di vendita.
Per impostare i livelli di take profit e stop loss, utilizzo l'ATR (Average True Range). Guardo indietro alle ultime sette candele, calcolo il valore ATR e lo moltiplico per un coefficiente per determinare la distanza di stop loss. Il take profit viene calcolato moltiplicando la distanza dello stop loss per il rapporto take profit-stop loss, che rappresenta il rapporto rischio-rendimento.
Come puoi vedere, ci sono diversi parametri che possono essere regolati nel codice Python. È possibile modificare la lunghezza dell'ATR, il coefficiente, il rapporto take profit-stop loss e altri parametri dell'indicatore per vedere come influenzano la performance della strategia nel periodo di backtesting di tre anni. Sentiti libero di scaricare il codice e sperimentare da solo.
Nel codice Python ho fornito tutti i passaggi necessari per il caricamento dei dati, la pulizia, l'aggiunta di indicatori tecnici (V-WAP, RSI, Bande di Bollinger), il calcolo del segnale totale e la visualizzazione dei segnali sul grafico dei prezzi. Il codice include anche la parte di backtesting, in cui calcolo l'ATR, imposto i livelli di stop loss e take profit ed eseguo le negoziazioni.
Nei risultati del backtesting, ho ottenuto un rendimento del 197 percento e un picco di equity di $ 313. Partendo da un capitale iniziale di $10.000, la strategia ha generato un profitto di $19.700, raggiungendo un patrimonio netto finale di $29.700.
Ora, discutiamo le metriche chiave delle prestazioni di questa strategia. Il tasso di vincita, che rappresenta la percentuale di operazioni redditizie, è di circa il 56%. Ciò significa che su tutte le operazioni eseguite, il 56% ha generato un profitto. Il profitto medio per operazione è di circa $ 33,10, mentre la perdita media per operazione è di circa $ 23,45.
Per valutare il rischio associato a questa strategia, possiamo guardare al drawdown massimo, che misura il più grande calo del capitale dal picco al minimo durante il periodo di backtesting. Il drawdown massimo per questa strategia è di circa il 9%, indicando un livello di rischio moderato.
È importante notare che queste metriche sulle prestazioni si basano su dati storici e le prestazioni passate non garantiscono risultati futuri. Le condizioni di mercato possono cambiare ed è fondamentale monitorare continuamente e adattare la strategia alle attuali dinamiche di mercato.
In sintesi, questa strategia di scalping che utilizza V-WAP, Bollinger Bands e RSI ha mostrato risultati promettenti durante il periodo di backtesting, con un rendimento totale del 300% e una durata media degli scambi di 51 minuti. Tuttavia, è essenziale testare e convalidare a fondo qualsiasi strategia prima di applicarla al trading reale e considerare fattori come i costi di transazione, lo slippage e le condizioni di mercato.
Ricorda, il trading comporta rischi intrinseci ed è sempre consigliabile istruirti, praticare la gestione del rischio e prendere in considerazione la possibilità di cercare una consulenza professionale prima di impegnarti nel trading dal vivo. Spero che troverai questa strategia perspicace e sentiti libero di scaricare il codice Python fornito nella descrizione per esplorarlo ulteriormente e personalizzarlo a tuo piacimento.
Se hai domande o hai bisogno di ulteriori chiarimenti, non esitare a chiedere. Buon commercio!
Candele Heiken Ashi in Python per sistemi di trading
Candele Heiken Ashi in Python per sistemi di trading
Oggi approfondiremo il processo di aggiunta delle candele Hiken Ashi in Python ed esploreremo due strategie correlate utilizzando queste candele. Le candele Hiken Ashi derivano dai normali candelabri tipicamente utilizzati nel trading. Ogni candela Hiken Ashi viene calcolata utilizzando formule specifiche. Il prezzo di chiusura di Heiken Ashi si ottiene calcolando la media del prezzo di apertura, del massimo, del minimo e del prezzo di chiusura della candela corrente. Il prezzo di apertura di Heiken Ashi è ottenuto dal valore di chiusura della candela Heiken Ashi precedentemente calcolata. Il valore massimo di Heiken Ashi è il massimo tra il massimo della candela normale, l'apertura della candela Heiken Ashi o il valore di chiusura della candela Heiken Ashi. Allo stesso modo, il valore basso di Heiken Ashi è il minimo tra il prezzo più basso della candela corrente, il prezzo di apertura della candela Heiken Ashi corrente o il prezzo di chiusura della candela Heiken Ashi corrente.
In sintesi, a parte i valori alti e bassi, la candela Heiken Ashi è composta da valori medi, conferendo al grafico Hiken Ashi un aspetto più uniforme rispetto alle candele normali, che alcuni trader potrebbero trovare meno rumorose. Tuttavia, è importante notare che le candele Heiken Ashi non rappresentano i valori reali del mercato e non devono essere utilizzate per strategie di trading o backtesting basate sui valori di mercato effettivi.
Lo scopo di questo tutorial non è presentare un sistema Heiken Ashi vincente, ma piuttosto dimostrare come costruire queste candele in Python e sviluppare una strategia algoritmica per eseguire il backtest dei risultati. Esploreremo due strategie utilizzando le candele Heiken Ashi.
La prima strategia utilizza due medie mobili: una media mobile veloce e una media mobile lenta. La tendenza è determinata in base alle posizioni relative di queste medie mobili. Se la media mobile veloce è al di sopra della media mobile lenta, indica una tendenza al rialzo, mentre se la media mobile veloce è al di sotto della media mobile lenta, suggerisce una tendenza al ribasso. La strategia genera un segnale di trading quando la candela Heiken Ashi attraversa la media mobile veloce nella direzione del trend. Ad esempio, se la media mobile veloce è al di sotto della media mobile lenta e una candela Heiken Ashi attraversa da sopra a sotto la media mobile veloce, innesca un segnale di vendita. Al contrario, in un trend rialzista, una candela Heiken Ashi verde che attraversa dal basso verso l'alto la media in rapido movimento innesca un segnale di acquisto.
La seconda variante di questa strategia aggiunge un'ulteriore condizione. Cerca una candela doji seguita da una candela a coda corta nella direzione del trend. Ad esempio, in una tendenza al ribasso, se una candela doji è seguita da una candela a coda corta che apre sopra la media mobile veloce e chiude al di sotto di essa, viene attivato un segnale di vendita. L'assenza di lunghi stoppini o code in queste candele indica un forte slancio verso il basso o verso l'alto, a seconda della tendenza analizzata.
Entrambe le strategie hanno le proprie sfide, come la determinazione dell'intervallo di tempo ottimale, la definizione delle posizioni di stop loss appropriate e la progettazione di strategie di uscita efficaci. Questi aspetti possono avere un impatto significativo sulla redditività e sul successo delle strategie.
Per implementare queste strategie in Python, useremo Jupyter Notebook. Iniziamo importando le librerie necessarie e scaricando i dati azionari per l'indice Russell 1000 dal 2012 al 2022. Dopo aver rimosso le colonne non necessarie, calcoliamo i prezzi di chiusura e apertura di Hiken Ashi, nonché i valori massimo e minimo di Heiken Ashi, sulla base di le formule descritte in precedenza. Aggiungiamo queste colonne al nostro data frame.
Successivamente, possiamo aggiungere ulteriori indicatori tecnici, come le medie mobili e il Relative Strength Index (RSI), utilizzando il pacchetto di analisi tecnica dei panda. Questo ci permette di visualizzare le candele Heiken Ashi e gli indicatori associati su un grafico. Ora che abbiamo definito i nostri segnali di trading e i livelli di stop loss, possiamo procedere con il processo di backtesting. Il passaggio successivo consiste nel calcolare i rendimenti per ogni operazione in base ai punti di entrata e di uscita.
Per calcolare i rendimenti, dobbiamo prima determinare i prezzi di entrata e di uscita per ogni operazione. Per una posizione di acquisto, il prezzo di entrata è il prezzo di chiusura della candela quando viene attivato il segnale di acquisto. Il prezzo di uscita è il prezzo più basso tra la candela corrente e le due candele precedenti, come determinato dal livello di stop loss.
Allo stesso modo, per una posizione di vendita, il prezzo di entrata è il prezzo di chiusura della candela quando viene attivato il segnale di vendita e il prezzo di uscita è il prezzo più alto tra la candela corrente e le due candele precedenti.
Una volta che abbiamo i prezzi di entrata e di uscita, possiamo calcolare i rendimenti utilizzando la formula:
Ritorno = (prezzo di uscita - prezzo di entrata) / prezzo di entrata
Memorizzeremo i resi in un elenco chiamato "trade_returns" per ulteriori analisi. Successivamente, dobbiamo calcolare i rendimenti cumulativi per tracciare la performance complessiva della strategia nel tempo. Questo viene fatto moltiplicando il rendimento di ciascuna operazione per il rendimento cumulativo precedente e aggiungendo 1. La formula per calcolare il rendimento cumulativo è:
Rendimento Cumulativo = Rendimento Cumulativo * (1 + Rendimento)
Memorizzeremo i rendimenti cumulativi in un elenco chiamato "rendimenti_cumulativi". Infine, possiamo tracciare i rendimenti cumulativi per visualizzare la performance della strategia nel periodo di backtesting.
Dopo aver eseguito il processo di backtesting e aver calcolato i rendimenti commerciali e i rendimenti cumulativi, possiamo analizzare i risultati per valutare la performance della strategia di trading. Una metrica importante da considerare è la redditività complessiva della strategia. È possibile calcolare il rendimento totale sottraendo 1 dal valore del rendimento cumulativo finale. Ad esempio, se il rendimento cumulativo è 1,2, significa un rendimento del 20% sull'investimento iniziale.
Inoltre, potresti voler calcolare altre metriche di performance come il rendimento medio per operazione, il numero di operazioni vincenti, il numero di operazioni perdenti, la percentuale di operazioni vincenti e il drawdown massimo. Il rendimento medio per operazione può essere ottenuto dividendo la somma di tutti i rendimenti delle operazioni per il numero totale di operazioni. Questa metrica fornisce un'indicazione della redditività media di ogni operazione.
Per calcolare il numero di scambi vincenti e perdenti, puoi contare il numero di ritorni di scambio maggiori o uguali a 0 (scatti vincenti) e il numero di ritorni di scambio inferiori a 0 (scambi perdenti). La percentuale di operazioni vincenti può essere calcolata dividendo il numero di operazioni vincenti per il numero totale di operazioni e moltiplicando per 100.
Il drawdown massimo misura il più grande calo dal picco al minimo dei rendimenti cumulativi durante il periodo di backtesting. Fornisce informazioni sul rischio potenziale e sulla volatilità al ribasso della strategia. Analizzando queste metriche sulle prestazioni, puoi ottenere preziose informazioni sull'efficacia della strategia di trading e prendere decisioni informate in merito al suo utilizzo futuro o alle potenziali modifiche.
Ricorda che il backtesting è una simulazione storica e non garantisce risultati futuri. È essenziale considerare vari fattori e condurre un'analisi approfondita prima di applicare una strategia di trading in scenari reali.
Rivoluziona la tua strategia di trading azionario con il trading automatizzato in Python
Rivoluziona la tua strategia di trading azionario con il trading automatizzato in Python
Oggi esploreremo una strategia di trading specificamente progettata per le posizioni lunghe utilizzando il Relative Strength Index (RSI) e l'Average Directional Index (ADX). Nonostante la sua semplicità, questa strategia ha mostrato risultati promettenti. L'idea è stata proposta da qualcuno nella sezione dei commenti e i parametri sembravano sia familiari che convincenti. Quindi, ho deciso di metterlo alla prova e condividere i risultati, che si sono rivelati abbastanza soddisfacenti.
La curva azionaria generata dal backtest ha mostrato un aumento pressoché consistente durante tutto il periodo di test, raggiungendo un picco di ritorno di 360. Se sei nuovo su questo canale, puoi trovare il codice disponibile per il download nella descrizione. Non dimenticare di sostenerci iscrivendoti e lasciando un commento. Apprezziamo ascoltare nuove idee, proprio come quella di cui parla questo video.
Ora, tuffiamoci nella strategia stessa. Utilizzeremo il timeframe giornaliero e apriremo una posizione long quando saranno soddisfatte due condizioni: la prima, quando l'RSI a due giorni è inferiore a 25, indicando una condizione di ipervenduto, e la seconda, quando l'ADX (14) è superiore a 20, suggerendo un mercato di tendenza. Usciamo dalla posizione long quando l'RSI supera 75.
Per evitare falsi segnali e impedire che le negoziazioni rimangano aperte troppo a lungo quando l'RSI fatica al di sotto della soglia di 75, ho aggiunto due condizioni aggiuntive. La prima condizione consiste nel verificare se le candele sono scambiate al di sopra di una semplice curva media mobile, indicando un trend rialzista. Solo in questo caso ci è consentito assumere posizioni long. La seconda condizione prevede l'impostazione di un valore di stop-loss, che viene assunto come il prezzo più basso tra le ultime due candele meno una certa percentuale. In questo backtest, ho impostato la percentuale di stop loss al due percento. Puoi regolare questo valore in base alle tue preferenze o durante il test con dati diversi.
Per implementare queste condizioni in Python, ho scritto il codice necessario e condotto un backtest. Nel codice, carichiamo i dati, li puliamo rimuovendo i giorni senza movimenti e stampiamo il data frame per verificarne il contenuto. Quindi, calcoliamo la media mobile esponenziale (EMA) con una lunghezza di 200 per il rilevamento della tendenza, così come l'RSI con una lunghezza di 2 e l'ADX con una lunghezza di 14. Puliamo nuovamente il frame di dati e stampiamo una sezione su controlla le colonne che useremo.
Successivamente, ho implementato una funzione chiamata add_ema_signal, che determina il trend in base al numero di candele scambiate al di sopra o al di sotto della curva della media mobile. Ho impostato questo numero su sei, poiché ha funzionato bene nei video precedenti. Quindi, ho creato una funzione chiamata total_signal, in cui calcoliamo il segnale per entrare in una posizione long. Iteriamo attraverso ogni riga del frame di dati e controlliamo se l'RSI è inferiore o uguale a 25, l'ADX è superiore a 20 e il segnale EMA è uguale a due (indicando un trend rialzista). Quando queste condizioni sono soddisfatte, memorizziamo un valore di segnale di due nel frame di dati.
Stampando il data frame, possiamo visualizzare i segnali sul grafico a barre. I punti viola rappresentano i segnali di acquisto. Anche se non entrerò nei dettagli di ogni riga del codice, puoi trovare spiegazioni complete nei video precedenti su questo canale, in particolare nella playlist Python for Algorithmic Trading.
Passando alla parte del backtesting, ho utilizzato il pacchetto backtesting.py. Senza entrare nello specifico, ho impostato la percentuale di stop loss al 2% e ho incluso condizioni aggiuntive per chiudere le negoziazioni che sono state aperte per un certo numero di giorni o se l'RSI supera 75. Vale la pena notare che il codice contiene ancora righe relative alle posizioni corte, anche se questa strategia si concentra esclusivamente sulle posizioni lunghe. Queste linee possono essere modificate o rimosse se decidi di espandere la strategia per includere posizioni corte.
Se il segnale è uguale a due e non ci sono operazioni aperte, entriamo nel mercato con una posizione lunga utilizzando il valore di stop-loss. La dimensione dell'operazione è impostata al 99% dell'equity corrente. Il backtest inizia con $ 1.000 in contanti e una leva di 1:5 (margine di 1/5). Non sono state considerate commissioni ai fini del confronto con le strategie precedenti.
I risultati del backtest indicano un rendimento di $ 200 e un picco di equity di $ 3.595. Il tasso di vincita è del 73% e un totale di 102 operazioni sono state eseguite durante il periodo di test di dieci anni. Ciò si traduce in una media di 10 operazioni all'anno nel periodo di tempo giornaliero. Il tracciato della curva del patrimonio netto mostra un consistente aumento di valore, con piccoli ribassi durante determinati periodi.
È importante notare che non ho modificato nessuno dei parametri suggeriti nella sezione dei commenti. La lunghezza RSI rimane a 2, la lunghezza ADX a 14 e la lunghezza EMA a 200. Tuttavia, puoi ancora mettere a punto questi valori e sperimentare diversi titoli o mercati per migliorare potenzialmente i risultati e trovare una configurazione più soddisfacente.
Questa strategia offre un approccio semplice ma efficace per le posizioni lunghe. Ti incoraggio a scaricare il codice dal link nella descrizione e sperimentarlo. Il codice è relativamente breve e adatto ai principianti. Divertiti a esplorare questa strategia e resta sintonizzato per il nostro prossimo video. Fai trading in sicurezza e ci vediamo la prossima volta!
Strategia automatizzata delle bande di Rayner Teo Bollinger ottimizzata per un rendimento elevato
Strategia automatizzata delle bande di Rayner Teo Bollinger ottimizzata per un rendimento elevato
Ciao a tutti! In questo video, siamo entusiasti di presentare un approccio di ottimizzazione estrema che dimostra gli effetti di determinati parametri sul nostro sistema di trading. Riteniamo che questa sia la migliore ottimizzazione che abbiamo ottenuto finora. Come puoi vedere, abbiamo ottenuto un rendimento impressionante di circa il tremila percento, con una curva azionaria in costante aumento. Sul grafico vengono visualizzati anche i dettagli delle negoziazioni e li spiegheremo in questo video. Abbiamo tracciato tutti gli scambi sui grafici dei prezzi e li esamineremo anche. Quindi, rimanete sintonizzati!
Prima di procedere, vogliamo sottolineare che il modo in cui abbiamo ottenuto un rendimento del 30.000% con questa strategia non è l'approccio più sicuro per il trading reale. Non consigliamo di utilizzare questi parametri in uno scenario di trading reale. Tuttavia, riteniamo che la strategia stessa sia solida e abbia un grande potenziale. Se sei nuovo qui, la strategia si basa sulla strategia Rhino Theo Bollinger Band per i mercati di tendenza. Lo abbiamo già testato in un video con ottimi risultati e minimo rischio. Se non l'hai visto, puoi trovare il link al primo video di backtest nella descrizione, insieme al codice Python se necessario.
In questo video, cercheremo di applicare parametri estremi per generare rendimenti relativamente elevati. Lo facciamo principalmente per il divertimento di testare e giocare con il codice Python. Inoltre, speriamo di ottenere preziose informazioni durante il processo e scoprire potenzialmente una configurazione che potrebbe portare a rendimenti elevati realistici.
Ora, entriamo nel codice e vediamo come si svolge il tutto. La prima cella del nostro file notebook Jupyter è dedicata al caricamento dei dati. Stiamo utilizzando il modulo "yfinance", che è un modo conveniente per caricare i dati storici giornalieri dai database. Con una sola riga di codice, possiamo caricare i dati per un titolo specifico, come l'indice Russell 1000 tra il 2011 e il 2021, ad esempio. Puliamo i dati rimuovendo i giorni senza movimenti di prezzo, come i fine settimana e i giorni festivi. Quindi, reimpostiamo l'indice e stampiamo l'intestazione del frame di dati per verificare che i dati siano formattati correttamente.
Successivamente, utilizziamo il modulo "pandas_ta" (analisi tecnica dei panda) per calcolare vari indicatori tecnici. In questo caso, calcoliamo due medie mobili: la media mobile esponenziale a 200 giorni (EMA) e la media mobile semplice a 150 giorni (SMA). Confrontando la media mobile veloce (EMA2) con la media mobile più lenta (EMA), possiamo determinare se il mercato è in un trend rialzista o ribassista. Calcoliamo anche l'indice di forza relativa (RSI) a 12 giorni utilizzando lo stesso modulo. Inoltre, modifichiamo i parametri delle Bande di Bollinger impostando la lunghezza a 14 (invece di 20) e la deviazione standard a 2.0 (invece di 2.5). Queste modifiche mirano a rendere il sistema meno selettivo, determinando segnali di trading più frequenti e un numero maggiore di operazioni durante il backtest.
Invece di utilizzare il segnale RDMI o il segnale della media mobile esponenziale discusso nei video precedenti, utilizziamo i due segnali EMA. Ciò significa che consideriamo due medie mobili, una più veloce e una più lenta. Se la media mobile veloce è al di sopra della media mobile lenta, identifichiamo un trend rialzista. Al contrario, se la media mobile veloce è al di sotto della media mobile lenta, riconosciamo una tendenza al ribasso. Aggiungiamo questo segnale, denominato segnale EMA, come una nuova colonna nel nostro data frame.
La funzione per generare i segnali di trading è simile ai video precedenti. Controlliamo se il prezzo di chiusura è al di sotto della banda di Bollinger inferiore e se il segnale EMA indica un trend rialzista (pari a 2), che innesca un segnale di acquisto.
In questo video, il presentatore dimostra un approccio di ottimizzazione estremo per mostrare gli effetti di vari parametri su un sistema di trading. L'obiettivo è ottenere rendimenti elevati applicando parametri estremi, anche se è importante notare che questi parametri non sono raccomandati per il trading reale a causa dei rischi associati. Tuttavia, il presentatore ritiene che la strategia stessa abbia un grande potenziale se utilizzata con cautela.
La strategia utilizzata si basa sulla strategia Rhino Theo Bollinger Band per i mercati di tendenza. Il presentatore fa riferimento a un video precedente in cui hanno testato questa strategia con ottimi risultati e un rischio relativamente basso. Il primo passo nel processo di ottimizzazione è caricare i dati necessari utilizzando il modulo Y Finance. Il presentatore carica i dati dell'indice Russell 1000 dal 2011 al 2021, coprendo un periodo di 10 anni.
Una volta caricati i dati, il presentatore li pulisce rimuovendo i giorni senza movimenti di prezzo, come i fine settimana e le vacanze. I dati vengono quindi preparati calcolando gli indicatori tecnici utilizzando il modulo pandas_ta (analisi tecnica panda). Vengono calcolate due medie mobili: una media mobile esponenziale a 200 giorni (EMA) e una media mobile semplice a 150 giorni (SMA). Queste medie mobili aiutano a determinare la tendenza: se l'EMA più veloce è sopra la SMA più lenta, indica un trend rialzista e viceversa.
Il relatore calcola anche il Relative Strength Index (RSI) di 12 giorni utilizzando il modulo pandas_ta. Inoltre, vengono modificati i parametri di lunghezza e deviazione standard delle bande di Bollinger. Invece di utilizzare una lunghezza di 20 e una deviazione standard di 2,5 come nei video precedenti, il presentatore utilizza una lunghezza di 14 e una deviazione standard di 2,0. Questa modifica mira a rendere il sistema meno selettivo, determinando segnali di trading più frequenti.
Invece di utilizzare i segnali RSI o EMA come nei video precedenti, il presentatore introduce un nuovo segnale chiamato segnale EMA. Si basa sulla relazione tra le due medie mobili: se l'EMA più veloce è sopra la SMA più lenta, il segnale EMA è impostato su 2, indicando un trend rialzista. Se l'EMA più veloce è al di sotto della SMA più lenta, il segnale EMA è impostato su 1, indicando una tendenza al ribasso.
La strategia di ingresso è simile ai video precedenti. Il presentatore controlla se il prezzo di chiusura è al di sotto della banda di Bollinger inferiore e se il segnale EMA indica un trend rialzista (segnale EMA = 2). In questo caso, viene generato un segnale di acquisto al prezzo di chiusura della candela corrente. Se il prezzo di chiusura è al di sopra della banda di Bollinger superiore e il segnale EMA indica una tendenza al ribasso (segnale EMA = 1), viene generato un segnale di vendita al prezzo di chiusura della candela corrente.
Per uscire dalle negoziazioni, il presentatore introduce criteri aggiuntivi. Una negoziazione è chiusa se è aperta da più di 10 giorni, in quanto non sono desiderate negoziazioni a lungo termine. Inoltre, un trade viene chiuso se è un trade long e l'RSI supera 75, o se è un trade short e l'RSI scende sotto 25. Se la condizione RSI da sola non è sufficiente per attivare un'uscita, uno stop-loss meccanismo è implementato.
Lo stop-loss è calcolato come il valore minimo tra il minimo attuale della candela e il minimo della candela precedente, moltiplicato per (1 - una certa percentuale). La percentuale è determinata dall'utente e rappresenta la perdita consentita prima dell'attivazione dello stop-loss. Ad esempio, una percentuale di 2 significa che lo stop loss è impostato al 2% al di sotto del punto più basso tra le ultime due candele. Inoltre, un livello di take-profit è fissato al doppio della distanza dello stop-loss.
Il relatore valuta la strategia eseguendo un backtest utilizzando i parametri ottimizzati. Tracciano gli scambi sul grafico dei prezzi e forniscono spiegazioni dettagliate per ogni scambio. I risultati del backtest mostrano un rendimento impressionante di circa il tremila percento, con una curva azionaria in costante aumento.
Infine, il presentatore sottolinea che mentre questo approccio di ottimizzazione estrema produce rendimenti elevati nel backtest, non è raccomandato per il trading reale a causa dei rischi associati. Lo scopo di questo esercizio è esplorare gli effetti di diversi parametri e ottenere informazioni sul comportamento della strategia.