Den såkaldte "supertrend” indikator har genereret stor interesse på det seneste, men er det rentabelt at handle med? Lad os komme til bunds i dette.
Supertrend strategi og indikatorer er vokset i opmærksomhed på kortlægningssider som f.eks tradingview.com, her har den førende folkebiblioteksindikator for denne genre 23,332 'følgere'.
Og videoblogs har taget denne indikator, for eksempel "Deltid Larry", der for nylig bygget en handelsbot ved at bruge denne udløser.
Indikatoren i sig selv er ret sexet, når den er tegnet...
Matematik betyder noget.
Men er det rentabelt? For det første er den involverede matematik ikke-triviel.
Poi'ennt af dette stykke er ikke gensynet med matematikken, men snarere for at teste dets rentabilitet i kryptokvanthandel. Skal vi fortsætte?
Djævelen er i detaljerne.
Et lille, men afgørende punkt, før vi fortsætter, bemærk, at denne indikator er en "Trendfølgeindikator", dette er meget vigtigt af 2 grunde:
- omkring 80 % af tiden markeder er IKKE trend
- overskuddet af en trendstrategi skal være sammenlignet med overskuddet ved blot at holde (eller shorte) det samme aktiv. Dette er meget forskelligt fra at bedømme overskud selv (dvs. forblive i kontanter).
Outline
I dette stykke vil vi gøre følgende:
- Lån noget Python-kode til Supertrend-indikatormatematikken (hvorfor genopfinde hjulet)
- Indsaml historiske Binance-data
- Test strategien tilbage mod en børs (f.eks. 'BTCUSDT') over en periode og gennemgå resultaterne
- Brute-force forskelsindikatorparametre for at se, hvad der 'passer' rentabelt
Binance opsætning
Som sædvanligt for at arbejde med Binance API skal du oprette en Binance-konto (gratis) og få API-nøgler. Der er anvisninger på deres side om, hvordan man gør dette.
Dernæst skal du oprette en config.py i mappen med kryptokvantkoden. Dette vil blive brugt til at importere din nøgle og hemmelighed.
API_KEY = 'din API-nøgle'
API_SECRET = 'din API-hemmelighed'
Supertrend matematik
Supertrend-indikatoren bruger beregningerne True Range (TR) og Average True Range (ATR):
- Sandt område (TR): Et sandt interval for et aktiv beregnes ved at tage den største værdi af tre prisforskelle, som er: Markedshøj minus markør lav, markedshøj minus tidligere markedslukning, tidligere markedslukning minus markedslav.
- Gennemsnitlig sand rance (ATR): Gennemsnitligt sandt område er et udjævnet gennemsnit af de tidligere beregnede værdier for sandt område for et specificeret antal perioder.
For et dybt dyk om Supertrend-beregningerne, se link..
Vi vil bruge et forenklet sæt beregninger fra 'Deltid Larry' og hans video blog om dette emne. Han går i detaljer om matematikken her, så det er ikke nødvendigt at gentage alt det. Se hans video.
Disse videoer er en masse arbejde, og hatten er af for disse forfattere for at udgive indhold om disse emner.
Køb ham en ☕, eller en whisky!
Her er vores import og kundeopsætning. Ikke noget særligt her.
import ccxt
import config
import tidsplan
importer pandaer som pd
pd.set_option('display.max_rows', Ingen)importadvarsler
warnings.filterwarnings ('ignorere')importer numpy som np
fra datetime import datetime
importtid
fra binance.client import Client
Import tilfældigtklient = Client(config.API_KEY, config.API_SECRET)
Vi skal bruge data, lad os bruge 15-minutters krydsdata for Etherium (ETH) i en trendperiode i begyndelsen af 2021
lysestager = client.get_historical_klines(“ETHUSDT”, Client.KLINE_INTERVAL_15MINUTE, “22 Jan, 2021”, “21 Feb, 2021”)
# trim hvert stearinlys
for lys i lysestager:
del candle[-6:] # behøver kun de første par kolonner
Lad os se vores data i en dataramme:
Backtesting!
Nu opretter vi backtest-koden. Den dobbelte indrykning er en pladsholder, vi vil se igen senere.
Strategien er enkel: Når Supertrend-indikatoren vender fra "Sælg" til "Køb", tager vi en lang position IF den seneste lukkeværdi er over 200-perioden EMA (Eksponentielt glidende gennemsnit) værdi. Her er essensen af købstriggeren:
hvis ikke df['in_uptrend'][previous_row_index] og df['in_uptrend'][last_row_index]:
print("*ændret til optrend")
hvis ikke i_position:
if df['close'][last_row_index] < df['ema200'][last_row_index]:
print("under EMA")
retur # køb ikke herprint(' ema200', df['ema200'][sidste_række_indeks])
print("KØB!", df['tidsstempel'][sidste_rækkeindeks], df['luk'][sidste_rækkeindeks])
Strategien sælger, når nærkursen falder under EMA.
if df['close'][previous_row_index] < df['ema200'][previous_row_index]: # lukket under ema
hvis i_position:
print(' ema200', df['ema200'][previous_row_index])
print(“SÆLG!”, df['tidsstempel'][sidste_rækkeindeks], df['luk'][sidste_rækkeindeks])
Resten af koden er mest for at holde styr på vores handelsreskontro.
Trendende markeder
Så i begyndelsen af 2021 trendede markedet stærkt for ETH...
Her er vores Supertrend-backtest-resultater for denne periode med standardparametre for Supertrend-indikatoren:
*ændret til optrend
ema200 1336.3416667585598
BUY! 2021-01-26 23:00:00 1365.57
ema200 1337.542530741581
SELL! 2021-01-27 01:15:00 1327.7
*ændret til optrend
ema200 1293.9199247860201
BUY! 2021-01-28 13:45:00 1343.0
ema200 1314.384770497579
SELL! 2021-01-29 03:45:00 1320.82
*ændret til optrend
ema200 1329.4749563894045
BUY! 2021-02-01 21:45:00 1350.12
ema200 1576.8033662124164
SELL! 2021-02-04 15:15:00 1566.06
*ændret til optrend
ema200 1615.0917589663093
BUY! 2021-02-05 13:30:00 1685.92
ema200 1657.0474199540897
SELL! 2021-02-06 05:15:00 1662.5
*ændret til optrend
ema200 1622.6337214761083
BUY! 2021-02-08 06:15:00 1634.53
ema200 1748.050539834764
SELL! 2021-02-10 12:45:00 1745.0
*ændret til optrend
ema200 1740.2712583651808
BUY! 2021-02-11 10:30:00 1783.51
ema200 1762.7249257898284
SELL! 2021-02-12 04:15:00 1750.14
*ændret til optrend
ema200 1790.4360684700155
BUY! 2021-02-15 12:45:00 1805.14
ema200 1790.2882902636748
SELL! 2021-02-15 12:45:00 1805.14
*ændret til optrend
ema200 1781.059323775294
BUY! 2021-02-17 09:30:00 1817.25
ema200 1961.7364660509322
SELL! 2021-02-20 22:15:00 1931.86
Periode: 20 arm: 6
overskud % 2.733345624999929
2.7 % overskud på en måned, fantastisk! Nej, forfærdeligt. Vi kan ikke sammenligne dette med en ikke-position i denne periode, i stedet skal det sammenlignes med at være i markedet og holde længe.
Vær forsigtig med, hvordan du evaluerer resultater fra backtesting.
At have haft ETH i denne periode ville faktisk have resulteret i >80 % [papir] fortjeneste
Ikke-trendende markeder
Så hvad med en ikke-trending periode? Dette er tilfældet omkring 80 % af tiden.
Markederne trender kun ~20% af tiden. De øvrige 80 % af tiden 'bevæger de sig sidelæns'.
I så fald ville tilbageholdelsesgevinsten være ubetydelig (eller negativ), hvordan klarede Supertrend-strategien sig der? Meget let for os at se det ved blot at ændre datoperioden for vores backtest.
Vi havde negative overskud i denne ikke-trend-periode med standardparametrene:
Periode: 20 arm: 6
overskud % -0.49146142499997947
Juni var faktisk en klassisk ikke-trend-periode for ETH, faktisk overgik Supertrend-strategien (inklusive provisioner) et kapitaltab, men ikke meget, og dette er stadig et nettotab!
Et nettotab er stadig et nettotab! Det ville have været bedre at være ude af markedet.
En handelsstrategi er kun umagen værd, hvis den er væsentligt bedre end at blive i eller ude af markedet i den pågældende periode.
Brute forcering parametre
Men standardparametrene er usandsynligt ideelle her, som vi gjorde i vores tidligere crypto quant-udforskning lad os brute-force vores vej til mere profitable parametre for vores Supertrend-indikator.
Du behøver kun at ændre overskriften på vores backtesting-kode:
verbose = Falskfor p i området(20,40):
for arm inden for rækkevidde(4, 9):
#hvis sandt:
# hvis det er sandt:
# p = 20
# arm = 6
Nu vil vi se de mest profitable parametre for denne ikke-trending periode, og vi kan sammenligne disse med at være i (eller ude af) markedet. Supertrend-parametrene er periode (mærker for at se tilbage) og atr_multiplikator (en forstærker, se matematiske detaljer ovenfor).
At være ude af ETH-markedet i juni gav $0, og at være IN gav det også cirka $0.
De bedste Supertend-parametre for denne periode:
Periode: 21 arm: 5
i position Sand 2117.18 saldo $ 10140.623120000004
overskud % 1.4062312000000383
Af de 100 brute-force kombinationer (20..40)x(4..9) var kun 20% af dem rentable, så 80% af alle mulige kombinationer (inden for disse praktiske områder) ville ikke have været bedre end vores alternative positioner (ind eller ud).
Strategi under DOWN trendmarked
Hvad med i en nedadgående periode på markedet? 2 uger i maj 2021 var brutale for ETH, som vist nedenfor:
Vores Supertrend-strategi klarede sig bedre end markedet i denne periode, men havde stadig marginale gevinster med 13 % af parameterværdierne, der gav overskud.
Periode: 36 arm: 4
overskud % 0.6344214999999894
Dette er klart bedre end at være på markedet i denne periode (et tab på ~60%!), men på længere sigt klarede det sig relativt dårligt.
Konklusion
Kør backtestene for dig selv, og prøv forskellige kryptomønter. Se om du kan finde en pålidelig handelsstrategi ved hjælp af Supertrend-indikatoren. I sig selv er det noget mindre end 'Super', ikke?
- '
- "
- 100
- 7
- 9
- Konto
- Alle
- api
- ARM
- aktiv
- forfattere
- Backtesting
- BEDSTE
- binance
- blogs
- købe
- Kontanter
- lukket
- kode
- Mønter
- indhold
- fortsæt
- krypto
- CZ
- data
- detail
- DID
- Tidligt
- EMA
- ETH
- EU
- EV
- udveksling
- Fornavn
- Gratis
- GM
- stor
- link.
- Høj
- hold
- Hvordan
- How To
- hr
- HTTPS
- ia
- Herunder
- interesse
- involverede
- IP
- IT
- Nøgle
- nøgler
- førende
- Ledger
- LG
- Bibliotek
- Lang
- LP
- Marked
- Markeder
- matematik
- Matters
- medium
- ML
- MS
- MT
- netto
- Andet
- Papir
- pris
- Profit
- rentabilitet
- offentlige
- Publicering
- rækkevidde
- årsager
- REST
- Resultater
- gennemgå
- sæt
- shorting
- Simpelt
- Websteder
- lille
- So
- Strategi
- prøve
- tid
- Emner
- spor
- handle
- Trading
- trend
- us
- værdi
- video
- Videoer
- W
- Ur
- Hjul
- WHO
- inden for
- Arbejde
- youtube