Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Study Weekly-Mean-Trend ETH/USDT.P BYBIT 4H LONG E SHORT //
- // © Maurizio-Ciullo
- // No Repainting: https://www.youtube.com/watch?v=-ZvGC0wUNAI IN QUESTA STRATEGIA E' STATA USATA LA TECNICA NO REPAINTING
- // A differenza di quella originale ho cambiato le Medie da SMA a EMA perchè performano meglio
- // SU TRADINGVIEW ORARIO BORSA GMT
- // BARSBACK: 50
- // Il trading system completo - Weekly Mean Trend ETH/USDT.P BYBIT 4H LONG E SHORT (Strategia Breakout)
- // (Sviluppo Dati Exchange = FTX)
- // (Exchange= BYBIT) (Sottostante ETH-USDT.P) (Timeframe= 4H) (Direzione= LONG E SHORT) (Swing Posizione= NO) (Esclusione Ore=NO) (Esclusione Giorni=NO) (Esclusione Mesi=NO)
- // (Take Profit Long/Short Market = NO) (Take Profit Limit Long/Short= NO)
- // (Stop Loss Limit Long= NO) (Stop Loss Limit Short= NO) (Stop Loss Market Long/Short= SI) (Trailing Stop=SI) (Stop Emergenza= NO)
- // (Rischio Operazione 2% Perdita Media) (Max Drawdown Permesso 10,94%)
- // (ATTENZIONE !!! NON USO PIU' IL RISCHIO OPERAZIONE SOPRA DEL 2% MA LA LASCIO SEMPRE LIVE E QUANDO ARRIVA AL 15% DI MAX DD AGGIUSTATO CON IL PROGRAMMA MONTECARLO PYTHON LA CESTINO
- // (In Sample Dal=18/08/17 Al 30/11/21) (Out Of Sample Dal=30/11/21 Al 31/01/22)
- // (Money Management = 25% Del Capitale Tradestation)
- // (Money Management = 21% Del Capitale Tradingview) Preso Dal 15% Media Max Drawdown 2°nda Deviazione Standard Simulazione Montecarlo Python
- // (Progettatta Il=31/01/22)
- // ATTENZIONE SONO STATI GENERATI NUOVO REPORT RECENTI IN DATA 01/06/2025 MA QUESTI REPORT SONO STATI GENERATI SUL SEGUENTE DATAFEED DATO CHE FTX E' FALLITO:
- // DATI NUOVI REPORT GENERATI NELLE CARTELLE DI SVILUPPO:
- // IL DATAFEED COMPLETO = (18/08/2017 26/05/2025)
- // NUOVI DATI DI REPORT DATAFEED ETH/USDT BINANCE + ETH/USDT.P BYBIT 4H STORICO INIZIALE BINANCE PER POI PROSEGUIRE CON BYBIT
- // (Sviluppo Dati Exchange = BINANCE + BYBIT) (BINANCE Dal=18/08/2017 Al 21/10/2020) (BYBIT Dal=21/10/2020 Al 26/05/2025)
- //@version=5
- indicator("Study Weekly-Mean-Trend ETH/USDT.P BYBIT 4H LONG E SHORT", overlay=true)
- // Input
- input_media_W_high = input.int(title='media_W_high', defval=10, minval=1, maxval=500, group='Medie_Settimanali')
- input_media_W_low = input.int(title='media_W_low', defval=19, minval=1, maxval=500, group='Medie_Settimanali')
- input_media_W_high_smoothed = input.int(title='media_W_high_smoothed', defval=38, minval=1, maxval=500, group='Medie_Settimanali_Smoothed')
- input_media_W_low_smoothed = input.int(title='media_W_low_smoothed', defval=38, minval=1, maxval=500, group='Medie_Settimanali_Smoothed')
- in_atr_period_long = input.int(title='Periodicità ATR long', minval=5, maxval=500, defval=14, step=1)
- in_atr_period_short = input.int(title='Periodicità ATR short', minval=5, maxval=500, defval=9, step=1)
- in_atr_mult_long = input.float(title='atr_Mult_long', minval=0.1, maxval=5, defval=0.75, step=0.5)
- in_atr_mult_short = input.float(title='atr_Mult_short', minval=0.1, maxval=5, defval=1, step=0.5)
- dmi_min_diff_input_long = input.float(title='Distanza min dim_long', minval=-100, maxval=1000000, defval=18, step=0.1)
- dmi_min_diff_input_short = input.float(title='Distanza min dim_short', minval=-100, maxval=1000000, defval=25, step=0.1)
- // >>>>>>>>>>>>>> Start Calcolo Minimo E Massimo Settimanale Allineato con Tradestation <<<<<<<<<<<<<<<<<
- // Variabili persistenti
- var float MinimoCorrente = na
- var float MinimoSettPrec = na
- var float MassimoCorrente = na
- var float MassimoSettPrec = na
- var int GiornoPrecedente = na
- // Prendi il valore LOW in modo sicuro (anti-repainting)
- low_val = low[barstate.isconfirmed ? 0 : 1]
- high_val = high[barstate.isconfirmed ? 0 : 1]
- // Giorno dell’anno
- data_attuale = (dayofweek(time))
- // Se è domenica e nuova giornata → nuova settimana
- if dayofweek == dayofweek.sunday and GiornoPrecedente != data_attuale
- MinimoSettPrec := MinimoCorrente // salvo il minimo della settimana appena chiusa (da domenica precedente a sabato)
- MinimoCorrente := low_val // resetto il minimo per la nuova settimana (che inizia di domenica)
- MassimoSettPrec := MassimoCorrente
- MassimoCorrente := high_val
- else
- MinimoCorrente := math.min(nz(MinimoCorrente, low_val), low_val) // Durante tutti i giorni della settimana (escluso il primo giorno della nuova settimana),
- // aggiorno MinimoCorrente con il minimo tra il minimo finora registrato e il low del giorno corrente,
- // così da memorizzare il minimo assoluto di tutta la settimana in corso.
- MassimoCorrente := math.max(nz(MassimoCorrente, high_val), high_val)
- // Aggiorna giorno precedente
- GiornoPrecedente := data_attuale
- // Ritardo di 5 barre
- LowSettPrecSpostato = MinimoSettPrec[5]
- HighSettPrecSpostato = MassimoSettPrec[5]
- wpl = LowSettPrecSpostato
- wph = HighSettPrecSpostato
- // Media mobile
- media_low = ta.ema(wpl, input_media_W_low)
- media_high = ta.ema(wph, input_media_W_high)
- // Plot
- plot(media_low, title="media_low_smoothed", color=color.green, linewidth=2)
- plot(media_high, title="media_high_smoothed", color=color.green, linewidth=2)
- // >>>>>>>>>>>>>> End Calcolo Minimo E Massimo Settimanale Allineato con Tradestation <<<<<<<<<<<<<<<<<
- // >>>>>>>>>>>>>> Start Detecting Atr Long E Short <<<<<<<<<<<<<<<<<
- // Per il calcolo dell'indicatore è stato richiamato l'indicatore originale e l'indicatore di 1na barra fa per non avere repainting usando l'operatore ternario
- valore_atr_long_origin = ta.atr(in_atr_period_long)
- valore_atr_long1 = valore_atr_long_origin[1]
- valore_atr_long = barstate.isconfirmed ? valore_atr_long_origin : valore_atr_long1 // NO REPAINTING
- atr_per_mult_long = valore_atr_long * in_atr_mult_long
- plot(atr_per_mult_long, title='atr_mult_long')
- valore_atr_short_origin = ta.atr(in_atr_period_short)
- valore_atr_short1 = valore_atr_short_origin[1]
- valore_atr_short = barstate.isconfirmed ? valore_atr_short_origin : valore_atr_short1 // NO REPAINTING
- atr_per_mult_short = valore_atr_short * in_atr_mult_short
- plot(atr_per_mult_short, title='atr_mult_short')
- // >>>>>>>>>>>>>> End Detecting Atr Long E Short <<<<<<<<<<<<<<<<<
- // >>>>>>>>>>>>>> Start Detecting DMI <<<<<<<<<<<<<<<<<
- // Filtro voglio che sia true se il +DI è sopra sia il -DI ed anche dell'ADX //21,3587
- // Per il calcolo dell'indicatore è stato richiamato l'indicatore originale e l'indicatore di 1na barra fa per non avere repainting usando l'operatore ternario
- //[di_pos, di_neg, adx] = ta.dmi(14, 14)
- [di_pos_origin, di_neg_origin, adx] = ta.dmi(14, 14)
- di_pos1 = di_pos_origin[1]
- di_neg1 = di_neg_origin[1]
- di_pos = barstate.isconfirmed ? di_pos_origin : di_pos1
- di_neg = barstate.isconfirmed ? di_neg_origin : di_neg1
- //dmi_total_green_cross = di_pos > di_neg and di_pos > adx? true : false
- //dmi_total_green_cross = (di_pos - di_neg) > dma_min_diff_input ? true : false
- //dmi_total_green_cross = (di_neg - di_pos) > dmi_min_diff_input ? true : false
- //dmi_total_green_cross_short = (di_neg > adx + dmi_min_diff_input_short) ? true : false
- //dmi_total_green_cross_long = (di_pos > adx + dmi_min_diff_input_long) ? true : false
- //dmi_total_green_cross = (di_pos - di_neg) < dmi_min_diff_input ? true : false
- //plot(dmi_total_green_cross ? 1 : 0, title="dmi_total_green_cross")
- // >>>>>>>>>>>>>> End Detecting DMI <<<<<<<<<<<<<<<<<
- // >>>>>>>>>>>>>> Open - Close Values <<<<<<<<<<<<<<<<<
- open_minus_close = math.abs(open - close)
- plot(open_minus_close, "open_minus_close", color=color.blue)
- // >>>>>>>>>>>>>> Start Entry/Exit Conditions <<<<<<<<<<<<<<<<<
- // // Condizione Entry Long: Crossover chiusura media e media maggiore altra media
- // condEntryLong = ta.crossover(close, media_high) and math.abs(open - close) > valore_atr_long * in_atr_mult_long and close > open and di_pos > dmi_min_diff_input_long and not onlyShort and inDateRange
- // // Condizione Exit Long: Crossunder chiusura media
- // condExitLong = ta.crossunder(close, media_high)
- // // Condizione Entry Short: Crossounder chiusura media e media minore altra media
- // condEntryShort = ta.crossunder(close, media_low) and math.abs(open - close) > valore_atr_short * in_atr_mult_short and close < open and di_neg > dmi_min_diff_input_short and not onlyLong and inDateRange
- // // Condizione Exit Short: Crossover chiusura media
- // condExitShort = ta.crossover(close, media_low)
- // >>>>>>>>>>>>>> End Entry/Exit Conditions <<<<<<<<<<<<<<<<<
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement