Input di default per una strategia con Tradingview

Input di default per una strategia con Tradingview

In questo articolo descriviamo il codice per definire gli input di default per una strategia con Tradingview, da usare in nuovi progetti/backtest di trading algoritmico. Man mano che sviluppiamo più script, ci sono caratteristiche / funzioni che aggiungiamo più e più volte. Ci sono alcune funzioni che vogliamo in tutte le strategie che sviluppiamo, sia per la ricerca (come testare l’effetto di vari stop) sia per limitare la strategia in qualche modo (come definire un intervallo di date).

Questo articolo fa parte della serie di tutoria relativi a Tradingview disponibili su DataTrading.info

Input di default per una strategia con Tradingview

Di seguito un codice di esempio per il mercato Forex e Crypto

				
					//@version=3
strategy("Default Inputs for Strategy", overlay=false)

// Creare input generici per la strategia
dir_inp = input(defval="Both", title='Trade Direction', options=["Long Only","Short Only","Both"])
st_yr_inp = input(defval=2017, title='Backtest Start Year', type=integer)
st_mn_inp = input(defval=01, title='Backtest Start Month', type=integer)
st_dy_inp = input(defval=01, title='Backtest Start Day', type=integer)
en_yr_inp = input(defval=2025, title='Backtest End Year', type=integer)
en_mn_inp = input(defval=01, title='Backtest End Month', type=integer)
en_dy_inp = input(defval=01, title='Backtest End Day', type=integer)
 
// Tipi di Stop predefiniti
fstp = input(defval=true, title="Fixed Perc stop")
fper = input(defval=0.1, title='Percentage for fixed stop', type=float)
atsp = input(defval=false, title="ATR Based stop")
atrl = input(defval=7, title='ATR Length for stop')
atrm = input(defval=1, title='ATR Multiplier for stop')
 
// Sessioni
asa_inp = input(defval=true, title="Trade the Asian Session")
eur_inp = input(defval=true, title="Trade the European Session")
usa_inp = input(defval=true, title="Trade the US session")
ses_cls = input(defval=true, title="End of Session Close Out?")
 
// Orario di inizio e fine delle sessioni Start / End times (In exchange TZ = UTC-5)    
asa_ses = "2200-0800" 
eur_ses = "0700-1700" 
usa_ses = "01300-2200"  
 
in_asa = time(period, asa_ses)
in_eur = time(period, eur_ses)
in_usa = time(period, usa_ses)
 
// Logica di Long / Short
dir = dir_inp == "Both" ? strategy.direction.all : 
  dir_inp == "Short Only" ? strategy.direction.short :
  strategy.direction.long
strategy.risk.allow_entry_in(dir)
 
// Imposto le date di inizio e fine per il backtest
start = timestamp(st_yr_inp, st_mn_inp, st_dy_inp,00,00)
end = timestamp(en_yr_inp, en_mn_inp, en_dy_inp,00,00)
 
// Controllo se siamo nella sessione desiderata
can_trade = asa_inp and not na(in_asa) ? true :
  eur_inp and not na(in_eur) ? true :
  usa_inp and not na(in_usa) ? true :
  false
  
// calcolo atr per lo stop
atr = atr(atrl)
atr_stp_dst = atr * atrm
 
// --------------------------------------------------------- //
//                                                           //
//                  INSERIRE IL CODIDEDE                     //
//                  DELLA STRATEGIA                          //
//                                                           //
// --------------------------------------------------------- //
 
long_condition = false 
short_condition = false
 
if (long_condition)
    strategy.entry("Long Entry",  strategy.long)
    if strategy.position_size <= 0 
        if atsp
            atr_stop = open  - atr_stp_dst
            strategy.exit('ATR Fixed Short Stop', "Long Entry", stop=atr_stop)
        if fstp
            stop = open - (open * fper)
            strategy.exit('Perc Fixed Long Stop Exit', "Long Entry", stop=stop)
 
if (short_condition)
    strategy.entry("Short Entry",strategy.short)
    if strategy.position_size >= 0
        if atsp
            atr_stop = open  + atr_stp_dst
            strategy.exit('ATR Fixed Short Stop Exit', "Short Entry", stop=atr_stop)
        if fstp
            stop = open + (open * fper)
            strategy.exit('Perc Fixed Short Stop Exit', "Short Entry", stop=stop)
 
 
strategy.close_all(when=not can_trade and ses_cls)
 
// Grafici per il Testing e Debug 
//plot(can_trade ? 1 : 0, color=purple, linewidth=2)
//plot(na(in_asa) ? 0 : 1, color=red)
//plot(na(in_eur) ? 0 : 1, color=blue)
//plot(na(in_usa) ? 0 : 1, color=green)
				
			

Commento del codice

Dopo aver caricato lo script e aggiunto al grafico per verificare gli input di default per una strategia con Tradingview, vediamo che ci sono parametri per:

  1. Direzione dei trade: possiamo limitare la strategia per andare solo long, solo short o entrambe le direzioni. Da notare che quando selezioniamo “Only Long” abbiamo ancora i segnali Short sul grafico. Tuttavia, sono usati per chiudere una posizione anziché invertirla. Questo è il comportamento predefinito per le strategie. Lo stesso vale per “Only Short”.
  2. Intervalli di date: possiamo isolare il backtesting per specifici periodi di tempo come i mercati rialzisti o ribassisti.
  3. Sessioni: possiamo testare e fare ricerche all’interno di specifiche sessioni di mercato, in modo da verificare le prestazioni della strategia a seconda della sessione in cui viene applicata.
  4. Alcuni esempi di stop loss: non è un elenco esaustivo ma dovrebbe essere sufficiente per fornire qualche spunto per diversi tipi di stop che possiamo sperimentare.

Quando aggiungiamo il codice alla strategia, dobbiamo modificare  i parametri long_conditionshort_condition per soddisfare i nostri criteri. Inoltre è necessario includere anche i controlli per l’orario e la sessione tramite i parametri can_trade, start e end.

La configurazione dei parametri in input

Se copiamo e incolliamo il codice, e quindi lo posizioniamo sui grafici, possiamo vedere gli input come nella seguente immagine.

Trading-Default-Strategy-Inputs

Spero che questo possa aiutare a risparmiare un po’ di tempo sulle operazioni ripetitive quando proviamo una nuova strategia.

Codice completo

In questo articolo abbiamo descritto come gestire gli input di default per una strategia con Tradingview, da usare nel trading algoritmico. Per il codice completo riportato in questo articolo, si può consultare il seguente repository di github:
https://github.com/datatrading-info/TradingView

Scroll to Top