【永久保存】仮想通貨FXでRSI、MACD、ストキャスティクス値を取得するコピペOKのPythonプログラム
今回は、仮想通貨FXでRSI、MACD、ストキャスティクス(stochastics)値を取得するPythonサンプルプログラム(ソース)を公開します。
これらの値を取得することで、自動売買プログラムを作る幅が広がります。
これらの値を計算するのに最も便利なのは、「TA-LIB」です。まず、こちらからTa-Libをダウンロードしてください。ダウンロードするファイルは,以下の通りで、私が使用している「TA_Lib-0.4.18-cp37-cp37m-win_amd64.whl」のリンクを貼っておきます。
(例)
Python 3.9,Windows 64bitなら「TA_Lib‑0.4.19‑cp39‑cp39‑win_amd64.whl」
Python 3.9,Windows 32bitなら「TA_Lib‑0.4.19‑cp39‑cp39‑win32.whl」
Python 3.8,Windows 64bitなら「TA_Lib‑0.4.19‑cp38‑cp38‑win_amd64.whl」
Python 3.8,Windows 32bitなら「TA_Lib‑0.4.19‑cp38‑cp38‑win32.whl」
ダウンロードしたら最後に,whlファイルを保存したディレクトリに移動し,以下を実行することでTA-Libをインストールできます。ファイル名はあなたの環境にあったダウンロードしたファイルを指定してください。また、サンプルプログラムでnumpy、requests、jsonを使用しますのでインストールしていない場合はインストールしてください。
API KEYさえ設定すれば、そのままコピペで動くはずですので、是非動かしてみてください。初めてデータが取れた時は感動しますよ!!是非Binance FuturesのRSI、MACD、ストキャスティクス値とも比較してみてください。多少異なることもありますが、ほぼ同じ値になっていることを確認済みです。
(例)
Python 3.9,Windows 64bitなら「TA_Lib‑0.4.19‑cp39‑cp39‑win_amd64.whl」
Python 3.9,Windows 32bitなら「TA_Lib‑0.4.19‑cp39‑cp39‑win32.whl」
Python 3.8,Windows 64bitなら「TA_Lib‑0.4.19‑cp38‑cp38‑win_amd64.whl」
Python 3.8,Windows 32bitなら「TA_Lib‑0.4.19‑cp38‑cp38‑win32.whl」
ダウンロードしたら最後に,whlファイルを保存したディレクトリに移動し,以下を実行することでTA-Libをインストールできます。ファイル名はあなたの環境にあったダウンロードしたファイルを指定してください。また、サンプルプログラムでnumpy、requests、jsonを使用しますのでインストールしていない場合はインストールしてください。
pip install TA_Lib-0.4.18-cp37-cp37m-win_amd64.whl pip install numpy pip install requests pip install jsonそれでは、いよいよ、RSI、MACD、stochastics値を取得するプログラムを書いていきます。仮想通貨のBTC FXで自動売買をする場合、流動性やPythonプログラムに関する情報量の観点から「Binance」が最も適していています。まだ口座を作っていない方は、手数料が安くなる私の紹介コードから「Binanceに登録」してくださいね。自動売買で数をこなすとなると手数料の数パーセントの違いも致命的になります。なお、Pythonで自動ではなく手動で仮想通貨のFXをやるのであれば、「FXGT」がスワップフリーなので最もおススメです。
API KEYさえ設定すれば、そのままコピペで動くはずですので、是非動かしてみてください。初めてデータが取れた時は感動しますよ!!是非Binance FuturesのRSI、MACD、ストキャスティクス値とも比較してみてください。多少異なることもありますが、ほぼ同じ値になっていることを確認済みです。
import talib import numpy as np import requests import json API_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX' headers = { 'X-MBX-APIKEY': API_KEY } #priodには期間を指定します。1m、5m、15m、30m、1h、4hなどを指定します。 priod = "1m" get_cnt = 1500 price_priod = [0] * (get_cnt - 1) price_priod_high = [0] * (get_cnt - 1) price_priod_low = [0] * (get_cnt - 1) url = 'https://fapi.binance.com/fapi/v1/klines' params = { 'symbol': 'BTCUSDT', 'interval': priod, 'limit': get_cnt } r = requests.get(url, headers=headers, params=params) if r.status_code == 200: market_prices_priod = json.loads(r.text) ii = 0 for j in range((get_cnt- 1)): price_priod[ii] = float(market_prices_priod[j][4]) price_priod_high[ii] = float(market_prices_priod[j][2]) price_priod_low[ii] = float(market_prices_priod[j][3]) #price_priod[0]が現在 ii = ii + 1 price = np.array(price_priod) high = np.array(price_priod_high) low = np.array(price_priod_low) ##データを確認する #print(price) # 単純移動平均線を計算する #ema = talib.EMA(price) #print(ema) # MACDを計算する macd, macdsignal, macdhist = talib.MACD(price,fastperiod=12, slowperiod=26, signalperiod=9) # RSIを計算する rsi = talib.RSI(price, timeperiod=14) # stochastics RSI値を計算する fastk, fastd = talib.STOCHRSI(price, timeperiod=14, fastk_period=5, fastd_period=3, fastd_matype=0) # 現在のMACD macd_now = float(str(macd[1498:1499])[1:-1]) # 1つ前のMACD(Priodが5分なら5分前) macd_now_1 = float(str(macd[1497:1498])[1:-1]) # 2つ前のMACD(Priodが5分なら10分前) macd_now_2 = float(str(macd[1496:1497])[1:-1]) macdsignal_now = float(str(macdsignal[1498:1499])[1:-1]) macdsignal_now_1 = float(str(macdsignal[1497:1498])[1:-1]) macdsignal_now_2 = float(str(macdsignal[1496:1497])[1:-1]) macdhist_now = float(str(macdhist[1498:1499])[1:-1]) macdhist_now_1 = float(str(macdhist[1497:1498])[1:-1]) macdhist_now_2 = float(str(macdhist[1496:1497])[1:-1]) rsi_now = float(str(rsi[1498:1499])[1:-1]) rsi_now_1 = float(str(rsi[1497:1498])[1:-1]) rsi_now_2 = float(str(rsi[1496:1497])[1:-1]) fastk_now = float(str(fastk[1498:1499])[1:-1]) fastk_now_1 = float(str(fastk[1497:1498])[1:-1]) fastk_now_2 = float(str(fastk[1496:1497])[1:-1]) fastd_now = float(str(fastd[1498:1499])[1:-1]) fastd_now_1 = float(str(fastd[1497:1498])[1:-1]) fastd_now_2 = float(str(fastd[1496:1497])[1:-1]) print(macd_now) print(macdsignal_now) print(macdhist_now) print(rsi_now) print(fastk_now) print(fastd_now)