Di tutto un pò sul mondo della tecnologia e non solo!
Di tutto un pò sul mondo della tecnologia e non solo!

Crypto_1_Backtester: un software per il backtesting delle cryptovalute.

Strategie: dalla creazione all’esecuzione.

Come premesso, la creazione delle strategie avviene tramite la codifica di indicatori e/o oscillatori presenti nelle librerie Ta-lib e Qtpylib come mostrato nell’esempio seguente.

self.df1[‘rsi’]=ta.RSI(self.df1.close.values,timeperiod=14)
self.df1[‘adx’] = ta.ADX(self.df1[‘high’].values, self.df1[‘low’].values,self.df1[‘close’].values, timeperiod=14)
self.df1[‘PrezzoMed’] = self.df1[‘close’].mean()

Nei file del codice del backtester sono presenti altri esempi. Una maggiore descrizione degli indicatori e oscillatori li trovate alla seguente pagina internet: https://github.com/mrjbq7/ta-lib e https://github.com/ranaroussi/qtpylib.

Esempio (1) di strategia:

self.df1.loc[(((
self.qt.crossed_above(self.df1[‘rsi’], 70)))), ‘Sellsignal’] =-1
self.df1.loc[(((
self.qt.crossed_below(self.df1[‘rsi’], 35)))), ‘Buysignal’] =1

Come si vede nell’esempio di strategia (1) è stato utilizzato l’indicatore RSI. La strategia riassume il seguente comportamento:  si acquista quando il valore di RSI è minore di 35 e si vende quando il valore di RSI risulta maggiore di 70. Per maggiori informazioni vi rimando al seguente articolo: https://www.investopedia.com/articles/active-trading/042114/overbought-or-oversold-use-relative-strength-index-find-out.asp

 Da notare come al “BuySignal” (segnale di acquisto) sia assegnato il valore 1, e come al “SellSignal” (segnale di vendita) sia assegnato il valore -1. Ovviamente, i risultati dipendono sia dalla scelta del timeframe piu adatto per la specifica pair e sia dalla configurazione dello stoploss di cui ho ampiamente parlato nella parte precedente.

Un altro esempio di creazione di una strategia è mostrato nell’esempio seguente.  

Esempio (2) strategia.

self.df1.loc[(((
self.qt.crossed_below(self.df1[‘macd’], self.df1[‘macdsignal’])))),
‘Sellsignal’] =-1
self.df1.loc[(((
self.qt.crossed_above(self.df1[‘macd’], self.df1[‘macdsignal’])))),
‘Buysignal’] =1

In questo esempio ho implementato le linee guida indicate nel seguente articolo: https://commodity.com/technical-analysis/macd/

La strategia prevede l’acquisto dell’asset nel momento in cui il segnale macd passa attraverso il segnale  macdsignal dal basso verso l’alto. Al contrario avviene la vendita, cioè nella situazione in cui il segnale macd passa attraverso il segnale macdsignal dall’altro verso il basso.

Nelle seguenti immagini ho eseguito due simulazioni differenti con la strategia in oggetto attivando lo stoploss statico e con due pair differenti.

Strategia MACD con stoploss statico attivato e timeframe di 5 minuti
Figura 3:
(Esempio di simulazione con strategia dell’esempio 2)

Nella figura 3 trovate una simulazione con lo stoploss statico attivato (ricordate che bisogna disattivare lo stoploss dinamico) e la strategia dell’esempio (2). Lo stoploss statico è mostrato dalla linea di colore marrone e diverge dal prezzo di buy dell’asset per la percentuale definita nel parametro tool.stoploss_1.

Figura 4.
(Esempio di simulazione con l’esempio della strategia 2).

Nell’immagine presente nella figura 4 vediamo come, in una differente pair, è intervenuta la vendita per stoploss statico (marker di colore rosso) nel momento in cui il prezzo dell’asset è sceso sotto il prezzo dell’asset per la quantità in percentuale indicata nella variabile tool.stoploss_statico_1.

Esempio (3) strategia.

self.df1.loc[(((
self.qt.crossed_below(self.df1[‘macd’], self.df1[‘macdsignal’])))),
‘Sellsignal’] =-1
self.df1.loc[(((
self.qt.crossed_above(self.df1[‘macd’], self.df1[‘macdsignal’])) & (self.df1[‘close’] <self.df1[‘PrezzoMed’]))), ‘Buysignal’] =1

Ora, aggiungendo alla parte di buy della strategia esempio (2) la condizione per cui il prezzo dell’asset deve essere inferiore al prezzo medio calcolato si aggiunge un ulteriore grado di complessità alla strategia, come mostrato nell’immagine seguente.

Figura 5.
(Un ulteriore modifica alla strategia 2 nell’azione di buy).

Come si vede nell’immagine 5 l’azione di buy avviene sotto alla linea del prezzo medio come implementato nel codice della strategia. Il risultato è assolutamente differente dalla strategia (2) e può essere migliorato adottando un timeframe differente o indicatore/oscillatori differenti. E’ ovvio che anche stoploss e scelta della pair determinano un risultato diverso.

Esempio (4) strategia.
ETH BTC stoploss dinamico senza limiti
Figura 6.
(Attivazione dello stoploss dinamico senza limiti).

Come si vede dalla figura 6 lo stoploss dinamico esegue automaticamente senza alcun limiti di profitto minimo o di perdita minima le azioni di vendita. Tale comportamento è dettato dalla valore zero attribuito al paramentro:

tool.attivazione_stoploss_dinamico_limiti =0

Ma cosa succederebbe se a tale parametro fosse attribuito il valore uno?

ETH BTC stoploss dinamico con attivazione dei limiti di profitto e di perdita
Figura 7.
(attivazione dei limiti di profitto e di perdita nello stoploss dinamico).

Come si vede nella figura precedente l’attivazione dei limiti comporta un situazione migliore in termini di profitto. L’acquisto viene eseguito nel marker verde e la vendita nel marker rosso in corrispondenza del superamento da parte della formula (ema3) del prezzo dell’asset.

Pagina Precedente | Pagina Seguente

Rating: 5.0/5. From 1 vote.
Please wait...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

undici + diciannove =

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.