こんばんは。
なおき(@naoki_finance)です。
前回は、移動平均線の値を自動で計算する関数を作成しました。
自分でインジケータの値を算出する関数を作るとそのインジケータの理解も深まりますし、より有用な使い方もできるようになるので勉強にはとても良いです。
しかし、作るための時間もかかりますし、もしかするとバグが発生する恐れもあります。
そこで今回は、代表的なインジケータの値を算出するライブラリであるTA-Libをご紹介します。
スポンサーリンク
目次
TA-Libとは?
TA-Libとは、Technical Analysis Libraryの略で様々なテクニカル指標などの関数がまとまっているライブラリです。
具体的にはこのようなインジケータを算出できます。
・移動平均線(SMA、WMA、EMA)
・MACD
・ADX
・RSI
・ボリンジャーバンド
・CCI(コモディティチャネルインデックス)
などここでは紹介しきれませんが、他にもたくさんのインジケータを使うことが可能です。
また、インジケータだけでなく、チャートのパターン認識も行うことができるる優れものです。
準備
TA-Libを使用するためにTA-Libのインストールを行います。
TA-Libのインストールはこれまでのものより少し厄介ですが、ここさえ乗り切ればbotで複雑なテクニカル分析も可能になりますので頑張りましょう。
インストールされているPythonのバージョンを確認する
TA-Libは、Python 3.6.X系ではうまくインストールできないようです。
コマンドプロンプトを開き、pythonと入力してみた際にこのような表示になった場合は、python 3.4.X系の仮想環境を作る必要があります。
Pythonのバージョンを確認したらexit()で抜けておきましょう。
Python 3.4.X系の仮想環境を作成する
コマンドプロンプトを立ち上げ、こちらのコマンドを入力し、仮想環境を作ります。
conda create -yn talibtest python=3.4
※talibtestは、任意に変更可能です。
このコマンド一つで仮想環境の構築は完了です。
Python 3.4.X系の環境への切り替えを行う。
作成した3.4.X系への切り替えを行います。
activate talibtest
※talibtestは先ほどご自身で付けた名前です。
切り替えるとコマンドプロンプトの先頭に(talibtest)のような文字が出ると思います。
そこで再度pythonと入力するとPythonのバージョンが切り替わっているのが分かります。
TA-Libのインストールを行う。
いよいよここまで来たら今回のメインであるTA-Libのインストールです。
Python 3.4.X系に切り替えたままこちらのコマンドを実行してください。
conda install -c quantopian ta-lib
インストールが成功しているかどうかはpythonのコマンドラインに入り、import talibでエラーが出なければ(何も出なければ)OKです。
CCXTのインストールを行う。
Python 3.6.X系でCCXTをインストールしてあった場合でも再度CCXTのインストールを行う必要があります。
pip install ccxt
CCXTがインストールできたかどうかは最初の環境構築の記事に記載していますのでそちらをご覧ください。
あわせて読みたい!
これでTA-Libのインストールは完了です。
スポンサーリンク
プログラミング
では実際にTA-Libを使用してプログラミングをしてみたいと思います。
今回は、売買オーダーはせず、TA-Libを用いて前回と同様に単純移動平均の値を算出したいと思います。
# talibtest.py # -*- coding: utf-8 -*- import ccxt import MA import talib import numpy as np from time import sleep # bitMEX使用宣言 bitmex = ccxt.bitmex({ "apiKey": "XXXXXXXXXXXXXXXXXXX", "secret": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }) # テストネット使用宣言 bitmex.urls["api"] = bitmex.urls["test"] while( True ): # 1分足10本移動平均値取得 data = MA.getMA( "1m", 10 ) # TA-Libの結果データと比較するため。 print(str(data)) # TA-Libの結果データと比較するため。 # タイムスタンプ取得 time = bitmex.fetch_ticker(symbol="BTC/USD")["timestamp"] msec = 60 * 1000 time = time - 10 * msec # ローソク足のデータ取得 candles = bitmex.fetch_ohlcv(symbol="BTC/USD", timeframe = "1m", since = time) # 終値取得 tmp = [] for candle in candles: tmp.append( candle[4] ) data = talib.SMA(np.array(tmp,dtype='f8'), timeperiod=10) # TA-Libにて単純移動平均を算出 print( data ) sleep( 60 )
前回の単純移動平均を計算する関数getMAも同様にコールすることにより、TA-Libと答え合わせしています。
タイミングによっては多少値がずれることもあるでしょうが、基本的に同じ結果となると思います。
せっかくなのでボリンジャーバンドも出力してみましょう。
さきほどのtalib.SMAを置き換えるだけです。
upper,middle,lower=talib.BBANDS(np.array(tmp,dtype='f8'),matype=talib.MA_Type.SMA) print( str(upper)) print( str(middle)) print( str(lower)) sleep( 60 )
このように関数にデータを渡すだけで簡単に計算を行うことが可能です。
関数に渡すパラメータは公式HPを見ていただくと分かりますのでご覧になってみてください。
注意点としましては、プログラムを実行する際、Python 3.4.Xに切り替えたのち、実行する必要があります。
python talibtest.py
スポンサーリンク
まとめ
TA-Libは、公式のドキュメントがあまりないので使いこなすまでは戸惑う部分もあるかもしれませんが、いろいろ試行錯誤していけばとても重宝するライブラリですのでぜひご活用ください。
今回は、SMAとボリンジャーバンドしかご紹介できませんでしたが、今後も有用な使い方をご紹介できればと思います。
近頃、数件お問い合わせをいただきました。
私なりに分かりやすく記述しているつもりですが、まだまだ不明確な部分も多いことに気づけました。
不明点などありましたらお気軽にお問合せください。
ではまた。
前回の記事はこちら↓
-
-
第6回 移動平均線のGC/DCで売り買いするbot開発方法を解説!サルでも分かる仮想通貨botの作り方!
こんばんは。 なおき(@naoki_finance)です。 今回から相場の状況を判断して売買を行うbotを作っていきます。 5分足10本分の移動平均を算出し、現在値がそれを上回ったらロング、下回ったら ...