Warning: count(): Parameter must be an array or an object that implements Countable in /home/kyameron333/meriek.com/public_html/wp-includes/post-template.php on line 310

TA-Libとpython_bitbankccライブラリを使ってデータ解析【Python仮想通貨bot】

この記事はWindows10でAnaconda3を使ってプログラミングをする人向けに書いてあります

前回でコードを記述する準備ができたので、今回はbitcoinの価格を分析します。

前回の記事はこちらから

前回の記事

仮想通貨取引所のひとつ、bitbankのAPIを使って仮想通貨の購入、売却を自動で行ってくれるPythonのプログラムを作ります。 ここでは、私が作成した過程を紹介します。   bitbankの口座を開設 こちらか[…]

ビットコイン

 

numpy, matplotlib, ta-libライブラリのインストール

データを解析するためにこれらのライブラリをインストールします

メリエ
まだ完全に準備できていませんでした。

numpy, matplotlibのインストール

前回のrequestsモジュールをインストールした手順と一緒です

  • Anaconda Navigator を開いて、Environmentタブから前回作成した仮想環境を選択
  • 右側のモジュール一覧からnumpyとmaplotlibを探してapply(インストールする)

ta-libライブラリのインストール

前回のbitbank API ライブラリをインストールした手順と同じです

  • Anaconda Navigator を開き、Environmentタブから作成した仮想環境を選択
  • 仮想環境一覧の右にある▶からOpen Terminalを選択し、ターミナルを開く
  • 以下のコマンドを入力
pip install TA-Lib

原因はよくわかりませんが、この方法だと私はエラーが出たので他の方法を使います

以下のサイトから該当するパッケージをダウンロード

https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib

TA-Libの中でいろいろバージョンがありますので該当するものをダウンロードします

例: 仮想環境のバージョンがpython 3.7 で、あなたのパソコンのOSがWindowsの64bitなら

TA_Lib-0.4.17-cp37-cp37m-win_amd64.whlをダウンロード

ターミナルからダウンロードしたファイルをインストール

  • Anaconda Navigator から作成した仮想環境のターミナルを開く
  • 先程ダウンロードしたファイルがあるディレクトリまで移動
  • 以下のコマンドを実行(pip install [ファイル名])
pip install TA_Lib‑0.4.17‑cp37‑cp37m‑win_amd64.whl

Jupyter Notebookでコードを実行

前回も紹介した様に、

作成した仮想環境のJupyter Notebookを開いてpython3のスクリプトを作成しコードを実装します。

 

モジュールのインポート

import python_bitbankcc as bb 
import matplotlib.pyplot as plt 
import talib 
import numpy as np 
from datetime import datetime

bitbanc APIのパブリックapiのインスタンスを作成

pub = bb.public()

1分足で当日のローソク足を取得

today = datetime.today() 
time8 = str(today.year).zfill(4) + str(today.month).zfill(2) + str(today.day).zfill(2) 

value = pub.get_candlestick('btc_jpy', '1min', time8)

終値、高値、安値をグラフに表示

ohlcv = value["candlestick"][0]["ohlcv"]

close_prices = [float(i[3]) for i in ohlcv]
high_prices = [float(i[1]) for i in ohlcv]
low_prices = [float(i[2]) for i in ohlcv]
ohlcv_time = [tmp[5] for tmp in ohlcv]
times = [datetime.fromtimestamp(i/1000) for i in ohlcv_time]

plt.figure(figsize=(25,15))
plt.plot(times,close_prices,label= 'close')
plt.plot(times,high_prices,label= 'high')
plt.plot(times,low_prices,label= 'low')
plt.xlabel('time')
plt.ylabel('price[enn]')
plt.legend()
plt.show()
output1

TA-Libを使ったテクニカル分析

np_close = np.array(close_prices,dtype='f8')
SMA10 = talib.SMA(np_close, timeperiod = 10)
SMA20 = talib.SMA(np_close, timeperiod = 20)
RSI10 = talib.RSI(np_close, timeperiod = 10)
RSI20 = talib.RSI(np_close, timeperiod = 20)

plt.figure(figsize=(25,15))

plt.subplot(3,1,1)
plt.plot(times,close_prices,label='price')
plt.legend()

plt.subplot(3,1,2)
plt.plot(times,SMA10,label='SMA10')
plt.plot(times,SMA20,label='SMA20')
plt.legend()

plt.subplot(3,1,3)
plt.plot(times,RSI10,label='RSI10')
plt.plot(times,RSI20,label='RSI20')
plt.legend()

plt.show()
output2