REGRESSIONE LINEARE COS'E' e come utilizzarlaPer questo articolo è necessario partire da alcune assunzioni matematico statistico ed econometriche.
Cos'è e come si calcola la regressione lineare e il canale di regressione.
Il modello di regressione lineare semplice postula l'esistenza di una relazione lineare tra una variabile dipendente, Y, e una singola variabile indipendente, X. Nel contesto dell'analisi tecnica, la variabile dipendente Y è tipicamente il prezzo di un asset finanziario, mentre la variabile indipendente X rappresenta il tempo (ad esempio, una sequenza di interi che indicizzano i periodi: 1, 2, 3,..., n). Il modello è formalizzato dalla seguente equazione:
Yi=β0+β1Xi+ϵi
dove:
Yi è il valore osservato della variabile dipendente (prezzo) al tempo i.
Xi è il valore della variabile indipendente (tempo) all'istante i.
β0 è l'intercetta, ovvero il valore teorico di Y quando X=0.
β1 è il coefficiente angolare, o pendenza, che misura la variazione media di Y per un incremento unitario di X. Nel trading, questo parametro è di importanza cruciale, poiché il suo segno e la sua magnitudine quantificano la direzione e la forza del trend lineare.2
ϵi è il termine di errore stocastico (o residuo), che rappresenta la differenza tra il valore osservato Yi e il valore previsto dalla componente lineare del modello. Questo termine cattura tutti i fattori non spiegati dalla relazione lineare, inclusa la casualità intrinseca dei movimenti di prezzo.
Dopo di che è necessario introdurre il metodo dei minimi quadrati
Poiché i parametri β0 e β1 della popolazione sono incogniti, devono essere stimati a partire da un campione di dati osservati. Il metodo più comune per ottenere tali stime, indicate come b0 e b1, è il Metodo dei Minimi Quadrati Ordinari (OLS). Il principio fondamentale dell'OLS è quello di identificare l'unica retta, definita "linea di migliore adattamento" (best-fit line), che minimizza la somma dei quadrati delle differenze verticali tra i valori dei prezzi effettivamente osservati (yi) e i valori previsti dal modello (y^i=b0+b1xi).
Matematicamente, si tratta di trovare i valori di b0 e b1 che minimizzano la Somma dei Quadrati dei Residui (Sq):
Sq=i=1∑n(yi−y^i)2=i=1∑n(yi−b0−b1xi)2
Questo problema di minimizzazione viene risolto analiticamente calcolando le derivate parziali prime della funzione Sq rispetto a b0 e b1 e ponendole uguali a zero. La soluzione di questo sistema di equazioni fornisce le formule per le stime dei parametri.
Adesso si deve procedere con la Formulazione e Calcolo dei Parametri di Regressione
Le soluzioni del problema dei minimi quadrati forniscono espressioni esplicite per il calcolo dei coefficienti di regressione.
Coefficiente Angolare (Pendenza, b1): La pendenza della retta di regressione è data dal rapporto tra la covarianza campionaria di X e Y e la varianza campionaria di X. In termini operativi, si utilizzano i concetti di devianza e codevianza 8:
b1=∑i=1n(xi−μX)2∑i=1n(xi−μX)(yi−μY)=DXCXY
dove CXY è la codevianza di X e Y, e DX è la devianza di X. Un valore b1>0 indica un trend rialzista, b1<0 un trend ribassista, e b1≈0 un mercato laterale o privo di trend lineare.3
Intercetta (b0): L'intercetta è calcolata in modo da garantire che la retta di regressione passi per il baricentro (μX,μY) del campione di dati 8:
b0=μY−b1μX
Deviazione Standard dei Residui (σ^): Questa misura, nota anche come Errore Standard della Regressione, quantifica la dispersione media dei punti di dati attorno alla retta di regressione. È la stima della deviazione standard del termine di errore ϵ e costituisce la base fondamentale per la costruzione delle bande del canale di regressione. Si calcola come la radice quadrata della varianza dei residui, corretta per i gradi di libertà (n−k, dove n è il numero di osservazioni e k è il numero di parametri stimati, 2 nel caso della regressione semplice) 9:
σ^=n−2∑i=1n(yi−y^i)2
È importante sottolineare che la regressione lineare, nel contesto del trading, non stabilisce una relazione di causalità. Il tempo (X) non "causa" il prezzo (Y). Il modello si limita a descrivere la correlazione statistica storica tra le due variabili, fornendo una sintesi lineare della traiettoria dei prezzi in un dato intervallo.9 Confondere questa correlazione con una relazione causale può portare a un'eccessiva fiducia nel potere predittivo del modello, che in realtà sta semplicemente estrapolando una tendenza passata.
Sarà poi necessario misurare la bontà dell'adattamento questo si fa con R2
L'affidabilità delle stime OLS e delle inferenze statistiche che ne derivano dipende dalla validità di una serie di assunzioni sul termine di errore ϵi 9:
Linearità nei parametri: Il modello deve essere una funzione lineare dei parametri β0 e β1.
Media condizionale nulla degli errori: E(ϵi∣Xi)=0. In media, gli errori si annullano.
Omoschedasticità: La varianza degli errori è costante per tutti i livelli di X, ovvero Var(ϵi∣Xi)=σ2.
Assenza di autocorrelazione: Gli errori associati a osservazioni diverse non sono correlati tra loro, Cov(ϵi,ϵj)=0 per i=j.
Normalità degli errori: Gli errori sono distribuiti secondo una distribuzione normale con media zero e varianza costante, ϵi∼N(0,σ2).
la violazione delle assunzioni di omoschedasticità, assenza di autocorrelazione e normalità è la norma, non l'eccezione, nei mercati finanziari. Questa discrepanza tra teoria e realtà costituisce la principale debolezza del modello e la fonte di molti segnali di trading inaffidabili.
LA distribuzione normale
La distribuzione normale, o gaussiana, è una distribuzione di probabilità continua caratterizzata dalla sua distintiva forma a campana, simmetrica attorno al suo valore centrale. Le sue proprietà principali sono che media, mediana e moda coincidono.19 Questa distribuzione è completamente definita da due soli parametri:
La Media (μ): che determina la posizione del centro della curva sull'asse orizzontale.
La Deviazione Standard (σ): che misura la dispersione o la "larghezza" della curva. Una deviazione standard maggiore indica una maggiore variabilità dei dati e una curva più piatta e larga; una deviazione standard minore indica dati più concentrati attorno alla media e una curva più alta e stretta.
La Regola Empirica 68-95-99.7
Per qualsiasi variabile che segue una distribuzione normale, esiste una relazione fissa tra la deviazione standard e la percentuale di dati che si trovano entro una certa distanza dalla media. Questa relazione è nota come la Regola Empirica, o regola 68-95-99.7
Circa il 68% delle osservazioni si trova entro una deviazione standard dalla media (nell'intervallo ).
Circa il 95% delle osservazioni si trova entro due deviazioni standard dalla media (nell'intervallo ).
Circa il 99.7% delle osservazioni si trova entro tre deviazioni standard dalla media (nell'intervallo ).
Queste percentuali derivano matematicamente dall'integrazione della funzione di densità di probabilità della distribuzione normale.
La costruzione del canale di regressione
Il canale di regressione traduce questi concetti statistici in uno strumento visivo per l'analisi dei grafici di prezzo. È composto da tre linee:
Linea Centrale: È la retta di regressione lineare ($ \hat{y}_i = b_0 + b_1 x_i $) calcolata come descritto nella Sezione 1. Questa linea rappresenta la stima del valore medio o di equilibrio dei prezzi per il periodo analizzato.
Banda Superiore: È una linea parallela alla retta di regressione, tracciata a una distanza di +2 volte l'errore standard della regressione (σ^). La sua equazione è: Banda Superiore=y^i+2σ^.
Banda Inferiore: È una linea parallela alla retta di regressione, tracciata a una distanza di -2 volte l'errore standard della regressione (σ^). La sua equazione è: Banda Inferiore=y^i−2σ^.4
L'interpretazione statistica di questo canale è che esso rappresenta un intervallo di confidenza del 95% attorno alla linea di tendenza. Se l'assunzione di normalità dei residui fosse valida, ci si aspetterebbe che il 95% dei prezzi osservati si collochi all'interno di questo canale. Di conseguenza, un prezzo che si muove al di fuori delle bande è considerato un evento statisticamente raro (con una probabilità teorica del 5%), segnalando una potenziale condizione di ipercomprato (sopra la banda superiore) o ipervenduto (sotto la banda inferiore).15
Tuttavia, è fondamentale comprendere che l'applicazione diretta della regola empirica ai prezzi finanziari rappresenta un'approssimazione concettualmente imperfetta. La regola è valida per distribuzioni stazionarie (come la normale), mentre le serie storiche dei prezzi sono intrinsecamente non stazionarie, con media e varianza che evolvono nel tempo.
Pertanto, la probabilità reale che un prezzo rimanga all'interno del canale non è garantita essere esattamente del 95%. La vera utilità del canale non risiede nella sua precisione probabilistica, ma nella sua capacità di fornire una misura
dinamica e normalizzata della volatilità attorno a un trend locale. I prezzi che toccano le bande non dovrebbero essere interpretati come "eventi con probabilità del 5%", ma piuttosto come prezzi che hanno raggiunto un livello di deviazione estremo rispetto al comportamento recente del mercato. Questa reinterpretazione sposta il focus del canale da uno strumento predittivo-probabilistico a uno strumento descrittivo-adattivo della volatilità, un punto cruciale per il suo uso corretto nel trading.
Perché da solo NON BASTA?
1)L'Assunzione di Linearità vs. la Realtà dei Mercati
2)La Non-Stazionarietà delle Serie Storiche Finanziarie
3)La Non-Normalità dei Rendimenti: Il Problema delle "Code Grasse" (Fat Tails):
-Asimmetria
-Leptocurtosi
Quindi è inutile?
Assolutamente no, c'è la possibilità di utilizzare tale strumento come base per la costrustione di strategie più complesse, da solo non basta.
Quindi come ovviare a questi problemi?
Soluzione alla Non-Stazionarietà :
1)La pratica econometrica standard per affrontare la non-stazionarietà dei prezzi consiste nel trasformare la serie. Invece di modellare i prezzi, si modellano i rendimenti (spesso i rendimenti logaritmici, calcolati come rt=ln(Pt/Pt−1)). I rendimenti sono generalmente più vicini a un processo stazionario, rendendo i modelli statistici applicati su di essi più affidabili e meno soggetti a regressioni spurie.
2) Rolling Regression : Invece di calcolare una singola retta di regressione su tutto il set di dati, la rolling regression (o regressione mobile) calcola la regressione su una finestra di dati di lunghezza fissa che si sposta in avanti nel tempo (ad esempio, gli ultimi 100 periodi). Questo approccio permette ai coefficienti b0 e b1 di ricalcolarsi a ogni nuovo dato, adattandosi così ai cambiamenti nel trend e nella volatilità del mercato. La "curva" di regressione visualizzata su molte piattaforme di trading è, in effetti, la traccia dell'ultimo punto di una serie di regressioni mobili, che conferisce al modello una reattività molto maggiore.
3) Regressione Polinomiale : Per catturare le dinamiche non lineari, è possibile estendere il modello lineare includendo termini di grado superiore della variabile tempo (ad esempio, X2,X3). Un modello di regressione polinomiale, come Y=β0+β1X+β2X2+ϵ, può descrivere trend curvi, catturando fasi di accelerazione o decelerazione. Sebbene la relazione tra Y e X sia non lineare, il modello rimane lineare nei parametri e può essere stimato con OLS. Questo offre un modo semplice per andare oltre la rigidità di una linea retta.
Affrontare la Non-Normalità e i Falsi Segnali: Indicatori di Conferma
Per filtrare i numerosi falsi segnali generati dalle violazioni delle assunzioni statistiche (in particolare le fat tails), è fondamentale applicare il principio di confluenza: un segnale di trading è considerato più robusto se è confermato simultaneamente da più indicatori basati su logiche diverse.
Ad esempio sto utilizzando un canale di regressione come filtro, se il canale ha tendenza crescente, valuterò solo entrate long, se si trova sotto la linea centrale, e con l'auto del footprint volume e del delta, cercherò degli stacked imbalace long e candele con delta fortemente positivo. Ma può essere usato lo stocastico, l'RSI, le medie mobili ecc.
Detto ciò in conclusione
I risultati principali possono essere così sintetizzati:
Fondamento Statistico: Il canale di regressione è uno strumento statisticamente ricco, che quantifica il trend (tramite la pendenza della retta) e la volatilità attorno ad esso (tramite l'ampiezza del canale). La sua costruzione si basa su principi solidi come il metodo dei minimi quadrati e le proprietà della distribuzione normale.
Limiti Strutturali: Le assunzioni fondamentali del modello – linearità, stazionarietà e normalità dei residui – sono profondamente e sistematicamente violate dai dati finanziari. I mercati sono non lineari, le serie dei prezzi non sono stazionarie e i rendimenti presentano "code grasse". Queste violazioni portano a regressioni spurie, a una costante sottostima del rischio e alla generazione di numerosi segnali di trading inaffidabili.
Valutazione Finale: Di conseguenza, il canale di regressione lineare non deve essere considerato uno strumento predittivo autonomo o una "scatola nera" in grado di generare profitti meccanicamente. La sua vera utilità risiede nel suo ruolo di indicatore descrittivo del trend e della volatilità passati e recenti. Fornisce un contesto quantitativo, non una previsione certa.
La prospettiva futura per un utilizzo efficace di questo strumento non risiede nel suo abbandono, ma nella sua intelligente integrazione all'interno di un sistema di trading multi-fattoriale e adattivo. Come dimostrato, l'impiego di tecniche come la rolling regression, l'uso di indicatori di conferma, filtri di trend come le medie mobili a lungo termine, può mitigare significativamente le sue debolezze. In questo approccio evoluto, il canale di regressione non è più il fulcro della strategia, ma una componente che fornisce informazioni sul posizionamento relativo del prezzo all'interno di un framework decisionale più ampio e robusto. Questo percorso, che va dalla semplice applicazione di un modello alla comprensione critica e all'integrazione contestuale, rappresenta la transizione essenziale da un'analisi tecnica rudimentale a un approccio al trading genuinamente quantitativo.
Spero che l'argomento non sia stato troppo ostico, e spero di aver dato spunto a qualcuno per costruirci una strategia magari migliore della mia.
BUON TREDING A TUTTI
Strategy!
New Indicator Incoming – Master NQFX 4.1 per Trading Wiew
-ITA
Ciao community!
Voglio condividere con voi qualcosa che mi sta davvero entusiasmando: questo è il risultato reale del mio indicatore proprietario, non ancora in vendita, che sto perfezionando da mesi.
✅ Timeframe: M1 e M15
✅ Struttura multi-conferma con trend filter
✅ 500 pips in short + 430 pips in long in sequenza
✅ Nessun segnale sbagliato in tutta la sessione.
“Vedere un indicatore lavorare in modo così pulito su M1… è come trovare oro puro in mezzo al rumore di mercato.”
“Sapevo che avrei potuto costruire qualcosa di unico… ma vederlo performare così è un’emozione.”
🎯 Questo è solo un primo assaggio: lo sto testando intensamente su più asset e su diversi contesti di mercato.
Non è ancora disponibile, ma sto valutando se rilasciarlo pubblicamente.
💬 Cosa ne pensate? Vi piacerebbe provarlo?
📩 Commentate qui sotto o mandatemi un messaggio se volete essere tra i primi a testarlo in anteprima.
🔄 Seguitemi per aggiornamenti sul rilascio ufficiale.
Grazie a tutti per il supporto e i feedback, questa è solo l’inizio. 🚀
-ENG
Hi TradingView community,
I'm excited to share something I'm truly proud of. This is the real performance of my proprietary indicator – still not for sale – which I’ve been refining for months.
✅ Timeframes: M1 and M15
✅ Multi-confirmation structure with trend filter
✅ 500 pips on the short + 430 pips on the long – back to back
✅ Not a single false signal during the session.
“Seeing an indicator perform this cleanly on M1… it’s like striking pure gold in the noise of the market.”
“I knew I could build something unique… but watching it work like this is a whole different feeling.”
🎯 This is just the beginning. I’m stress-testing it on different assets and market conditions.
It's not available yet, but I’m considering a public release.
💬 What do you think? Would you like to try it out?
📩 Drop a comment below or send me a message if you'd like to be among the first to test it.
🔄 Follow me for updates on the official release.
Thanks for the support and feedback – this is just the beginning. 🚀
ORARI SESSIONI FOREX ( FUSO ORARIO ITALIANO)Ciao traders, gli orari delle sessioni porteranno la tua operatività nei mercati al next level, il cambiamento significativo lo noterai nella gestione del tempo, se sei un aspirante trader non sarai più costretto a stare H24 davanti ai grafici.. (mito sfatato) ;)
Scherzi a parte, hai capito bene sarai Tu a scegliere come, dove e quando tradare, andiamo subito al fuso orario GMT:
FX (GMT)
-Sidney —> 22:00 - 6:00
-Tokyo —> 00:00 - 8:00
-London —> 8:00 - 16:00
-NewYork —> 13:00 - 21:00
Coppie per:
Sidney-Tokyo = 00:00 - 6:00
Tokyo-London = 8:00
London-NewYork = 13:00 - 16:00
Esempio per Tokyo-London: GBP/JPY
FX (ORA INVERNALE ITA)
-Sidney —> 23:00 - 7:00
-Tokyo —> 1:00 - 9:00
-London —> 9:00 - 17:00
-NewYork —> 14:00 - 22:00
Coppie per:
Sidney-Tokyo = 1:00 - 7:00
Tokyo-London = 9:00
London-NewYork = 14:00 - 17:00
Fx (ORA ESTIVA ITA)
-Sidney —> 00:00 - 8:00
-Tokyo —> 2:00 - 10:00
-London —> 10:00 - 18:00
-NewYork —> 15:00 - 23:00
Coppie per:
Sidney-Tokyo = 2:00 - 8:00
Tokyo-London = 10:00
London-NewYork = 15:00 - 18:00
Tips per Individuare attraverso un indicatore gratuito la sessione:
-Indicatori:
Cerca per: Kill Zones (oscarvs)
Rosso: Tokyo session
(Durante questa sessione solo nelle ore di coincidenza tra le coppie trado CAD/JPY)
Giallo: London session
(Durante questa sessione solo nelle ore di coincidenza tra le coppie trado GBP/JPY)
Grigio: New York session
(Durante questa sessione trado XAUUSD - USDWTI - NAS100)
Buon Trading!
Utilizzare la statistica con Pine Script Ciao a tutti !
Oggi vogliamo offrire un contenuto di alto valore alla comunità italiana di Trading View motivandola nell' utilizzare Pine Script, un potente linguaggio di programmazione proprietario progettato per essere il migliore in termini di elaborazione dati finanziari e trading.
Andremo a commentare il codice rilasciato nella nostra sezione script 'Reinforced RSI':
La strategia proposta è una strategia long che utilizza l'indicatore RSI con un rinforzo matematico statistico, rilevabile integrando il nostro modulo 'Probabilities'.
Il modulo Probabilities, calcola le probabilità passate di ciascuna operazione e permette di estrapolare le probabilità di operazioni profittevoli in termini quantitativi.
Logica della strategia: si acquista long, utilizzando l'indicatore RSI, su un determinato valore di iper venduto chiudendo l'operazione su un determinato livello di iper comprato. Ogni operazione è regolata da stop loss e take profit, offrendo maggiore dinamicità alla strategia. Infine viene integrato il modulo 'Probabilities' che filtra le operazioni, evitando di scambiare in periodi poco profittevoli. Utilizzando questo modulo infatti, le operazioni vengono aperte e eseguite a mercato solo ed esclusivamente se le probabilità passate di scambiare in profitto sono maggiori al 51%.
Commentiamo quindi il codice sorgente di Reinforced RSI, rendendolo il più fruibile e chiaro possibile.
//@version=5
strategy("RSI with reinforcement",
overlay = true,
default_qty_type = strategy.percent_of_equity,
default_qty_value = 100,
pyramiding = 1,
currency = currency.EUR,
initial_capital = 1000,
commission_type = strategy.commission.percent,
commission_value = 0.07)
Questo primo blocco di codice descrive la tipologia di script, popolando la strategia con tutte le informazioni necessarie al suo corretto funzionamento.
lenght_rsi = input.int(defval = 14, minval = 1, title = "RSI lenght: ")
rsi = ta.rsi(close, length = lenght_rsi)
Si crea una variabile integrata e modificabile dall' interfaccia utente per regolare la lunghezza di calcolo dell'indicatore RSI.
Si chiama l' indicatore RSI, calcolando la formula sul prezzo 'close' che verrà calcolata sulla lunghezza impostata.
rsi_value_check_entry = input.int(defval = 35, minval = 1, title = "Oversold: ")
rsi_value_check_exit = input.int(defval = 75, minval = 1, title = "Overbought: ")
Si creano due variabili integrate e modificabili dall' interfaccia utente per regolare i valori di iper venduto e iper comprato.
trigger = ta.crossunder(rsi, rsi_value_check_entry)
exit = ta.crossover(rsi, rsi_value_check_exit)
Si definiscono le condizioni di ingresso e uscita. Si aprirà una operazione long se il prezzo è sul livello di iper venduto e si chiuderà la posizione al livello di iper comprato.
entry_condition = trigger
TPcondition_exit = exit
look = input.int(defval = 30, minval = 0, maxval = 500, title = "Lookback period: ")
Probabilities(lookback) =>
isActiveLong = false
isActiveLong := nz(isActiveLong , false)
isSellLong = false
isSellLong := nz(isSellLong , false)
int positive_results = 0
int negative_results = 0
float positive_percentage_probabilities = 0
float negative_percentage_probabilities = 0
LONG = not isActiveLong and entry_condition == true
CLOSE_LONG_TP = not isSellLong and TPcondition_exit == true
p = ta.valuewhen(LONG, close, 0)
p2 = ta.valuewhen(CLOSE_LONG_TP, close, 0)
for i = 1 to lookback
if (LONG )
isActiveLong := true
isSellLong := false
if (CLOSE_LONG_TP )
isActiveLong := false
isSellLong := true
if p > p2
positive_results += 1
else
negative_results -= 1
positive_relative_probabilities = positive_results / lookback
negative_relative_probabilities = negative_results / lookback
positive_percentage_probabilities := positive_relative_probabilities * 100
negative_percentage_probabilities := negative_relative_probabilities * 100
positive_percentage_probabilities
probabilities = Probabilities(look)
Si integra il modulo delle probabilità, aggiustando il codice sorgente al nostro use case.
In particolare assegnamo le condizioni di ingresso e uscita con:
entry_condition = trigger
TPcondition_exit = exit
Assegnamo poi al contenitore di trade positivi +1 se il prezzo di chiusura dell'operazione è maggiore rispetto a quello di chiusura.
Facciamo lo stesso per le operazioni negative in cui il prezzo di chiusura è inferiore a quello di apertura.
Automaticamente il modulo calcolerà le probabilità passate della strategia.
if p > p2
positive_results += 1
else
negative_results += 1
Concluso l'aggiustamento del modulo al nostro use case, passiamo a concludere la strategia.
lots = strategy.equity/close
var float e = 0
var float c = 0
Calcoliamo la quantità da scambiare per ogni singola posizione (100% dell'equity depositato sulla strategia).
tp = input.float(defval = 1.00, minval = 0, title = "Take profit: ")
sl = input.float(defval = 1.00, minval = 0, title = "Stop loss: ")
Creiamo due variabili integrate all' interno dell'interfaccia utente. Una per regolare il take profit, l'altra per regolare lo stop loss.
if trigger==true and strategy.opentrades==0 and probabilities >= 51
e := close
strategy.entry(id = "e", direction = strategy.long, qty = lots, limit = e)
takeprofit = e + ((e * tp)/100)
stoploss = e - ((e * sl)/100)
if exit==true
c := close
strategy.exit(id = "c", from_entry = "e", limit = c)
if takeprofit and stoploss
strategy.exit(id = "c", from_entry = "e", stop = stoploss, limit = takeprofit)
Infine si descrive la logica di trading, specificando che ogni trade viene effettuato solo ed esclusivamente se le probabilità sono uguali o maggiori a 51%.
Puoi trovare il codice completo qui sotto, oppure nella nostra sezione script :
// This source code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © thequantscience
//@version=5
strategy("RSI with reinforcement",
overlay = true,
default_qty_type = strategy.percent_of_equity,
default_qty_value = 100,
pyramiding = 1,
currency = currency.EUR,
initial_capital = 1000,
commission_type = strategy.commission.percent,
commission_value = 0.07)
lenght_rsi = input.int(defval = 14, minval = 1, title = "RSI lenght: ")
rsi = ta.rsi(close, length = lenght_rsi)
rsi_value_check_entry = input.int(defval = 35, minval = 1, title = "RSI value check entry: ")
rsi_value_check_exit = input.int(defval = 75, minval = 1, title = "RSI value check exit: ")
trigger = ta.crossunder(rsi, rsi_value_check_entry)
exit = ta.crossover(rsi, rsi_value_check_exit)
entry_condition = trigger
TPcondition_exit = exit
look = input.int(defval = 30, minval = 0, maxval = 500, title = "Lookback period: ")
Probabilities(lookback) =>
isActiveLong = false
isActiveLong := nz(isActiveLong , false)
isSellLong = false
isSellLong := nz(isSellLong , false)
int positive_results = 0
int negative_results = 0
float positive_percentage_probabilities = 0
float negative_percentage_probabilities = 0
LONG = not isActiveLong and entry_condition == true
CLOSE_LONG_TP = not isSellLong and TPcondition_exit == true
p = ta.valuewhen(LONG, close, 0)
p2 = ta.valuewhen(CLOSE_LONG_TP, close, 0)
for i = 1 to lookback
if (LONG )
isActiveLong := true
isSellLong := false
if (CLOSE_LONG_TP )
isActiveLong := false
isSellLong := true
if p > p2
positive_results += 1
else
negative_results += 1
positive_relative_probabilities = positive_results / lookback
negative_relative_probabilities = negative_results / lookback
positive_percentage_probabilities := positive_relative_probabilities * 100
negative_percentage_probabilities := negative_relative_probabilities * 100
positive_percentage_probabilities
probabilities = Probabilities(look)
lots = strategy.equity/close
var float e = 0
var float c = 0
tp = input.float(defval = 1.00, minval = 0, title = "Take profit: ")
sl = input.float(defval = 1.00, minval = 0, title = "Stop loss: ")
if trigger==true and strategy.opentrades==0 and probabilities >= 51
e := close
strategy.entry(id = "e", direction = strategy.long, qty = lots, limit = e)
takeprofit = e + ((e * tp)/100)
stoploss = e - ((e * sl)/100)
if exit==true
c := close
strategy.exit(id = "c", from_entry = "e", limit = c)
if takeprofit and stoploss
strategy.exit(id = "c", from_entry = "e", stop = stoploss, limit = takeprofit)
Il backtesting dell'esempio è effettuato su NASDAQ:TSLA , timeframe 15 minuti.
I parametri impostati dall'interfaccia utente sono:
1. Lenght: 13
2. Oversold: 40
3. Overbought: 70
4. Lookback: 50
5. Take profit: 3%
6. Stop loss: 3%
Il nostro modulo 'Probabilites':
Per noi è importante il tuo feedback, facci sapere se questo contenuto ti è stato di aiuto !
Programmare una strategia long e disegnare un indicatore (Pt. 2)Benvenuto a questo secondo tutorial che vuole aiutare trader e investitori a comprendere al meglio il potente linguaggio di programmazione Pine Script.
Nel tutorial di oggi continueremo a programmare il nostro semplice algoritmo di tipo strategy , descrivendone attentamente la sintassi.
Nel primo tutorial abbiamo analizzato la dichiarazione di una strategia e le sue funzioni base, oggi implementeremo il codice per una strategia long only basata sull' indicatore RSI. Il nostro algoritmo acquisterà long ogni volta che il l'indicatore entra in ipervenduto-oversold (livello 30) vendendo la posizione quando l'indicatore entra in ipercomprato-overbought (livello 70). Successivamente disegneremo un indicatore molto semplice di tipo visual che terrà traccia dei livelli di prezzo di entrate e uscite per ogni singolo trade. I prezzi delle entrate saranno disegnati con una linea verde, i prezzi delle uscite saranno disegnati con una linea rossa.
Una cosa molto importante prima di iniziare: non utilizzare questo script per prendere decisioni di investimento. Utilizza questo codice esclusivamente per esercitarti, testare e comprendere il linguaggio Pine Script.
Qui sotto trovi il codice sorgente, puoi copiarlo e incollarlo all' interno della tua console di Trading View. Salva il codice e aggiungilo allo schermo.
//@version=5
strategy(title = " Strategy Tutorial - The Quant Science™ ",
overlay = false,
initial_capital = 1000,
currency = currency.EUR,
commission_type = strategy.commission.percent,
commission_value = 0.03,
slippage = 10,
default_qty_value = 100,
default_qty_type = strategy.percent_of_equity,
process_orders_on_close = true)
//------------------------------------------------------------ Pt. 2
rsi = ta.rsi(close, 14)
buyLong = ta.crossunder(rsi, 30)
closingLong = ta.crossover(rsi, 70)
priceEntry = ta.valuewhen(buyLong, close, 0)
priceExit = ta.valuewhen(closingLong, close, 0)
if buyLong and strategy.opentrades == 0
strategy.order(id = "Open Long Trade",
direction = strategy.long,
limit = priceEntry)
strategy.entry(id = "Open Long Trade",
direction = strategy.long)
if closingLong
strategy.exit(id = "Close Long Trade",
from_entry = "Open Long Trade",
stop = priceExit)
plot(priceEntry,
style = plot.style_line,
color = color.green)
plot(priceExit,
style = plot.style_line,
color = color.red)
Come puoi notare abbiamo separato la prima parte del codice svolta nel primo tutorial con la seconda parte.
Iniziamo quindi ad analizzare il nostro codice sorgente descrivendone la sintassi stringa dopo stringa.
rsi = ta.rsi(close, 14) : creiamo una variabile a cui assegnamo la funzione built-in ta.rsi() , questa funzione ci permette di accedere velocemente all' indicatore RSI. All' interno della funzione passiamo il source e il periodo . Impostiamo quindi close e il periodo di 14 , in questo modo l' indicatore sarà calcolato sulla chiusura di ogni barra prendendo le ultime 14 barre passate.
buyLong = ta.crossunder(rsi, 30) : successivamente andiamo a dichiarare una seconda variabile che chiameremo "buyLong". Servirà per definire quando il nostro algoritmo dovrà aprire la posizione long. Tramite ta.crossunder() accediamo alla funzione built-in che ci permette di passare due elementi e definire la condizione di ingresso. Come pattuito in precedenza acquistiamo sul livello di oversold pari a 30. Passeremo all' interno di questa funzione quindi rsi (la variabile che ingloba il nostro indicatore) e 30 (il livello di ipervenduto).
closingLong = ta.crossover(rsi, 70) : ora andiamo a dichiarare la variabile che chiameremo "closingLong". Servirà per definire quando il nostro algoritmo dovrà chiudere la posizione long. Tramite ta.crossover() accediamo alla funzione built-in che ci permette di passare due elementi e definire la condizione di uscita. Come pattuito in precedenza vendiamo la posizione long sul livello di overbought pari a 70. Passeremo all' interno di questa funzione quindi rsi (la variabile che ingloba il nostro indicatore) e 70 (il livello di ipercomprato).
priceEntry = ta.valuewhen(buyLong, close, 0) : isoliamo il prezzo di ingresso dichiarando una variabile "priceEntry". Servirà per definire il prezzo esatto dell' ingresso long. Tramite ta.valuewhen() accediamo alla funzione built-in che ci permette di passare tre elementi, il primo elemento è la condizione , il secondo è un elemento di tipo source e il terzo elemento è un elemento di tipo int chiamato occurrence. Passiamo all' interno di questa funzione la condizione buyLong , come source close e come occurrence 0 .
priceExit = ta.valuewhen(closingLong, close, 0) : isoliamo il prezzo di uscita dichiarando una variabile "priceExit". Servirà per definire il prezzo esatto dell' uscita long. Tramite ta.valuewhen() accediamo alla funzione built-in che ci permette di passare tre elementi, il primo elemento è la condizione , il secondo è un elemento di tipo source e il terzo elemento è un elemento di tipo int chiamato occurrence. Passiamo all' interno di questa funzione la condizione closingLong , come source close e come occurrence 0 .
if buyLong and strategy.opentrades == 0 : ora che abbiamo definito le condizioni del nostro algoritmo andiamo a implementare la parte che farà interagire le nostre condizioni creando una vera e propria strategia. Questa stringa è divisa in quattro differenti parti:
1. if : la condizione 'if' definisce quali azioni vanno eseguite se le condizioni sono soddisfatte
2. buyLong : la nostra condizione di ingresso
3. and : letteralmente 'e' offre la possibilità di combinare una seconda condizione
4. strategy.opentrades == 0 : indica i numeri di ordini a mercato aperti che in questo caso dovranno essere uguali a 0.
In definitiva se la condizione di ingresso è soddisfatta e nessun altro ordine è a mercato, allora si eseguirà l' inserimento dell' ordine long, che analizzeremo di seguito.
strategy.order(id = "Open Long Trade", direction = strategy.long, limit = priceEntry) : attraverso la funzione strategy.order() definiremo l'invio dell' ordine a mercato. All' interno di questa funzione passiamo un id (nome dell'ordine "Open Long Trade"), direction = strategy.long (la direzione dell'ordine, che in questo caso è di tipo long) e limit = priceEntry (prezzo a cui dovrà essere eseguito l'ordine, in questo caso uguale a "priceEntry").
strategy.entry(id = "Open Long Trade", direction = strategy.long) : attraverso la funzione strategy.entry() dichiareremo l'esecuzione dell' ordine a mercato. All' interno di questa funzione passiamo un id (nome dell'ordine "Open Long Trade") e direction = strategy.long (la direzione dell'ordine, che in questo caso è di tipo long).
Ora tutte le volte che le condizioni sono soddisfatte e il capitale è libero il nostro algoritmo acquisterà long al prezzo definito dalla nostra condizione.
Continuiamo comunicando al nostro script quando vogliamo chiudere la posizione.
if closingLong : implementiamo la condizione che dovrà essere soddisfatta per l'uscita del trade, ovvero quando l' indicatore rsi si trova a livello 70, il livello di overbought o ipercomprato.
strategy.exit(id = "Close Long Trade", from_entry = "Open Long Trade", stop = priceExit) : attraverso la funzione strategy.exit() definiremo la chiusura del trade long. All' interno di questa funzione passiamo un id (nome dell'ordine "Close Long Trade"), from_entry = "Open Long Trade"
(indichiamo l'id dell' ordine che deve essere chiuso) e il prezzo di esecuzione stop = priceExit (prezzo a cui dovrà essere eseguita la chiusura, in questo caso uguale a "priceExit").
Molto bene, ora abbiamo concluso la programmazione operativa del nostro script è il momento di aggiungere un indicatore che ci permetterà di visualizzare i prezzi di entrata e uscita.
In Pine Script la funzione che si utilizza per disegnare dei valori si chiama plot .
plot(priceEntry, style = plot.style_line, color = color.green) : definiamo dei valori da disegnare tramite plot(), all'interno di questa funzione passeremo il valore della serie da disegnare ovvero il prezzo di entrata, priceEntry . Successivamente definiamo lo stile dell' indicatore con style = plot.style_line e il colore verde con color = color.green .
plot(priceExit, style = plot.style_line, color = color.red) : definiamo dei valori da disegnare tramite plot(), all'interno di questa funzione passeremo il valore della seconda serie da disegnare ovvero il prezzo di uscita, priceExit . Successivamente definiamo lo stile dell' indicatore con style = plot.style_line e il colore rosso con color = color.red .
Puoi trovare tutti gli stili disponibili e i colori con cui puoi configurare il tuo indicatore all' interno del manuale Pine Script.
Ci vediamo al prossimo tutorial dove analizzeremo il codice della strategia per la versione short.
Se riscontri problemi durante il salvataggio dello script, copia e incolla il codice qui sotto, se continui a riscontrare problemi non esitare a contattarci.
//@version=5
strategy(title = " Strategy Tutorial - The Quant Science™ ", overlay = false, initial_capital = 1000, currency = currency.EUR, commission_type = strategy.commission.percent, commission_value = 0.03, slippage = 10, default_qty_value = 100, default_qty_type = strategy.percent_of_equity, process_orders_on_close = true)
//------------------------------------------------------------ Pt. 2
rsi = ta.rsi(close, 14)
buyLong = ta.crossunder(rsi, 30)
closingLong = ta.crossover(rsi, 70)
priceEntry = ta.valuewhen(buyLong, close, 0)
priceExit = ta.valuewhen(closingLong, close, 0)
if buyLong and strategy.opentrades == 0
strategy.order(id = "Open Long Trade", direction = strategy.long, limit = priceEntry)
strategy.entry(id = "Open Long Trade", direction = strategy.long)
if closingLong
strategy.exit(id = "Close Long Trade", from_entry = "Open Long Trade", stop = priceExit)
plot(priceEntry, style = plot.style_line, color = color.green)
plot(priceExit, style = plot.style_line, color = color.red)
Come impostare uno script strategy con Pine Script Benvenuto a questo primo tutorial che vuole aiutare trader e investitori a comprendere al meglio il potente linguaggio di programmazione Pine Script.
Pine Script permette di utilizzare due forme differenti di script; strategy e indicator. Ciascuna ha le proprie caratteristiche tecniche che devono essere comprese prima di iniziare a sviluppare il proprio progetto.
Che cos'è uno script ?
In generale nel mondo della programmazione uno script è un insieme di stringhe di codice che permette di compiere determinate funzioni nella vita reale, possiamo quindi considerare uno script come un piccolo software che compie determinate azioni. In questo caso gli script programmabili su Trading View permettono di compiere funzioni e azioni inerenti al mondo del trading e della finanza.
In Pine Script esistono due tipologie di script:
1) Strategy: con funzioni e variabili dedicate permettono di generare un backtesting per una determinata strategia.
2) Indicator: permettono di creare visual tool e vengono spesso utilizzati per creare mini applicazioni, tabelle e indicatori personalizzabili.
Nel tutorial di oggi analizzeremo gli script strategy .
Qui di seguito trovi un esempio di codice introduttivo, il codice si riferisce solo alla parte iniziale di uno script di tipo strategy e ti aiuterà a comprendere al meglio come impostare e configurare la parte iniziale del tuo script.
//@version=5
strategy(title = " Strategy Tutorial - The Quant Science ™ ",
overlay = false,
initial_capital = 1000,
currency = currency.EUR,
commission_type = strategy.commission.percent,
commission_value = 0.03,
slippage = 10,
default_qty_value = 100,
default_qty_type = strategy.percent_of_equity,
process_orders_on_close = true)
Come avrai notato, la parte iniziale di uno script inizia sempre con la dichiarazione della versione di Pine Script che stiamo utilizzando.
Nel nostro esempio utilizziamo l'ultima versione rilasciata da Trading View, la versione 5.
Quindi dichiareremo la versione con: //@version=5
In seguito alla dichiarazione della versione utilizzata, andremo a dichiarare la tipologia di script che vogliamo utilizzare, in questo caso inseriremo: strategy() .
All' interno delle parentesi doppie possiamo definire e aggiungere caratteristiche di base al nostro script. In questo esempio non abbiamo riportato tutte le variabili disponibili da includere all' interno di una strategia ma solo alcune. Per visualizzare tutte le variabili puoi consultare la guida Pine Script V5 oppure semplicemente fare doppio click su "strategy" dalla tua console di Trading View.
Iniziamo ad arricchire le funzionalità base del nostro script strategy:
title : si riferisce al nome che vogliamo assegnare al nostro script e tramite il quale gli utenti potranno ricercarlo all' interno della libreria di Trading View.
overlay : permette di proiettare il nostro indicatore, impostato su true l' indicatore sarà applicato sul grafico, impostato su false l' indicatore sarà proiettato sotto al grafico.
initial_capital : si riferisce all'ammontare di capitale iniziale che utilizzerai per la tua strategia. In questo esempio impostiamo 1000.
currency : si riferisce alla valuta base con cui desideri calcolare le performance della tua strategia, in questo caso scegliamo come moneta EUR (Euro). Trading View offre la possibilità di scegliere una vasta gamma di valute base, puoi trovare maggiori informazioni al riguardo all' interno della guida.
Per impostare la valuta Euro quindi inseriremo: currency.EUR.
commission_type : si riferisce al modo in cui vogliamo calcolare le commissioni,
Possiamo scegliere tre differenti tipologie di calcolo: strategy.commission.percent , strategy.commission.cash_per_contract , strategy.commission.cash_per_order . Di default lo script strategy calcola le commissioni in maniera percentuale, se non viene dichiarato un altro metodo.
commission_value : si riferisce al valore della commissione che il tuo broker applica a ciascun trade, in questo esempio utilizziamo Kucoin Exchange che applica una commissione dello 0.03% per l' apertura e 0.03% per la chiusura di ogni singolo trade.
slippage : è espresso in tick, questo valore viene aggiunto o sottratto al prezzo degli ordini market/stop per rendere il prezzo meno favorevole per la strategia, creando così un backtesting più reale. Nel nostro esempio impostiamo a 10 tick il nostro slippage.
default_qty_value : si riferisce alla quantità da investire ad ogni singolo trade, in questo caso investiamo il 100% del capitale per ogni singolo trade.
default_qty_type : si riferisce al tipo di calcolo con cui misurare il capitale investito per ogni singolo trade, nel nostro esempio dichiariamo
strategy.percent_of_equity che si riferisce al calcolo percentuale (avendo inserito 100 precedentemente).
process_orders_on_close : se impostato su true , genera un ulteriore tentativo di esecuzione degli ordini dopo la chiusura di una barra. Se gli ordini sono a mercato, lo script li esegue prima dell'apertura della barra successiva. Se gli ordini dipendono dal prezzo, saranno eseguiti solo se le condizioni di prezzo sono soddisfatte. Questa opzione è utile se si desidera chiudere le posizioni nella barra corrente. L'opzione predefinita è false . Per il nostro esempio scegliamo true .
Abbiamo concluso il nostro breve tutorial sulla dichiarazione di uno script di tipo strategy . In questo esempio abbiamo mostrato in maniera molto veloce alcune delle funzioni base con cui impostare il tuo algoritmo. Puoi trovare maggiori informazioni e tutte le funzioni disponibili consultando il manuale per il linguaggio Pine Script.
La Forza delle Medie Mobili in un Trend Rialzista - Esempio PSXUno degli indicatori che un trader deve monitorare durante le proprie Analisi Tecniche è il grafico delle Medie Mobili.
Una Media Mobile rappresenta l'analisi delle serie storiche di un dato insieme di valori calcolata su un determinato periodo.
Ne esistono di diversi tipi: semplice, ponderata, esponenziale.
Quella che notoriamente è la più usata per la sua semplicità è la cosiddetta "semplice", ovvero l'analisi delle serie storiche di valori ai quali viene dato il medesimo peso (unitario) nel tempo.
SI riporta nel grafico un esempio di strategia applicata all'indice S$P 500 (SPX), col solo uso della media mobile a 50 periodi, nell'intorno dei suoi valori di deviazione standard. In questo caso la strategia ha funzionato nell'89% dei casi, da inizio 2021 ad oggi, portando un rendimento complessivo del 22%.
Pregi della strategia:
- semplicità
- controllo del prezzo
- facile monitoraggio
Difetti della strategia:
- analisi dei dati del passato
- adattabilità in funzione del trend
- bassa precisione del punto di supporto
Tu usi la Media Mobile durante le tue analisi?
Scrivicelo tra i commenti!
TriVer : Cos'è e Come FunzionaTriVer è una strategia completamente automatizzabile grazie all’emissione di tre alert basata sulla coppia BTCUSD in grado di aprire posizioni sia Short che Long a differenza dei molteplici indicatori e segnali con cui è stata plasmata.
TriVer è in grado di analizzare il prezzo e il suo sviluppo all’interno del mercato, identificando i trend e detectando quando questi ultimi sono in condizioni idonee per poter aprire una posizione, lasciando così lavorare il prezzo e traendone profitto non appena vi siano i relativi segnali di inversione.
TriVer è in grado di identificare quando il trend diviene laterale, aprendo possibili posizioni sfruttando le piccole oscillazioni di tale fase del mercato e chiudendo queste ultime a determinati take profit preimpostati.
TriVer è in grado di identificare quando il mercato nella sua complessità è più propenso a movimenti repentini, sfruttando tali movimenti per trarne profitto.
TriVer sfrutta inoltre, ove sussistano le condizioni necessarie, le eventuali posizioni aperte nella direzione sbagliata di prezzo intrapresa poi dal mercato, invertendole e recuperando l’eventuale perdita con un profitto.
Gli indicatori usati, i valori impostati, i take profit e gli stop loss in percentuale applicati nonché le singole condizioni settate per l’attuazione e l’attivazione delle differenti posizioni di mercato, sono stati decisi a seguito di un lungo periodo di studio accompagnato da molteplici svariati backtests e realtest, selezionandone i più profittevoli per il pair BYBIT:BTCUSD a timeframe 4h come da grafico allegato.
Nella tabella allegata è possibile analizzare l'intera performance e statistica della strategia: è stato ipotizzato come cifra iniziale di partenza per il backtesting un capitale pari a 0.1BTC, una tassa media per singola posizione pari allo 0.15% ed un reinvestimento totale del capitale posseduto (si sfrutta l’interesse composto). Periodo analizzato: periodo totale del grafico di ByBit:BTCUSD su TradingView.
TriVer continuerà a venire studiata, migliorata, approfondita ed applicata, per poter ottenere sempre migliori e più efficienti risultati.
Vi ringraziamo per l’attenzione, per l’interessamento ed il tempo dedicatoci.
Qualora foste interessati alla strategia o al suo sviluppo vi suggeriamo di rimanere sintonizzati e in contatto: il team sviluppatore rimane e rimarrà sempre a disposizione per qualsiasi chiarimento, richiesta o curiosità in merito.
In coda inserito il collegamento all'idea correlata/script di riferimento.
Il team sviluppatore,
Andrea e Loris
Backtesting, basta per costruire una strategia?Buongiorno e buon sabato a tutti!
Oggi rispondiamo alla fatidica domanda: basta fare un test nel passato per costruire una strategia?
Sulla carta non ci sarebbe nulla di male, eppure i dati dimostrano che la teoria è sempre ben diversa dalla pratica.
Buona visione!
BACKTEST: La mia Strategia Intraday con MomentumOscillatorSTATISTICHE:
Periodo: 03/10/2019 - 12/03/2020
TradeTotali: 90
TradeVinti: 45
TradePersi: 45
Win%: 50%
SeriePositiva: 9
SerieNegativa: 9
Regole Applicate:
1. StopLoss: ATR Sopra/Sotto il Segnale di Ingresso;
2. TakeProfit: Doppio Rispetto allo SL;
3. Lo StopLoss non deve essere mai all'interno della banda dinamica;
4. Se c'è un'operazione in corso e si ricevono altri segnali di ingresso, questi segnali saranno ignorati, fino alla fine dell'operazione in atto.
Logica del Sistema:
Lo scopo del sistema è operare sempre a favore di trend, approfittando di segnali e parametri operativi meccanici per evitare di incorrere in errori emotivi, tali parametri sono inoltre fondamentali per un backtesting oggettivo.
L'indicatore serve allo scopo individuare segnali di ingresso ad alta probabilità che possano essere seguiti da un movimento direzionale duraturo o comunque esteso.
Lo StopLoss anche se meccanico, scatta sempre sotto una fascia dinamica di supporto/resistenza, rispettando la logica richiesta da uno stop loss.
Il Take Profit è regolato in maniera conseguente, in base alla stessa logica.
Pro e Contro:
P) Si annullano problemi relativi all'emotività, alla discrezionalità, si opera con segnali precisi calcolati su parametri oggettivi che hanno dimostrato una buona profittabilità su un discreto numero di trades. Tale approccio rimuove gli svantaggi del TF m15, il quale potrebbe far incorerre in errori di analisi dati da fretta ed inesperienza.
C) La strategia necessita di ulteriore backtesting, il timeframe applicato è molto caotico. Le size potrebbero risultare in alcuni casi molto consistenti, per questi motivi si potrebbe valutare una sua applicazione su TF più ampi, come l'H1.
Lasciate un like se volete altre idee di approfondimento su questa strategia ed un commento per farmi sapere che cosa ne pensate.
Grazie e buon trading a tutti!
Rischio/rendimento è così importante ?Buongiorno a tutti Traders,oggi voglio parlarvi di un argomento che ritengo molto importante,più delle strategie che vengono utilizzate,ovvero il rischio rendimento !
Chiaramente il Rischio-rendimento,va calcolato in base al backtesting delle proprie strategie e non messo a "caso".
Cos'è il rischio rendimento di un'operazione :
In maniera molto semplice è la percentuale di rischio (possibile perdita) a cui ci esponiamo in confronto alla percentuale di possibile rendimento (profitto) della stessa posizione.
Ovviamente il RISCHIO-RENDIMENTO va SEMPRE associato ad un ottimo sistema di money-management,altrimenti sarà tutto inutile !
Ora analizziamo i due esempi !
P.S. non sono consigli finanziari e nessuno,ripeto nessuno dovrà applicare questi sistemi al proprio trading,a meno che non li testi nel tempo con le proprie strategie !! E soprattutto mancano molti dati che un sistema di Trading dovrebbe avere,sono sintetizzati al massimo ed hanno il solo scopo di far capire quanto sia importante il Rischio-rendimento !!
Incominciamo dall'esempio 1 :
In questa strategia sappiamo che in media apriamo 150 trade all'anno,con un risk-management del 2% ed un Win-loss (rapporto tra trade in profitto ed in perdita) del 50%.
Con un RISCHIO-RENDIMENTO di 1:2
A fine anno sappiamo che all'incirca che questo sistema ci farà portare a casa un più 150% lordo.
Ecco il calcolo:
75 (trade in profitto) * 4 (%di profitto da ogni trade) - 75(trade in perdita) * 2 (% di perdita da ogni trade)
Come sistema non funziona male,ma mettiamo a rischio i nostri soldi per 150 volte e questo per molti Traders potrebbe essere un problema dal punto di vista emotivo e probabilmente molte volte si finirà in Over-trading solo per rispettare il numero di Trade da aprire.
SBAGLIATISSIMO !
Allora decidiamo di optare per la qualità dei nostri Trade ed ora entra in gioco l'esempio 2:
All'incirca con questo sistema sappiamo che apriremo in media 80 trade annuali,rischiando sempre il 2% per posizione ed un Win-Loss del 50%.
Questa volta però il RISCHIO-RENDIMENTO sarà di 1:3.
Questo sistema sappiamo che all'incirca a fine anno ci porterà ad avere un più 160%
Calcolo:
40*6 - 40*2
Ora confrontando i due esempi notiamo come nel secondo esempio nonostante apriamo quasi la META' DEI TRADE dell'esempio 1,con un rapporto R-R maggiore,a fine anno riusciamo ad ottenere una performance maggiore !
Questo fa capire che non servono centinaia di trade all'anno (decine di trade al mese) per essere profittevoli,ma ne servono pochi mirati e di qualità !!
Ed uno dei modi per aumentare la loro qualità è quella di scegliere di tradare solo Trade dal Rischio-rendimento alti.
Optando per la qualità avremo molti vantaggi:
-si passa meno tempo davanti ai grafici
-Non si rischia di finire in Over-trading
-Riusciremo a gestire meglio le nostre emozioni visto che rischieremo meno volte i nostri soldi nel mercato
-Riusciremo ad avere molto più tempo libero che possiamo impiegare come meglio crediamo
Insomma per quanto mi riguarda penso che per quanto sia difficile da credere,concentrarsi sulla qualità e lavorando intelligentemente avremo solo benefici..
Soprattutto per chi è agli inizi ed è abituato a scambiare il suo tempo per denaro avrà difficoltà a far entrare questo concetto nella sua mente proprio perchè è abituato al fatto che se vuole guadagnare di più deve lavorare di più(straordinari),ed è fondamentale cambiare questa mentalità,ci sono passato anche io e vi assicuro che se metterete in pratica questo concetto,vivrete meglio il vostro lavoro da TRADER !!
E tu che Rischio-rendimento utilizzi ?
è stato utile l'articolo ?
Fammi sapere nei commenti !
POSSIBILE COMPLETAMENTO BAT PATTERN SU AUDCADAttendiamo se si verifica o no il completamento del Bar Pattern; nel frattempo diamo un occhiata alle medie mobili (50 arancione e 200 nera), se effettivamente avremo un break and retest di quella struttura sempre a d1 potremmo avere una conferma riguardo il prolungamento dell'uptrend e di conseguenza la probabile formazione in completamento del pattern sulla sua solita zona del 88,6 Fibonacci(minimo).
Buon trading!











