自動売買BOTの改良 その2
今回はBOTにボリンジャーバンドを追加してみようと思います。
まずは以下のTA-Libのサイトに行きます。
下のほうにスクロールするとOverlap Studiesというのが出てきます。
そこをクリックするといろいろとテクニカル指標が出てきますが今回はボリンジャーバンドを使うのでBollinger Bandsの以下の青い部分を選択してコピーします。
それをBOTのコードの以下の部分に貼り付けます。
#macd, macdsignal, macdhist = ta.MACD(cl, fastperiod=9, slowperiod=26, signalperiod=9)
macd, macdsignal, macdhist = ta.MACD(cl, fastperiod=4, slowperiod=400, signalperiod=9)#パラメータ改良版
slowk, slowd = ta.STOCH(hi, lo, cl, fastk_period=14, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)
fastk, fastd = ta.STOCHF(hi, lo, cl, fastk_period=14, fastd_period=3, fastd_matype=0)
upperband, middleband, lowerband = BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)
このままでは動きませんのでBBANDSをta.BBANDSとし、closeをclと書き換えます。timeperiod=5とかだとなんかアレな感じなので21にします。
upperband, middleband, lowerband = ta.BBANDS(cl, timeperiod=21, nbdevup=2, nbdevdn=2, matype=0)
このようになれば準備完了です。
早速条件式を描いていきましょう。
nbdevup=2というのはいわゆる2σというものでnbdevdn=2は-2σです。
ここの値を1にすれば1σになります。
今回はここを外れたら逆に仕掛けるという風にやってみます。
+2σを上回ったら売り、-2σを下回ったら買いというようにレンジ相場で威力を発揮するロジックです。今回はとりあえずそのポジションがmiddlebandまで戻ったら利益確定するようにしていきましょうか。
買いの条件式は以下です。
if(lowerband[-1] > cl[-1] and posi == ""):
売りの条件式は
if(upperband[-1] < cl[-1] and posi == ""):
買い注文は
order = bitflyer.create_order(symbol = 'BTC/JPY',type='market',side='buy',amount=lot,params = { "product_code" : "FX_BTC_JPY"})
売り注文は
order = bitflyer.create_order(symbol = 'BTC/JPY',type='market',side='sell',amount=lot,params = { "product_code" : "FX_BTC_JPY"})
などとそれぞれに書き込みます。
利益確定は、middlebandに戻った時ですので買いポジションの場合は条件式は以下のようになります。
if(middleband[-1] < cl[-1] and posi == "BUY"):
同様に売りポジションの場合は
if(middleband[-1] > cl[-1] and posi == "SELL"):
と、このようになります。
まぁレンジ相場のときはいいんですがレンジから外れてトレンドが出来始めた時にはこのロジックだと上手くいきません。
なので、そのときには別の方法が必要になってきます。
今回は以上です。
長文にお付き合いいただきありがとうございました。
この記事が気に入ったらサポートをしてみませんか?