twitterを見ていたら、先日サーキットブレーカーなるものが生じていることを知りました。どうやらつよbotterの皆様は、サーキットブレーカーbot(CBbot)を作っていることがわかったので、自分も作ってみました。
そして、作ってみた感想は99.9%勝てるbotであるということです。
コピペすれば動くコードも貼ってあるので、能書きはいらねえという方は一番最後だけでもどうぞ!
bitflyerでのサーキットブレーカーのルールを確認
まずはサーキットブレーカーのルール確認です。
https://lightning.bitflyer.com/docs/circuitbreaker?region=JP&lang=ja
サーキットブレーカーは10分前の約定価格の上下20%で約定する取引が行われそうになると、取引を一時中断し、5分から板寄せを10分行って取引を開始するという制度です。
初心者は穴が空くほどしっかりとルールを読みましょう。
他とは違うルールがあるところは、それだけで収益の機会が眠っています。
CBbotが仮想通貨市場で勝てる理由
皆さんはヒゲ取りbotを作ったことはありますか?
ヒゲ取りbotは現在値よりも高め、安めに指値を出しておきロスカットや狼狽売り、狼狽買いなどで生じるミスプライス(適正価格から乖離した価格)を逆張りでキャッチして、適正価格に戻ったら手仕舞うためのbotです。
人気も高く、ボラティリティの高い局面で収益を上げられます。
指値を供給し続けることから値幅をとても大きくしたmmbotと考えることもできます。
それでは、このヒゲ取りbotの負けるシチュエーションを考えてみましょう。
これは簡単で、指値を貫通して逆方向に大きく伸びてしまうことです。
例えば、現在値から5%も上で約定するのはミスプライシングだろうと掴んだら、そのままズルズルと価格が上がり、10%上で泣く泣くロスカットするような状況です。
(ヒゲ取りを試した方は、この状況に一度は必ずなったことがあるはず!)
しかし、サーキットブレーカーのルールを理解していれば、ヒゲが必ず止まる壁が上下20%の位置に存在することがわかります。
つまり、20%よりも少し手前に指していればロスカットを巻き込むような暴騰、暴落のミスプライスをキャッチでき、貫通しそうになれば取引所が取引を規制して、適正価格に板寄せしてから注文が開始されます。
当然その際には他の取引所相当の適正価格に戻っているはずなので、ポジションを手仕舞えば20%近くの値幅を手にすることになります。
負ける0.1%はなになのか
0.1%と書いていますが、恐らくもっと確率は低いであろう負ける可能性について検討します。
まず王道として考えられるのは、ミスプライスではなく、実際に10分以内に20%以上の値が落ちるということです。
板寄せしても板が集められず、何もできないということが起こり得ます。
有象無象の草コインではハッキング等によってこれくらいの変動が日常茶飯事かもしれませんが、ビットコインに関してこの可能性は限りなく低いのではないでしょうか。
もう一つはbitflyerのシステムエラーやルール変更です。
遅延によって希望のオーダーが通らなかったり、最近のSFDルール変更のように、サーキットブレーカーのルール変更が行われることも十分ありえます。
ただ金融庁が目を光らせているはずなので、bitflyerといえども無理なことはしてこないでしょう。この世に絶対という言葉は存在しませんが、限りなくリスクの低い賭けだと考えられます。
実際のサーキットブレーカーの動き
2023年の7月22日に起きたサーキットブレーカーを見てみましょう。
17時のbitflyerの強制ロスカットに合わせて大きな下落が起こっています。
最安値は3,746,388円をつけていることがわかります。この10分前の足の終値は、4,634,036円であり、3,746,388/4,634,036=0.8084….とおよそ19%の位置でヒゲが止まっているのがわかるかと思います。
そしてサーキットブレーカーのルールを知ってbotを動かしていれば、375万円あたりでキャッチすることは十分に可能であったはずです。
CBbotコード公開
それではこのヒゲをキャッチするためのコードを公開します。
数行の簡単なコードですが、勝率99.9%というのに反論がある方は少ないのではないでしょうか?
import ccxt
import datetime
import time
bitflyer = ccxt.bitflyer()
bitflyer.apiKey = "apikey"
bitflyer.secret = "secret"
symbol = 'FX_BTC_JPY'
bitflyer.privatePostCancelallchildorders({'product_code': symbol})
while True:
closest_diff = 1000000000
closest_num = 0
# 現在のUNIXタイムスタンプを取得
current_time = datetime.datetime.now().timestamp()
# 10分前のUNIXタイムスタンプを計算
ten_minutes_ago = current_time - 600
# 約定履歴を取得
trades = bitflyer.fetch_trades(symbol, limit=500)
for i in range(len(trades)):
time_diff = trades[i]["timestamp"]-ten_minutes_ago*1000
if abs(time_diff) < closest_diff:
closest_diff = abs(time_diff)
closest_num = i
past_price = trades[closest_num]["price"]
buy_price = int(past_price*0.8)
sell_price = int(past_price*1.2)
# 指値注文を発注
order1 = bitflyer.create_order(symbol, "limit", "buy", 0.01, buy_price)
order2 = bitflyer.create_order(symbol, "limit", "sell", 0.01, sell_price)
time.sleep(10)
# 全ての注文をキャンセル
bitflyer.privatePostCancelallchildorders({'product_code': symbol})
プログラムを動かすと指値が注文に現れました。
このコードを見て「おやっ?」と思った方はここまでで大丈夫です。
どうぞお帰りください。お読みいただきありがとうございました。
仮想通貨bot改善のコツ
もし、さきほどのコードを読んでなにも感じなかった方は続けてお読みください。今のあなたに足りていない部分かもしれません。
実はこのコード、このままでも十分に動くのですが、もっとよくする方法があります。
私がとえりあず書きなぐったのが上述のコードであり、botを始めたてのころに書きがちなコードだと思います。
noteではこのコードをよくよく考えて作った改善版と、その改善に至るまでに何を考えたか記してあります。
このbot作りにおけるtipsのようなものは、CBbotだけではなくmmbotや方向あてbotにも大事なのではないかと考えています。
もちろんこの記事のコードを動かしても勝てます。
そのため、noteの記事はゆくゆく自分でbotを作っていきたいという方に向けた記事になります。
botを始めたてで、ブラッシュアップするのにどのようなポイントを考えればよいか分からない方、コーディング技術はあるのになぜか勝てない方は、botを作るというよりもbotについて考えるということが足りてないかもしれません。
目次だけでも考えるポイントが読み取れると思いますので一度ご確認ください。
【勝てる仮想通貨bot】CBbotをブラッシュアップしながらbot作りの勘所を掴む
2024年1月に実際勝てました
CBbotをご紹介して、第一戦目の2024年の1月にCBbotが実際に動いたのでその時の様子をご紹介します。
こちらがその時のチャートになります。
650万円超で推移していた価格が急落し、534万円をつけている様子が確認できます(オレンジ点線)。私のCBbotは539万円でしっかりとキャッチできており(黄色点線)、CBbotの面目躍如といったところではないでしょうか。
少し値段が戻してから決済を行ったのですが、いれていた100万円は+108,,708円と、この一回で+10%超の資産増加をえることができました。
noteで公開してあるコードと全く同じコードを実運用しているため、ご購入者でコピペで動かしている人も、同様の結果をえられたのではないかと、嬉しく思っています!
投入資金に勝ち額は比例するので、もしかしたらパーセントは同じでも、総額は私なんかよりもたくさん増やしているかもしれませんね(うらやましいいいいいいいいいい)
まだCBbotを動かしていない人は今すぐ動かしてください!
次のCBは1日後に、いや1時間後にくるかもしれないのでしっかり備えておきましょう。