2018-07-06

試みにbitFlyerのビットコイン現金自動取引コードを書いた

現物のビットコインの自動売買を動かしてた。利益が出るかはまだ不明。

ソースコード

https://github.com/asterisk37n/bitflyer-trader
pybitflyerというwrapperがあったので使わせていただいた。

取引ロジック

3秒ごとにbitFlyerからbid, askを取得。買い時であれば成り行きで購入、そして売り時を待つ。売り時が来たら成り行きで売る。

売り時、買い時の判定方法は、次の通りであり、オシレーターを計算している。
3秒おきに、直近100件の取引を取得する。取引には、それぞれ

side (BUY もしくはSELL)
price

が入っている。そして、次のside_variable (サイド変数)といったものを導入し、次のbarometerを定義する。

side_variable := 1 if side is BUY, -1 if side is SELL
barometer := Σ side_variable[i] * price[i]

単純に、買いと売りの金額のどちらが多かったのか比較している。


さらにここで、現在に近い取引を重要視するため、過去の取引については(1-alpha)**nを掛けて、次のように割り引くことにした。

barometer := Σ side_variable[i] * price[i] * (1 - alpha) ** i

現在、alphaは0.001を試して運用中である。(1-0.001) ** 100 ~ 0.9であり、100件前の取引(およそ3分前)を、およそ、0.9倍している。


このbarometerが0.1を超えたら、買いが始まったとして買い、-0.1を下回ったら、売りが始まったと見て売っている。ただし、売りの条件には、買値より高いという条件も与えている。

このロジックを採用した理由は、京都大学にいる後輩が、
「直近100件のうち、買いが多かったら買って、売りが多かったら売るだけのロジックで100万円を12月に稼ぎましたよ」
と言っていたので、試してみたくなったからだ。ただし、それはbitFlyerの提供するFXであり、今ではその戦略は通用しなくなったとも言っていた。

現在の試験運用

試験的に、1万円を元手に、0.01ビットコイン単位で売買している(現在のビットコインは73万円)

Fig.1 取引のコンソール画面















Fig. 2 bid, ask, barometerそれぞれを正規化したもの



Fig. 3 bitFlyer上での取引記録。

注意事項

100件というのは、bitFlyerのAPIで取得できる制限である。それ以上のデータを保存したければ、個人的に保存していくのがよい。

barometerについて、たとえば10を超えたら売られ過ぎだと見て売り、-10を下回ったら売られ過ぎだと見て買う方法もある。

数日間、今の運用で試したら、その逆張り運用も試してみる。


0 件のコメント:

コメントを投稿

飲食店への商品持ち込みを批判する人への反論

持ち込み商品の反対意見について反反論がある。持ち込み商品については、それはマナー違反だからと言う人が多い。商品を持ち込んでいる客がいると、注意したところでバイト代の上がらないバイト、給料の上がらない正社員は注意をし、さらに周りの客でも注意をする人がいる。彼らにその理由を聞くと、「...