【永久保存】仮想通貨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)










