[Qiita] Erstellen Sie technische Indikatoren für Bitcoin mithilfe von TA-LIB, um technische Indikatoren für den Systemhandel in der Anaconda-Umgebung zu generieren. wurde fortgesetzt ist. Nachdem ich die technischen Indikatoren für Bitcoin habe, möchte ich das Kerzendiagramm und die erstellten Indikatoren zusammen zeichnen.
Informationen zu Bitcoin-Diagrammen werden unter der Annahme beschrieben, dass sie bereits erfasst wurden. Wenn Sie dies nicht getan haben, lesen Sie bitte den obigen Qiita-Artikel, um sie zu erstellen.
Terminal
conda activate <Name der CONDA-Zielumgebung>
Ich wollte unbedingt eine Conda-Installation durchführen, hatte aber kein Conda-Paket für die Zielumgebung, daher werde ich es mit pip installieren.
Terminal
pip install mpl-finance
Terminal
jupyter lab --ip=0.0.0.0 --no-browser
Notieren Sie sich die externe IP, die von einem roten Rahmen umgeben ist
Greifen Sie mit einem Browser auf "
OHLC steht für Open (offener Preis), High (hoher Preis), Low (niedriger Preis), Close (Schlusspreis) Da der Inhalt mit dem vorherigen Artikel identisch ist, können diejenigen, die ihn bereits erstellt haben, ihn überspringen.
import requests
import pandas as pd
import numpy as np
import talib as ta
#1 Tag von Cryptowatch bis OHTC von BTC(14400 Minuten)Erstellen Sie eine Funktion, die in einem DataFrame abgerufen und zurückgegeben wird
def get_btc_ohlc(period=14400):
#Anfrage an Cryptowatch
response_data = requests.get("https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc",params = { "periods" : period , "after" : 1})
response_data = response_data.json()
#In einen DataFrame umgewandelt
df_tmp = pd.DataFrame(pd.DataFrame(response_data)[:1]['result'][0],
columns=['date', 'open', 'high', 'low', 'close', 'tmp1', 'tmp2']).drop(columns=['tmp1', 'tmp2'])
#Da date int ist, konvertieren Sie in datetime
df_tmp['date'] = pd.to_datetime(df_tmp['date'].astype(int), unit='s')
return df_tmp
#Erhalten Sie tatsächlich BTC OHLC-Informationen
df_btc = get_btc_ohlc()
# TA-In Array-Typ konvertiert, damit es von LIB verarbeitet werden kann
btc_open = np.array(df_btc['open'])
btc_close = np.array(df_btc['close'])
btc_high = np.array(df_btc['high'])
btc_low = np.array(df_btc['low'])
#Berechnen Sie das Bollinger-Band
upperband, middleband, lowerband = ta.BBANDS(btc_close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)
#Impuls berechnen
momentum=ta.MOM(btc_close,timeperiod=10)
#RSI berechnen
rsi = ta.RSI(btc_close, timeperiod=14)
# MACD
macd, macdsignal, macdhist = ta.MACD(btc_close, fastperiod=12, slowperiod=26, signalperiod=9)
# Stochastic
slowk, slowd = ta.STOCH(btc_high, btc_low, btc_close, fastk_period=5, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)
# ATR
real = ta.ATR(btc_high, btc_low, btc_close, timeperiod=14)
# EMA
ema25 = ta.EMA(btc_close, timeperiod=25)
ema75 = ta.EMA(btc_close, timeperiod=75)
#Kombinieren Sie die erstellten technischen Index-Arrays zu einem DataFrame, um sie mit dem ursprünglichen DataFrame zu kombinieren
array_tmp = np.c_[upperband, middleband, lowerband, momentum, rsi, macd, macdsignal, macdhist, slowk, slowd, real, ema25, ema75]
df_tmp = pd.DataFrame(data=array_tmp, columns=['upperband', 'middleband', 'lowerband', 'momentum', 'rsi', 'macd', 'macdsignal', 'macdhist', 'slowk', 'slowd', 'real', 'ema25', 'ema75'])
#Join by Dataframe,Indexbasierter Typ
df_btc = df_btc.merge(df_tmp, left_index=True, right_index=True)
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import mpl_finance
#Geben Sie den anzuzeigenden Zeitraum an.Wenn Sie alle sehen wollen, "df_btc.copy()Ist in Ordnung
df_w = df_btc.query('"2020-02-01" <= date <= "2020-02-29"').copy()
#In chronologischer Reihenfolge sortieren
df_w.sort_values(by='date', ascending=True, inplace=True)
#Indexzeit
df_w.set_index('date', inplace=True)
#In matplotlib wird die Zeit nur verarbeitet, wenn sie auf Unix-Zeit eingestellt ist. Konvertieren Sie daher von Datenzeit zu Unix-Zeit
df_w.index = mdates.date2num(df_w.index)
# mpl_Plot mit Finanzen.Übergeben Sie einfach das OHLC-Array und es wird ein Kerzendiagramm geschrieben
data_w = df_w[['open', 'high', 'low', 'close']].copy().reset_index().values
#Grafik in 3 Zeilen und 1 Spalte anzeigen. sharex=Echte gemeinsame Nutzung der x-Achse. gridspec_Passen Sie das Verhältnis jedes Diagramms mit kw an
fig, axes = plt.subplots(nrows=3, ncols=1, figsize=(20, 10), sharex=True, gridspec_kw={'height_ratios': [3, 1, 1]})
# mpl_finance.candlestick_Übergeben Sie in ohlc die OHLC-Daten des Arrays und zeigen Sie das Kerzendiagramm an
mpl_finance.candlestick_ohlc(axes[0], data_w, width=0.1, alpha=0.8, colorup='limegreen', colordown='red')
#Bollinger-Band über Kerzengraph überlagert
axes[0].plot(df_w.index, df_w['upperband'], color='green', alpha=0.9)
axes[0].plot(df_w.index, df_w['lowerband'], color='green', alpha=0.9)
#EMA überlagert das Kerzendiagramm
axes[0].plot(df_w.index, df_w['ema25'], color='red', alpha=0.8)
axes[0].plot(df_w.index, df_w['ema75'], color='orange', alpha=0.8)
#RSI-Diagramm anzeigen
axes[1].plot(df_w.index, df_w['rsi'], color='deepskyblue')
#MACD-Diagramm anzeigen
axes[2].bar(df_w.index, df_w['macdhist'], color='skyblue')
#Fügen Sie dem Diagramm ein Raster hinzu
axes[0].grid()
axes[1].grid()
axes[2].grid()
#Legende hinzufügen
axes[0].legend(['upperband', 'lowerband', 'ema25', 'ema75'])
axes[1].legend(['RSI'])
axes[2].legend(['MACD'])
locator = mdates.AutoDateLocator()
axes[0].xaxis.set_major_locator(locator)
axes[0].xaxis.set_major_formatter(mdates.AutoDateFormatter(locator))
#Da die x-Achsen-Notation abgedeckt ist, drehen Sie sie um 70 °
plt.xticks(rotation=70)
#Handlung
plt.show()
Es kann gut so angezeigt werden, aber wenn Sie nur das Diagramm sehen möchten, ist es bequemer, Tradingview lol zu verwenden
Wenn Sie jedoch einen kostenlosen Plan für Tradingview haben, können Sie nur bis zu 3 technische Indikatoren verwenden. Lesen Sie daher bitte diesen Artikel und zeichnen Sie verschiedene Indikatoren kostenlos auf.
Recommended Posts