Websocket(JSON-RPC)を利用したbitflyer用出来高スキャルピングbot

先人様の知恵がPubnub仕様で作成されており現在動かなくなっていたので改造

bitFlyerスキャルピングbot [r17u様]

約定情報の出来高を利用したものがbitflyerの情報提供の終了により動かなくなっていたので改造してみました

wsに繋げる処理はもっと簡素に書けるかもしれません

色々試したのですが、

__main__部分にws.run_forever()を書いているとCtrl+Cでループを抜けられなくなります

変更点と追加部分

API設定

設定部分を手前に出しました

APIキーを直書きするのは本当は良くないですね

1ファイルだけで試せるようにあえて変更しています

キーを別ファイルに分ける場合は

と変更し、

bitFlyer_keys.json

を用意して同じディレクトリに置いてください

※コンマ[,]を消さないようにご注意ください

エントリー設定

元々は売りと買いのボリュームが逆転するタイミングでエントリーするようになっていました

調整方法も用意してあり、ボリュームの差を引き算して[〇BTC分離れたら]という設定でした

10BTCにとっての20BTCと、90BTCにとっての100BTCは意味合いが違うと思ったのでパーセンテージの計算に変更してみました

計算方法は単純で、買いの場合は[BUY/SELL*100]で買いが多ければ100以上の数値になり、逆なら0に近づきます

仮に買いが20,売りが10なら200になり、[triger_percent = 200]の設定ならば

現在ポジションが無ければ買いのエントリーサインになります

基準は100になります

pandasエラーの修正(FutureWarning)

pandasでappend(データの追加)をする時にこのようなメッセージが

FutureWarning:

Sorting because non-concatenation axis is not aligned. A future version
of pandas will change to not sort by default.

To accept the future behavior, pass ‘sort=False’.

To retain the current behavior and silence the warning, pass ‘sort=True’.

将来的な警告:

非連結軸が揃っていないためソートしています。将来のバージョン
パンダの数はデフォルトで並べ替えないように変更されます。

将来の振る舞いを受け入れるには、 ‘sort = False’を渡してください。

現在の動作を保持して警告を黙らせるには、 ‘sort = True’を渡します。

問題無く動きますが、毎回Warningを見るのは嫌ですのでsortを追加しました

エントリー開始をデータがある程度集まるまで遅らせる

len(df) >= 500の部分です

これ無しでテストすると、

動かし初めのデータがあまり溜まっていない状態でも売り買いをしようとするため

防止のために追加しています

それに伴いデータ情報にも現在どの程度データが溜まっているのかを表示するようにしています

数時間動かしてみて

このままではもちろん負けます

ただ、プラス収益になるタイミングもあり何かを工夫すれば稼げるBOTになる感じがします

たとえば、基準になるパーセンテージを変動させてみる、IFD,OCOもしくはその両方で注文してみる

等々アイディア次第だと思います

1時間間違いなく数円稼げるものができればあとはロットをあげて回すだけです

ちょっと試したこと

指値にしてみる

約定しない事がたびたび出てくるのでその処理を考えなければいけません

入りを指値、クローズは成り行き等組み合わせても良いかもしれませんね

成り行きはとても滑ります

参考サイト

bitflyer-realtime-apiのjson-rpcを使ってみる

以上です

シェアする

  • このエントリーをはてなブックマークに追加

フォローする