Il cosidetto "Supertrend" L'indicatore sta generando molto interesse ultimamente, ma è redditizio fare trading? Andiamo al nocciolo della questione.
La strategia e gli indicatori di supertrend hanno acquisito maggiore attenzione su siti di grafici come Tradingview.com, qui il principale indicatore delle biblioteche pubbliche di questo genere conta 23,332 "follower".
E i video blog hanno adottato questo indicatore, ad esempio "Part Time Larry" che ha recentemente adottato ha costruito un bot commerciale utilizzando questo trigger.
L'indicatore stesso è piuttosto attraente se rappresentato graficamente...
La matematica conta.
Ma è redditizio? Per prima cosa la matematica coinvolta non è banale.
Il poinLo scopo di questo articolo non è rivisitare i calcoli ma piuttosto testarne la redditività nel trading quantitativo di criptovalute. Procediamo?
Il diavolo è nei dettagli.
Un punto piccolo ma cruciale prima di continuare, nota che questo indicatore è a “indicatore di tendenza”, questo è molto importante per 2 motivi:
- circa l'80% delle volte lo sono i mercati NON trend
- i profitti di una strategia di tendenza devono essere rispetto ai profitti derivanti semplicemente dal detenere (o vendere allo scoperto) lo stesso asset. Questo è molto diverso dal giudicare i profitti stessi (cioè rimanere in contanti).
Contorno
In questo pezzo faremo quanto segue:
- Prendi in prestito del codice Python per la matematica dell'indicatore Supertrend (perché reinventare la ruota)
- Raccogli i dati storici di Binance
- Eseguire il backtest della strategia rispetto a un exchange (ad esempio "BTCUSDT") per un periodo di tempo e rivedere i risultati
- Parametri dell'indicatore di differenza di forza bruta per vedere cosa "si adatta" in modo redditizio
Configurazione di Binance
Come al solito, per lavorare con l'API Binance dovrai configurare un account Binance (gratuito) e ottenere le chiavi API. Ci sono istruzioni sul loro sito su come farlo.
Successivamente creerai un file config.py nella directory con il codice crypto quant. Questo verrà utilizzato per importare la chiave e il segreto.
API_KEY = 'la tua chiave API'
API_SECRET = 'il tuo segreto API'
Matematica del supertrend
L'indicatore Supertrend utilizza i calcoli True Range (TR) e Average True Range (ATR):
- Gamma reale (TR): Il True Range di un asset viene calcolato prendendo i valori maggiori di tre differenze di prezzo che sono: massimo del mercato meno il minimo del mercato, massimo del mercato meno la chiusura precedente del mercato, chiusura precedente del mercato meno il minimo del mercato.
- Valore medio della corsa reale (ATR): L'intervallo reale medio è una media livellata dei valori dell'intervallo reale calcolati in precedenza per un numero di periodi specificato.
Per un approfondimento sui calcoli del Supertrend vedere qui.
Utilizzeremo una serie semplificata di calcoli per gentile concessione di "Part Time Larry" e dei suoi video blog su questo argomento. Qui entra nei dettagli sui calcoli, quindi non c'è bisogno di ripetere tutto questo. Guarda il suo video.
Questi video richiedono molto lavoro e tanto di cappello a questi autori per aver pubblicato contenuti su questi argomenti.
Per favore, compragli un ☕, o un whisky!
Ecco le nostre importazioni e la configurazione del client. Niente di speciale qui.
importa ccxt
importa configurazione
programma di importazione
importare i panda come pd
pd.set_option('display.max_rows', Nessuno)avvisi di importazione
warnings.filterwarnings ('ignore')importa numpy come np
da datetime import datetime
tempo di importazione
dal client di importazione binance.client
importazione casualecliente = Cliente(config.API_KEY, config.API_SECRET)
Avremo bisogno di dati, utilizziamo i dati tick di 15 minuti per Etherium (ETH) in un periodo di tendenza all'inizio del 2021
candelieri = client.get_historical_klines(“ETHUSDT”, Client.KLINE_INTERVAL_15MINUTE, “22 gennaio 2021”, “21 febbraio 2021”)
# taglia ogni candela
per la candela nei candelieri:
del candela[-6:] # servono solo le prime colonne
Vediamo i nostri dati in un dataframe:
Backtesting!
Ora creeremo il codice di backtest. Il doppio rientro è un segnaposto che rivisiteremo più avanti.
La strategia è semplice: quando l'indicatore Supertrend passa da “Vendi” a “Compra”, prendiamo una posizione lunga IF il valore di chiusura più recente è superiore al periodo 200 EMA (Media Mobile Esponenziale). Ecco l'essenza del trigger di acquisto:
se non df['in_uptrend'][previous_row_index] e df['in_uptrend'][last_row_index]:
print("*cambiato in trend rialzista")
se non in_posizione:
if df['close'][last_row_index] < df['ema200'][last_row_index]:
print("sotto EMA")
return # non acquistare quiprint('ema200', df['ema200'][last_row_index])
print("ACQUISTA!", df['timestamp'][last_row_index], df['close'][last_row_index])
La strategia vende quando il prezzo di chiusura scende al di sotto dell'EMA.
if df['chiudi'][indice_riga_precedente] < df['ema200'][previous_row_index]: # chiuso sotto ema
se in_posizione:
print('ema200', df['ema200'][previous_row_index])
print(" VENDI!", df['timestamp'][last_row_index], df['close'][last_row_index])
Il resto del codice serve principalmente a tenere traccia del nostro registro delle transazioni.
Mercati di tendenza
Quindi all’inizio del 2021 il mercato aveva un forte trend per ETH…
Ecco i nostri risultati del backtest Supertrend per questo periodo con parametri predefiniti per l'indicatore Supertrend:
*cambiato in trend rialzista
ema200 1336.3416667585598
BUY! 2021-01-26 23:00:00 1365.57
ema200 1337.542530741581
SELL! 2021-01-27 01:15:00 1327.7
*cambiato in trend rialzista
ema200 1293.9199247860201
BUY! 2021-01-28 13:45:00 1343.0
ema200 1314.384770497579
SELL! 2021-01-29 03:45:00 1320.82
*cambiato in trend rialzista
ema200 1329.4749563894045
BUY! 2021-02-01 21:45:00 1350.12
ema200 1576.8033662124164
SELL! 2021-02-04 15:15:00 1566.06
*cambiato in trend rialzista
ema200 1615.0917589663093
BUY! 2021-02-05 13:30:00 1685.92
ema200 1657.0474199540897
SELL! 2021-02-06 05:15:00 1662.5
*cambiato in trend rialzista
ema200 1622.6337214761083
BUY! 2021-02-08 06:15:00 1634.53
ema200 1748.050539834764
SELL! 2021-02-10 12:45:00 1745.0
*cambiato in trend rialzista
ema200 1740.2712583651808
BUY! 2021-02-11 10:30:00 1783.51
ema200 1762.7249257898284
SELL! 2021-02-12 04:15:00 1750.14
*cambiato in trend rialzista
ema200 1790.4360684700155
BUY! 2021-02-15 12:45:00 1805.14
ema200 1790.2882902636748
SELL! 2021-02-15 12:45:00 1805.14
*cambiato in trend rialzista
ema200 1781.059323775294
BUY! 2021-02-17 09:30:00 1817.25
ema200 1961.7364660509322
SELL! 2021-02-20 22:15:00 1931.86
Periodo: 20 braccio: 6
profitto % 2.733345624999929
Profitto del 2.7% in un mese, fantastico! No, terribile. Non possiamo paragonarlo ad una non-posizione durante questo periodo, dovrebbe invece essere paragonato all'essere sul mercato e al mantenere una posizione long.
Fai attenzione a come valuti i risultati del backtesting dei profitti.
In effetti, detenere ETH durante questo periodo avrebbe comportato un profitto [cartaceo] superiore all’80%.
Mercati non di tendenza
E che dire di un periodo non di tendenza? Questo è il caso circa l’80% delle volte.
I mercati hanno un trend solo nel 20% circa dei casi. Il restante 80% delle volte si "muove lateralmente".
In tal caso i profitti trattenuti sarebbero trascurabili (o negativi), come si è comportata la strategia Supertrend in questo caso? È molto facile per noi vederlo semplicemente modificando il periodo di data del nostro backtest.
Abbiamo avuto profitti negativi in questo periodo non di tendenza con i parametri predefiniti:
Periodo: 20 braccio: 6
profitto% -0.49146142499997947
In effetti giugno è stato un classico periodo non di trend per ETH, infatti la strategia Supertrend ha sovraperformato (commissioni incluse) una perdita di tenuta ma non di molto e questa è pur sempre una perdita netta!
Una perdita netta è pur sempre una perdita netta! Sarebbe stato meglio essere FUORI dal mercato.
Una strategia di trading è utile solo se significativamente migliore rispetto a rimanere dentro o fuori dal mercato durante il periodo in questione.
Parametri di forzatura bruta
Ma è improbabile che i parametri predefiniti siano ideali qui, come abbiamo fatto in precedenza la nostra precedente esplorazione quantitativa delle criptovalute andiamo forza bruta il nostro modo di parametri più redditizi per il nostro indicatore Supertrend.
Devi solo modificare l'intestazione del nostro codice di backtesting:
verboso = falsoper p nell'intervallo(20,40):
per braccio in range(4, 9):
#se è vero:
# se è vero:
#p = 20
# braccio = 6
Ora vedremo i parametri più redditizi per questo periodo non di tendenza e potremo confrontarli con l'entrata (o l'uscita) dal mercato. I parametri del Supertrend sono periodo (spunta per guardare indietro) e atr_moltiplicatore (un amplificatore, vedere i dettagli matematici sopra).
Essere FUORI dal mercato ETH a giugno ha fruttato $ 0, mentre essere DENTRO ha fruttato circa $ 0.
I migliori parametri Supertend per questo periodo:
Periodo: 21 braccio: 5
in posizione Vero 2117.18 saldo $ 10140.623120000004
profitto % 1.4062312000000383
Delle 100 combinazioni di forza bruta (20..40)x(4..9) solo il 20% di esse era redditizio, quindi l'80% di tutte le combinazioni possibili (entro questi intervalli pratici) non sarebbe stato migliore delle nostre posizioni alternative (dentro o fuori).
Strategia durante il mercato con tendenza al ribasso
Che dire di un periodo di tendenza al ribasso del mercato? 2 settimane nel maggio 2021 sono state brutali per ETH, come mostrato di seguito:
La nostra strategia Supertrend ha sovraperformato il mercato in questo periodo, registrando comunque guadagni marginali con il 13% dei valori dei parametri che hanno prodotto profitti.
Periodo: 36 braccio: 4
profitto % 0.6344214999999894
Ciò è chiaramente superiore all'essere NEL mercato durante questo periodo (una perdita di circa il 60%) ma a lungo termine ha avuto prestazioni relativamente scarse.
Conclusione
Esegui tu stesso i backtest e prova diverse criptovalute. Vedi se riesci a trovare una strategia di trading affidabile utilizzando l'indicatore Supertrend. Di per sé è un po' meno di "Super", giusto?
- '
- "
- 100
- 7
- 9
- Il mio account
- Tutti
- api
- ARM
- attività
- gli autori
- Backtesting
- MIGLIORE
- binance
- blog
- Acquistare
- Contanti
- chiuso
- codice
- Monete
- contenuto
- continua
- crypto
- CZ
- dati
- dettaglio
- DID
- Presto
- EMA
- ETH
- EU
- EV
- exchange
- Nome
- Gratis
- GM
- grande
- qui
- Alta
- tenere
- Come
- Tutorial
- hr
- HTTPS
- ia
- Compreso
- interesse
- coinvolto
- IP
- IT
- Le
- Tasti
- principale
- Ledger
- LG
- Biblioteca
- Lunghi
- LP
- Rappresentanza
- Mercati
- matematica
- Matters
- medie
- ML
- MS
- MT
- rete
- Altro
- Carta
- prezzo
- Profitto
- redditività
- la percezione
- editoriale
- gamma
- motivi
- REST
- Risultati
- recensioni
- set
- cortocircuito
- Un'espansione
- Siti
- piccole
- So
- Strategia
- test
- tempo
- Argomenti
- pista
- commercio
- Trading
- trend
- us
- APPREZZIAMO
- Video
- Video
- W
- Orologio
- Ruota
- OMS
- entro
- Lavora
- youtube