Hvis du følger meg på Medium, er du sannsynligvis klar over at jeg er veldig interessert i kryptohandel og maskinlæring. Jeg leste at lineære regresjonskanaler kan være svært effektive i råvarehandel. Fordi Bitcoin og andre kryptovalutaer ikke anses som verdipapirer, kan de fritt omsettes på tradisjonelle aktivamarkeder, så vel som kryptovalutabørser.
Så som vanlig prøvde jeg å gjøre litt research into hva lineære regresjonskanaler er, hvordan de skal brukes og hvordan de kodes. Jeg slo et tomrom. Jeg fant bare noen grunnleggende forklaringer på hva lineære regresjonskanaler er på et høyt nivå, men ikke nok til å faktisk utvikle noe praktisk.
Hva er en lineær regresjonskanal?
På et grunnleggende nivå kan lineære regresjonskanaler identifisere trender og trendretningen. Bruken av standardavvik gir tradere en indikasjon på når markedene blir overkjøpt eller oversolgt i forhold til den langsiktige trenden. Vanligvis vil jeg bruke Moving Average Convergence Divergence (MACD) for å identifisere trender og Relative Strength Index (RSI) for å avgjøre om et marked er overkjøpt eller undersolgt. For en langsiktig trend vil jeg vanligvis bruke "Golden Cross"Og"Death Cross" mønstre. Hvis du ikke er kjent med disse vilkårene, er det når SMA50 er over eller under SMA200. Dette brukes fortsatt mye i institusjoner, men lineære regresjonskanaler kan tilby et alternativ eller bekreftelse.
En lineær regresjonskanal består av tre komponenter:
- Lineær regresjonslinje — En linje som passer best til alle datapunkter av interesse. Hvis du er kjent med maskinlæring, er dette en standard lineær regresjonsmodell med en linje som passer best.
- Øvre kanallinje — En linje som går parallelt med den lineære regresjonslinjen og vanligvis er ett til to standardavvik over den lineære regresjonslinjen. I dette eksemplet har jeg nettopp plottet ett standardavvik ovenfor, men det kan enkelt justeres til to hvis du ønsker det.
- Nedre kanallinje — Denne linjen går parallelt med den lineære regresjonslinjen og er vanligvis ett til to standardavvik under den lineære regresjonslinjen. I dette eksemplet har jeg nettopp plottet ett standardavvik nedenfor, men det kan enkelt justeres til to hvis du ønsker det.
Tolke en lineær regresjonskanal
Ett standardavvik fra "Lineær regresjonslinje” betyr at 68 % av alle prisene er innenfor disse linjene. To standardavvik betyr at 95 % av alle prisene ligger mellom disse linjene. Jeg bruker ett standardavvik.
- Kjøp Signal — Prisen synker under «Nedre kanallinje" og en fortsettelse av en trend forventes.
- Selg signal — Prisen stiger over «Øvre kanallinje" og en fortsettelse av en trend forventes.
Hvis prisen tilbringer en betydelig mengde tid utenfor kanalen, er det en tidlig advarsel at a betydelig trendvending kan være nær.
Python-kodegjennomgang
Det første trinnet er å laste de nødvendige bibliotekene og sette opp miljøet ditt.
importer datatid
importforespørsler
importtidimporter nummen som np
importer pandaer som pd
importere seaborn som sns
importer matplotlib.pyplot som pltfra sklearn import datasett, linear_model
fra sklearn.metrics importer mean_squared_error, r2_score%matplotlib inline
Du trenger noen data å jobbe med. Jeg opprettet en funksjon for å hente markedsdata fra Coinbase Pro-børsen og returnere en Pandas-dataramme.
def get_market_data(marked, granularitet):
resp = requests.get('https://api.pro.coinbase.com/products/' + market + '/candles?granularity=' + str(granularity))
if resp.status_code != 200:
raise Exception(format(resp.json()['melding']))
ellers:
df = pd.DataFrame(resp.json(), columns=[ 'epoch', 'low', 'high', 'open', 'close', 'volum' ])
df = df.iloc[::-1].reset_index()
retur df
Henter de siste 300 dagene med Bitcoin-data fra Coinbase Pro-børsen.
df = get_market_data('BTC-GBP', 86400)
Tar en topp på de første 5 radene med dataene våre...
df.head ()
Visualisere dataene våre med et Seaborn-regresjonsplott.
sns.set (font_scale = 1.5)
plt.figur (figsize = (12,10))
sns.regplot(x=df.index, y='close', data=df, ci=None, color='r')
La oss nå legge til vår lineære regresjonskanal med ett standardavvik.
sns.set (font_scale = 1.5)
plt.figur (figsize = (12,10))
rp = sns.regplot(x=df.index, y='close', data=df, ci=None, color='r')y_rp = rp.get_lines()[0].get_ydata()
x_rp = rp.get_lines()[0].get_xdata()
sns.lineplot(x=x_rp, y=y_rp + np.std(y_rp), color='b')
sns.lineplot(x=x_rp, y=y_rp - np.std(y_rp), color='b')tsidx = pd.DatetimeIndex(pd.to_datetime(df['epoch'], unit='s'), dtype='datetime64[ns]', freq='D')
rp.set_xticklabels(tsidx, rotasjon=45)plt.xlabel('')
plt.ylabel('Pris')
plt.show ()
Hva forteller dette oss?
Som du kan se, og du er sannsynligvis klar over, har Bitcoin og kryptomarkedene krasjet igjen. Denne gangen var det fordi Elon sa at Tesla ikke kommer til å akseptere Bitcoin som betalingsmetode på grunn av ikke å være miljøvennlig! Jeg mener det ikke er den eneste årsaken til krasjet, men det er dette som satte ting i gang. Ganske uansvarlig, men det er bare slik ting går.
Basert på grafen ovenfor med prisene som stenger under "Nedre kanallinje" dette kan være et kjøpssignal eller et tidlig varsel om en betydelig trendvending. Det kommer helt an på hvor lenge prisene holder seg under linjen. Det ser ikke fryktelig lovende ut, og jeg tror vi kan gå noen tøffe måneder i møte. Min personlige mening er at det kan bli mye verre før det blir bedre. Trenden vil fortsette nedover i kanskje 6 måneder eller så, og så får vi se neste okseløp.
Det er ikke alt ille...
Jeg har handlet krypto i over fire år nå og vært gjennom minst tre av fire av disse krasjene allerede. Det ser ut til å være en årlig hendelse etter et langt okseløp. Hver gang spretter den enda høyere tilbake. Jeg er overbevist om at kryptovalutaer og kryptohandel er kommet for å bli. Vi må bare være tålmodige og takle stormen. Det er imidlertid noen alt-mynter som gjør det veldig bra til tross for krasjet. Cardano (ADA) for eksempel er et veldig solid alternativ og under £1 nå. Dette er definitivt en å holde for fremtiden, da den potensielt kan bli en av de beste valutaene.
Den gratis open source kryptohandelsboten ("PyCryptoBot”) som jeg utviklet gjør det fortsatt bra til tross for markedsforholdene. Jeg setter opp en Telegram-gruppechat som er veldig aktiv med over 300 personer som chatter om boten og strategiene. Du er velkommen til å være med og engasjere deg.
Invitasjonslenken til hovedgruppechatten er:
https://t.me/joinchat/09hYKfelbRY2MDNk
Google Colab
Jeg har allerede oppgitt all koden for deg ovenfor, men hvis du vil ha kildekoden, har jeg laget en notatbok som enkelt kan kjøres i Google Colab.
- Gå til "https://colab.research.google.com"
- Klikk på GitHub-fanen
- For "Skriv inn en GitHub URL eller søk etter organisasjon eller bruker" skriv inn "https://github.com/whittlem/colabnotebooks" og trykk enter
- Oppbevaringssted: "whittlem/colabnotatbøker", gren: "main"
- Klikk på "LinearRegressionChannel.ipynp"
- Klikk på "Runtime" fra menyen, deretter "Kjør alt"
Lykke til og jeg håper du har funnet dette nyttig.
- '
- "
- aktiv
- ADA
- Alle
- eiendel
- BEST
- Bitcoin
- Bot
- okseløp
- kjøpe
- Cardano
- Cardano (ADA)
- kanaler
- kode
- coinbase
- Coinbase Pro
- Mynter
- handelsvare
- fortsette
- Crash
- krypto
- Crypto Markets
- kryptohandel
- cryptocurrency
- Cryptocurrency-utvekslinger
- valutaer
- CZ
- dato
- utvikle
- Tidlig
- Effektiv
- Miljø
- utveksling
- Børser
- Firm
- Først
- passer
- følge
- Gratis
- FS
- funksjon
- framtid
- GitHub
- Gruppe
- GV
- her.
- Høy
- hold
- Hvordan
- Hvordan
- HTTPS
- identifisere
- indeks
- institusjoner
- interesse
- involvert
- IP
- IT
- bli medlem
- læring
- Nivå
- LG
- linje
- LINK
- laste
- Lang
- maskinlæring
- marked
- Markets
- medium
- Metrics
- modell
- måneder
- tilby
- åpen
- Mening
- Alternativ
- Annen
- betaling
- Ansatte
- trykk
- pris
- pro
- hever
- forskning
- Kjør
- Søk
- Verdipapirer
- sett
- So
- opphold
- Storm
- Telegram
- Tesla
- Kilden
- tid
- topp
- Traders
- trading
- Trender
- us
- volum
- innenfor
- Arbeid
- år