Hvis du følger mig på Medium, er du sikkert klar over, at jeg er meget interesseret i kryptohandel og maskinlæring. Jeg læste, at lineære regressionskanaler kan være meget effektive i råvarehandel. Fordi Bitcoin og andre kryptovalutaer ikke betragtes som værdipapirer, kan de frit handles på traditionelle aktivmarkeder såvel som kryptovalutabørser.
Så som sædvanlig prøvede jeg at lave noget research into hvad lineære regressionskanaler er, hvordan man bruger dem, og hvordan man koder dem. Jeg slog et tomrum. Jeg fandt kun nogle grundlæggende forklaringer på, hvad lineære regressionskanaler er på et højt niveau, men ikke nok til rent faktisk at udvikle noget praktisk.
Hvad er en lineær regressionskanal?
På et grundlæggende niveau kan lineære regressionskanaler identificere trends og trendretningen. Brugen af standardafvigelse giver handlende en indikation af, hvornår markederne bliver overkøbt eller oversolgt i forhold til den langsigtede tendens. Typisk vil jeg bruge Moving Average Convergence Divergence (MACD) til at identificere trends og Relative Strength Index (RSI) for at afgøre, om et marked er overkøbt eller undersolgt. For en længerevarende tendens ville jeg normalt bruge "Golden Cross"Og"Death Cross” mønstre. Hvis du ikke er bekendt med disse vilkår, er det, når SMA50 er over eller under SMA200. Dette bruges stadig meget i institutioner, men lineære regressionskanaler kan tilbyde et alternativ eller bekræftelse.
En lineær regressionskanal består af tre komponenter:
- Lineær regressionslinje — En linje, der bedst passer til alle datapunkter af interesse. Hvis du er fortrolig med maskinlæring, er dette en standard lineær regressionsmodel med en linje, der passer bedst.
- Øvre kanallinje — En linje, der løber parallelt med den lineære regressionslinje og normalt er en til to standardafvigelser over den lineære regressionslinje. I dette eksempel har jeg lige plottet en standardafvigelse ovenfor, men den kan nemt justeres til to, hvis du ønsker det.
- Nedre kanallinje — Denne linje løber parallelt med den lineære regressionslinje og er normalt en til to standardafvigelser under den lineære regressionslinje. I dette eksempel har jeg lige plottet en standardafvigelse nedenfor, men den kan nemt justeres til to, hvis du ønsker det.
Fortolkning af en lineær regressionskanal
En standardafvigelse fra "Lineær regressionslinje” betyder, at 68 % af alle priser er indeholdt i disse linjer. To standardafvigelser betyder, at 95 % af alle priser er indeholdt mellem disse linjer. Jeg bruger en standardafvigelse.
- Køb Signal — Prisen falder under "Nedre kanallinje" og en fortsættelse af en tendens forventes.
- Salgssignal - Prisen stiger over "Øvre kanallinje" og en fortsættelse af en tendens forventes.
Hvis prisen bruger en betydelig mængde tid uden for kanalen, er det en tidlig advarsel, at en betydelige trendvendinger kan være tæt på.
Python kode gennemgang
Det første trin er at indlæse de nødvendige biblioteker og opsætte dit miljø.
import datetime
importanmodninger
importtidimporter numpy som np
importer pandaer som pd
import søfødt som sns
importer matplotlib.pyplot som pltfra sklearn import datasæt, linear_model
fra sklearn.metrics importer mean_squared_error, r2_score%matplotlib inline
Du skal bruge nogle data at arbejde med. Jeg oprettede en funktion til at 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/' + marked + '/candles?granularity=' + str(granularity))
if resp.status_code != 200:
raise Exception(format(resp.json()['meddelelse']))
andet:
df = pd.DataFrame(resp.json(), columns=[ 'epoch', 'low', 'high', 'open', 'close', 'volume' ])
df = df.iloc[::-1].reset_index()
retur df
Henter de sidste 300 dages Bitcoin-data fra Coinbase Pro-børsen.
df = get_market_data('BTC-GBP', 86400)
Tager et højdepunkt på de første 5 rækker af vores data...
df.head ()
Visualisering af vores data med et Seaborn-regressionsplot.
sns.set(font_scale=1.5)
plt.figure(figsize=(12,10))
sns.regplot(x=df.index, y='close', data=df, ci=None, color='r')
Lad os nu tilføje vores lineære regressionskanal med en standardafvigelse.
sns.set(font_scale=1.5)
plt.figure(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, rotation=45)plt.xlabel('')
plt.ylabel('Pris')
plt.show ()
Hvad fortæller det os?
Som du kan se, og du sikkert er klar over, er Bitcoin og kryptomarkederne styrtet igen. Denne gang var det fordi Elon sagde, at Tesla ikke vil acceptere Bitcoin som betalingsmetode på grund af ikke at være miljøvenlig! Jeg mener, det er ikke den eneste årsag til styrtet, men det er det, der satte tingene i gang. Temmelig uansvarligt, men det er bare sådan, tingene går.
Baseret på grafen ovenfor med priserne, der lukker under "Nedre kanallinje" dette kan være et købssignal eller et tidligt varsel om et markant trendskifte. Det hele afhænger virkelig af, hvor længe priserne holder sig under stregen. Det ser ikke frygteligt lovende ud, og jeg tror, vi kan gå nogle hårde måneder i møde. Min personlige mening er, at det kan blive meget værre, før det bliver bedre. Tendensen vil fortsætte nedad i måske 6 måneder eller deromkring, og så vil vi se det næste tyreløb.
Det hele er ikke dårligt...
Jeg har handlet med krypto i over fire år nu og været igennem mindst tre af fire af disse nedbrud allerede. Det ser ud til at være en årlig begivenhed efter et langt tyreløb. Hver gang hopper den endnu højere tilbage. Jeg er overbevist om, at kryptovalutaer og kryptohandel er kommet for at blive. Vi skal bare være tålmodige og klare stormen. Der er dog nogle alt-mønter, som klarer sig rigtig godt trods styrtet. Cardano (ADA) for eksempel er virkelig solid mulighed og under £1 nu. Dette er helt sikkert en til at holde i fremtiden, da det potentielt kan slutte sig til en topvaluta.
Den gratis open source kryptohandelsbot ("PyCryptoBot”), som jeg udviklede, klarer sig stadig godt på trods af markedsforholdene. Jeg opretter en Telegram-gruppechat, som er meget aktiv med over 300 mennesker, der chatter om bot og strategier. Du er velkommen til at være med og engagere dig.
Invitationslinket til hovedgruppechatten er:
https://t.me/joinchat/09hYKfelbRY2MDNk
google colab
Jeg har allerede leveret al koden til dig ovenfor, men hvis du gerne vil have kildekoden, har jeg lavet en notesbog, som nemt kan køres i Google Colab.
- Gå til "https://colab.research.google.com"
- Klik på fanen GitHub
- For "Indtast en GitHub URL eller søg efter organisation eller bruger" skal du indtaste "https://github.com/whittlem/colabnotebooks” og tryk enter
- Depot: "whittlem/colabnotesbøger", Afdeling: "main"
- Klik på "LinearRegressionChannel.ipynp"
- Klik på "Runtime" fra menuen, derefter "Kør alle"
Held og lykke, og jeg håber du har fundet dette nyttigt.
- '
- "
- aktiv
- ADA
- Alle
- aktiv
- BEDSTE
- Bitcoin
- Bot
- Tyreløb
- købe
- Cardano
- Cardano (ADA)
- kanaler
- kode
- coinbase
- Coinbase Pro
- Mønter
- råvare
- fortsæt
- Crash
- krypto
- Crypto Markets
- kryptohandel
- cryptocurrency
- Cryptocurrency Udvekslinger
- valutaer
- CZ
- data
- udvikle
- Tidligt
- Effektiv
- Miljø
- udveksling
- Udvekslinger
- Firm
- Fornavn
- passer
- følger
- Gratis
- FS
- funktion
- fremtiden
- GitHub
- gruppe
- GV
- link.
- Høj
- hold
- Hvordan
- How To
- HTTPS
- identificere
- indeks
- institutioner
- interesse
- involverede
- IP
- IT
- deltage
- læring
- Niveau
- LG
- Line (linje)
- LINK
- belastning
- Lang
- machine learning
- Marked
- Markeder
- medium
- Metrics
- model
- måned
- tilbyde
- åbent
- Udtalelse
- Option
- Andet
- betaling
- Mennesker
- trykke
- pris
- om
- rejser
- forskning
- Kør
- Søg
- Værdipapirer
- sæt
- So
- forblive
- Storm
- Telegram
- Tesla
- The Source
- tid
- top
- Traders
- Trading
- Tendenser
- us
- bind
- inden for
- Arbejde
- år