かとのぼのマイコード・マイライフ

プログラミング初心者とアプリの個人開発者向けのブログ。たまに銭湯

PythonでPoloniexのAPIからボリンジャーバンドを出してみた

この記事をシェアする

前回、Pythonを使いPoloniexのAPIでビットコインのデータの取得とグラフを出してみました。

 過去記事はこちら:

www.katonobo.com

 

今回は、Pythonを使って、ビットコインのボリンジャーバンドを表示させてみました。

ボリンジャーバンドとは、株式投資などでよく用いられるテクニカル分析の一つです。

統計の技術を使います。このボリンジャーバンド分析で、株価が買われすぎの位置にあるのか、それとも売られすぎの位置にあるのかを判断します。

Pythonを使ってビットコインを分析する

さて、前回までに、PoloniexのAPIからデータを取得し、グラフを出すところまでやりました。今回は、そこから、移動平均を出し、ボリンジャーバンドを表示させるところまでやります。

参考にさせていただいた記事は以下になります。

 

qiita.com

 

www.stockdog.work

 

まずは、移動平均を出します。

仮想通貨取引所のPoloniexからAPI経由でデータ取得し、ディープラーニング(Chainer)で翌日の価格予測をしよう - Qiita

を参考に、前回のjupyter notebookに必要なデータを入力。

今回は5日移動平均を使います。

data_l = pd.rolling_mean(df['close'], 12 * 24 * 5)

と入力し、出力します。ところが、

FutureWarning: pd.rolling_mean is deprecated for Series and will be removed in a future version, replace with 
	Series.rolling(window=1440,center=False).mean()

 

 エラーが出ます。

replace with 
	Series.rolling(window=1440,center=False).mean()
こちらに変えろということでしょう。変更したのがこちら

data_l = df['close'].rolling(window=1440,center=False).mean()

 

 これでうまく行きました。

 

続いて、ボリンジャーバンドです。今回はシグマは2にします(2標準偏差)。

ボリンジャーバンドをpythonで描く 〜python〜 - 株も歩けば犬に当たる

こちらを参考にさせていただきました。

 

deviation = 2
std = df['close'].rolling(window=1440).std()
sigma = pd.Series.rolling(data_l, window=1440).std(ddof=0) #σの計算
upper_siguma = data_l + sigma
upper2_siguma = data_l + sigma * deviation
lower_siguma = data_l - sigma
lower2_siguma = data_l - sigma * deviation

 

これで問題ありません。stdは、標準偏差を出します。

 

# 描画を綺麗に表示する
from matplotlib.pylab import rcParams
import seaborn as sns
rcParams['figure.figsize'] = 15, 6

plt.plot(df['close'], color='#7f8c8d')
plt.plot(data_l, color='#2980b9') # 長期線
#plt.plot(upper_siguma, color='blue')
plt.plot(upper2_siguma, color='red')
#plt.plot(lower_siguma, color='blue')
plt.plot(lower2_siguma, color='red')


plt.show()

 これで出力してみます。

ちなみに、1シグマは今回は出さないようにコメントアウトしています。

 

f:id:katonobo:20170805234055p:plain

出力できました。
うーん。これだけ見ると、ボリンジャーバンドは仮想通貨の動きにはあんまりうまく機能しないのかもしれないですね。

Pythonでは、このような分析が簡単に行うことができます。学習方法は、書籍とあとはUdemyという動画学習が良いでしょう。優れた教材がたくさんあります。

 

いちばんやさしい Python入門教室

 

Udemy