【 Python 】ビットコインのテクニカル分析をプログラミングで行う方法

【 Python 】ビットコインのテクニカル分析をプログラミングで行う方法 サムネイル

「Python上でテクニカル分析を取り入れたい」

「でもどうやってテクニカル分析を取り入れられるのかわからない。教えてエロい人、エロくない人」

 

この記事ではPythonを使ったテクニカル分析を行う方法を解説します。

プログラミングでテクニカル分析を行うためには、「可能な限り簡単な指標を使ってまずは動かしてみる」ことが大切だと思います。

 

ですので、いきなり高度な分析は難しいので、今回は難しい計算が不要でありテクニカル分析の中で王道の王道である「移動平均線」をPython上で描写してみましょう。

移動平均線とは、ある一定期間の価格から平均値を計算し、折れ線グラフで表したものです。その日を含めた過去何日間(または何週間)かの価格を毎日計算するため、平均値が移動していくことから、移動平均と呼ばれます。

移動平均線 – SMBC日興証券

この記事での目標 ~移動平均線をPythonを使って描写する~

Pythonにおける移動平均線の描画

上の赤、緑、黄が“移動平均線”(SMA)です。ビットコインの過去データを線(青)にするのと同時に、ボリンジャーバンドの線(緑と赤)も引いたグラフです。

 

ローソク足に見慣れているのでグラフが少し見にくいと感じるかもしれませんが、ビットコインの終値だけを時系列で線にしている形式です。

 

必要なデータとライブラリの準備

事前にグラフを描くために必要なものがあるので解説します。

 

必要なデータ

ビットコインの過去データが必要です。過去データはCoinbaseの2014年からの日足データを用意したので利用してみてください

Coinbaseの日足CSVデータをダウンロードする

ダウンロード手順① URL先ではCSVファイルでダウンロードできないのでGoogleスプレッドシートで開くために画像のようにスプレッドシートを開きます。

CSVデータのダウンロード手順1

ダウンロード手順② 「ファイル→ダウンロード→カンマ区切り値」と移動していきCSVデータとしてダウンロードします。

CSVデータのダウンロード手順2

ダウンロード手順③ ダウンロードできたら自分の使いたいテキストエディタ(VSCode)の同階層にファイルを移動させておきます。

CSVデータのダウンロード手順3
草猫店長
好きなエディタでいいにゃあ。VSCodeはオススメだにゃあ。

VSCodeの使い方とダウンロードはこちらのページ(ビットコイン板情報(価格)をPythonで取得する方法)を参考にしてほしいにゃあ。

 

必要なライブラリ

pandas→データを操作するライブラリ

numpy→高速で計算を行うライブラリ

matplotlib→データを描写するライブラリ

上の3つのPythonにおける定番ライブラリが必要です。

上手くインストールできない、インストール中にエラーが発生するという場合は「pandas インストール エラー」のようなキーワードで検索してみましょう。

もしくは、エラーメッセージの1部を切り取って検索すれば同じ現象の人たちの解決策が見つかりやすいです。

 

CSVを読み込んでみよう

CSVデータの読み込みにはpandasライブラリを使います

「import pandas as pd」とは “pandas” を “pd” として読み込みます。という意味になります。長ったらしいのでpdに省略しているだけです。

df = pd.read.csv()でデータを指定して読み込んでいます。 index_colはオプションで、ダウンロードしたデータのDateTime行をインデックスにするという意味です。

(index_colを指定しない場合は、0、1、2、3・・・の順番で行の位置を示してくれます。)

 

出力結果は以下の通りです。

 

CSVの不要なデータを削除してみよう

今回の記事で参照するのは「日付(DateTime)」「終値(Close)」の2列だけです。その他は参照しないようにしましょう。

 

DateTime,Symbol,Open,High,Low,Close,Volume BTC,Volume USD

「日付(DateTime)」「終値(Close)」以外の列は削除しましょう。

del history[削除したい列]で不要なデータを消してくれます。

実行結果も貼っておきます。2列になったことが分かります。

 

移動平均線の引き方

Pythonにおける移動平均線の描画

上の図は完成形です。VSCodeで実行させると別ウィンドウとして上の図が開かれます。

それでは移動平均線を実際に引いてみましょう。(単純移動平均線と呼ばれるもっとも基本的な線を引きます。)

 

①. 短期線(25日)、中期線(75日)、長期線(200日)の3つの線を引く

②. それぞれの期間中における平均価格を算出する

③. 算出した価格を線にして描写する

上の3つの手順をPythonでコーディングしながら行なっていきましょう。

 

Python 移動平均線の完成コード

 

①. 短期線(25日)、中期線(75日)、長期線(200日)の3つの線を引く

短期線、中期線、長期線の3つの日数はグランビルの法則に従って25日、75日、200日としました。

グランビルの法則についての詳細は省きますが、グランビルと呼ばれるアナリストが提唱した基準は世界中で有名な指標に関した期間になります。

相場は人の意識によって形作られますので、各トレーダーが意識しやすい指標を参考にするという意味合いで25日、75日、200日で線を引きます。

 

コード上にある rolling(window=指定行) ですが、これはCSVの行をいくつズラすのかと同時にズラした範囲も指定できるコードです。25日、75日、200日分でズラしましょう。

 

②. それぞれの期間中における平均価格を算出する

sma[‘Short25’] = sma[‘Close’].rolling(window=25).mean()における「mean()」の関数は、平均値を計算してくれる関数です。

 

具体的に何をしているのか示します。ローソク足の終値を5日分だけ平均価格を算出してみましょう。

1日目 100万

2日目 120万

3日目 150万

4日目 110万

5日目 90万

という終値だったとすると上の5日の平均価格は114万円です。つまり移動平均線のある一点は114万円の地点となります。

25日、75日、200日で点を繋げていって、線にします。

 

実際に平均値を算出していけているのか試しに print(sma[‘2019-02-01′:’2019-08-01’]) で確認しています。

print(sma[‘2019-02-01′:’2019-08-01’]) の期間の出力結果は以下の通りです。
 

③. 算出した価格を線にして描写する

matplotlibライブラリで描写します。VSCodeを使っているのであれば別ウィンドウとして開かれます。

 

sma[[‘Close’, ‘Short25’, ‘Middle75’, ‘Long200’]].plot()→指定の4列を描写します。

plt.title(‘SMA Technical Analysis’)→タイトルをつけます

plt.ylabel(‘BTC/USD’)→Y軸のラベルを指定します

plt.show()→ここまでの条件付けで実際に描写します。

 

実行すると下のグラフが現れるはずです。

Pythonにおける移動平均線の描画

 

ビットコインのテクニカル分析をプログラミングで行う方法 まとめ

【 Python 】ビットコインのテクニカル分析をプログラミングで行う方法 まとめ

「描写しただけで売買はどうするの?」って思った人もいるかと思います。

実際に売買へ繋げるためにもう少しテクニカル分析で線を引いてみる実践をやってみましょう。

 

次はボリンジャーバンドの引き方の解説です。ビットコイン過去データでボリンジャーバンドを引く方法の記事

を読んでみてください。

【 Python 】ビットコイン過去データでボリンジャーバンドを引く方法

2019年8月27日