[Qiita] Créer des indicateurs techniques pour Bitcoin à l'aide de TA-LIB pour générer des indicateurs techniques pour le trading système dans l'environnement Anaconda suite est. Maintenant que j'ai les indicateurs techniques pour Bitcoin, j'aimerais tracer le graphique en bougies et les indicateurs créés ensemble.
Les informations du graphique Bitcoin sont décrites en supposant qu'elles ont déjà été acquises, donc si vous ne l'avez pas fait, veuillez vous référer à l'article Qiita ci-dessus et le créer.
Terminal
conda activate <Nom de l'environnement CONDA cible>
Je voulais vraiment faire l'installation de conda, mais je n'avais pas le package conda pour l'environnement cible, je vais donc l'installer avec pip.
Terminal
pip install mpl-finance
jupyter lab
sans aucune optionTerminal
jupyter lab --ip=0.0.0.0 --no-browser
Notez l'adresse IP externe entourée d'un cadre rouge
Accédez à «
OHLC signifie Open (prix ouvert), Haut (prix élevé), Bas (prix bas), Fermer (prix de clôture) Puisque le contenu est le même que celui de l'article précédent, ceux qui l'ont déjà fait peuvent l'ignorer.
import requests
import pandas as pd
import numpy as np
import talib as ta
#1 jour de Cryptowatch à l'OHLC de BTC(14400 minutes)Créer une fonction qui obtient et retourne dans un DataFrame
def get_btc_ohlc(period=14400):
#Demande à Cryptowatch
response_data = requests.get("https://api.cryptowat.ch/markets/bitflyer/btcfxjpy/ohlc",params = { "periods" : period , "after" : 1})
response_data = response_data.json()
#Transformé en DataFrame
df_tmp = pd.DataFrame(pd.DataFrame(response_data)[:1]['result'][0],
columns=['date', 'open', 'high', 'low', 'close', 'tmp1', 'tmp2']).drop(columns=['tmp1', 'tmp2'])
#Puisque la date est int, convertir en datetime
df_tmp['date'] = pd.to_datetime(df_tmp['date'].astype(int), unit='s')
return df_tmp
#En fait, obtenez des informations BTC OHLC
df_btc = get_btc_ohlc()
# TA-Converti en type tableau afin qu'il puisse être traité par LIB
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'])
#Calculer la bande de Bollinger
upperband, middleband, lowerband = ta.BBANDS(btc_close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)
#Calculer l'élan
momentum=ta.MOM(btc_close,timeperiod=10)
#Calculer le RSI
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)
#Combinez les tableaux d'index techniques créés dans un DataFrame à combiner avec le DataFrame d'origine
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'])
#Rejoindre par Dataframe,Guy basé sur un index
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
#Spécifiez la période à afficher.Si vous voulez tout voir, "df_btc.copy()Est OK
df_w = df_btc.query('"2020-02-01" <= date <= "2020-02-29"').copy()
#Trier par ordre chronologique
df_w.sort_values(by='date', ascending=True, inplace=True)
#Temps d'index
df_w.set_index('date', inplace=True)
#Dans matplotlib, l'heure n'est pas traitée à moins qu'elle ne soit définie sur l'heure Unix, alors convertissez-vous de datatime en heure Unix
df_w.index = mdates.date2num(df_w.index)
# mpl_Terrain utilisant la finance.Passez simplement le tableau OHLC et il écrira un graphique en bougies
data_w = df_w[['open', 'high', 'low', 'close']].copy().reset_index().values
#Afficher le graphique sur 3 lignes et 1 colonne. sharex=Véritable partage de l'axe X. gridspec_Ajustez le rapport de chaque graphique avec kw
fig, axes = plt.subplots(nrows=3, ncols=1, figsize=(20, 10), sharex=True, gridspec_kw={'height_ratios': [3, 1, 1]})
# mpl_finance.candlestick_Dans ohlc, passez les données OHLC du tableau et affichez le graphique de la bougie
mpl_finance.candlestick_ohlc(axes[0], data_w, width=0.1, alpha=0.8, colorup='limegreen', colordown='red')
#Bande de Bollinger superposée sur le graphique de la bougie
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 superposé sur le graphique de la bougie
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)
#Afficher le graphique RSI
axes[1].plot(df_w.index, df_w['rsi'], color='deepskyblue')
#Afficher le graphique MACD
axes[2].bar(df_w.index, df_w['macdhist'], color='skyblue')
#Ajouter une grille au graphique
axes[0].grid()
axes[1].grid()
axes[2].grid()
#Ajouter une légende
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))
#Étant donné que la notation de l'axe des x est couverte, faites une rotation de 70 °
plt.xticks(rotation=70)
#terrain
plt.show()
Cela peut être bien affiché comme ça, mais si vous voulez juste voir le graphique, il est plus pratique d'utiliser Tradingview lol
Cependant, si vous avez un plan gratuit pour Tradingview, vous ne pouvez utiliser que jusqu'à 3 indicateurs techniques, veuillez donc vous référer à cet article et tracer différents indicateurs gratuitement.
Recommended Posts