ホーム > 仮想通貨取引所のAPI解説 > 【永久保存】仮想通貨FXでパラボリック SARでフラクタル構造のN波動を識別するPythonプログラム

【永久保存】仮想通貨FXでパラボリック SARでフラクタル構造のN波動を識別するPythonプログラム

今回は、仮想通貨FXでパラボリック SARでフラクタル構造のN波動を識別するPythonプログラムについて、コピペOKのサンプルプログラムを紹介します。

プログラムの話に入る前に、パラボリック SARについて解説をしていきます。まず下の図をご覧ください。


SAR値が下にある時は上昇トレンドで、上にある時は下降トレンドであることがわかります。相場は、N波動のフラクタル構造で動いていますので、SARはフラクタル構造をプログラミングする上で大切なインジケーターになります。 上昇トレンドになったら買い、下降トレンドになったら売れば、トレンドが出ている時は稼げるということになります。一方でレンジ相場になるとあまり機能しないので気を付けてください。レンジ相場を見極めるインジケータとしては、ADXがあり上昇/下落のトレンドを把握することに用いられます。ADXのパラメーターは0から100までの数値で表示されます。通常、その値が25を超えるケースでは、トレンドの勢いが強く且つそれが継続すると判断します。ですので、ADXが25以下の時はレンジ相場でありSARが機能しずらく、逆にADXが25以上の時はSARが機能しやすいということになります。SARとADXを組み合わせることで勝率を上げていくことができます。

SARとADXの値を計算するのに最も便利なのは、「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を使用しますのでインストールしていない場合はインストールしてください。

pip install TA_Lib-0.4.18-cp37-cp37m-win_amd64.whl
pip install numpy
pip install requests
pip install json
それでは、いよいよ、SARとADXの値を取得するプログラムを書いていきます。仮想通貨のBTC FXで自動売買をする場合、流動性やPythonプログラムに関する情報量の観点から「Binance」が最も適していています。まだ口座を作っていない方は、手数料が安くなる私の紹介コードから「Binanceに登録」してくださいね。自動売買で数をこなすとなると手数料の数パーセントの違いも致命的になります。なお、Pythonで自動ではなく手動で仮想通貨のFXをやるのであれば、「FXGT」がスワップフリーなので最もおススメです。

API KEYさえ設定すれば、そのままコピペで動くはずですので、是非動かしてみてください。初めてデータが取れた時は感動しますよ!!是非Binance FuturesのSARとADXの値とも比較してみてください。多少異なることもありますが、ほぼ同じ値になっていることを確認済みです。

import talib
import numpy as np
import requests
import json

API_KEY = 'XXXXXXXXXXXXXXXXXXX'

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])      
        #min15_open_fibo[0]が現在
        ii = ii + 1
    
price = np.array(price_priod)
high = np.array(price_priod_high)
low = np.array(price_priod_low)
    
##データを確認する
#print(price)
    
# SARを計算する
SAR = talib.SAR(high, low, acceleration=0.02, maximum=0.2)

#現在のSAR
sar_0 = SAR[-1]
#1つ前のSAR
sar_1 = SAR[-2]
#2つ前のSAR
sar_2 = SAR[-3]
#3つ前のSAR
sar_3 = SAR[-4]

print(sar_0)
print(sar_1)
print(sar_2)


# ADXを計算する
ADX = talib.ADX(high, low, price, timeperiod=14)

#現在のADX
adx_0 = ADX[1498]
#1つ前のADX
adx_1 = ADX[1497]
#2つ前のADX
adx_2 = ADX[1496]

print(adx_0)
print(adx_1)
print(adx_2)


私の自動売買実績をリアルタイムに公開していますので是非モニターしてみてください(^^


関連コンテンツ