[仮想通貨bot]ビットコインのヒゲキャッチプログラムは強いのか?シミュレーションで検証

自動売買

この記事でヒゲキャッチプログラムのアルゴリズムを考えました

アルゴリズム

・5分前の価格よりも3万円下落していたら、買い注文(成行)を出す

・買った時の価格を半値戻したら売り注文(成行)を出す

どのくらい勝てる(利益が出る)か気になったので、Pythonを使ってシミュレーションをしました

ヒゲキャッチプログラムは強いのか?シミュレーションで検証

ヒゲとは?

まずヒゲとはなんなのか説明します

ヒゲとは、下の図の赤丸のように、一時的に価格が下がったところです

上の図は、ビットコインの1時間足のろうそくチャートで、一番長いヒゲだと、1時間以内に、一度5,500,000円から5,000,000円に値下がりし、また元の値段に戻ってきています

ものすごい値動きであり、この値動きを掴むことができれば、短時間で資産を増やすことができるはずです

Pythonでシミュレーション

上に述べたヒゲキャッチは理想的な取引をできた場合の話で、実際はこんな上手にキャッチすることはできないと思います(ヒゲの長さが分からないから)

「ヒゲの長さがいくら以上になったら買い」、「いくら戻ったら売り」のようにルールを決める必要があります

世の中のヒゲキャッチする人たちは、どんなルールを設定をしているのでしょうか

検証するアルゴリズム

上にも挙げたように、このアルゴリズムを検証します

・5分前の価格よりも3万円下落していたら、買い注文(成行)を出す

・買った時の価格を半値戻したら売り注文(成行)を出す

シミュレーションするデータ

このデータを使ってシミュレーションをします

2021-01-24から2021-02-24の1ヶ月間の1分ごとのデータです

仮想通貨取引所bitbankの公式APIより取得しました

bitbankのAPIについて詳しく知りたい方は、この記事もご覧ください

シミュレーター作成

※ビットコイン自動売買プログラムのサンプルを載せますが、以下の点をご注意ください

注意事項

・取引における損失について、責任は負いかねます

・API Keyの流出など、セキュリティ面での責任は負いかねます

・上記以外のいかなる障害・トラブルにおいても責任を負いかねます

先ほど決めたアルゴリズム

・5分前の価格よりも3万円下落していたら、買い注文(成行)を出す

・買った時の価格を半値戻したら売り注文(成行)を出す

に従って擬似的に取引をし、売値と買い値の差額を積み上げていくようなプログラムを書きました

#パラメータ
crash = 30000

#売ったか買ったか記録しておくシグナル
signal = 0

#買った時と売った時の差額を積み上げていく
difference = 0

#最初の5分は様子見
sim_times = len(df) - 5

#取引をシミュレーションする部分
for counter in range(sim_times):
    #5分以降でシミュレーション
    the_time = counter + 5
    
    #ビットコインを持っていないなら
    if signal == 0:
        #5分前より一定額落ちているなら買い
        if float(df.at[the_time-5, "Close"]) - float(df.at[the_time, "Close"]) > crash:
            
            print("buy()")
            print(df.at[the_time, "Close"])
            
       #買ったことにする
            signal = 1
            
            #買った時の値段を記録
            bought_ratio = float(df.at[the_time, "Close"])
    

    #ビットコインを持っているなら
    if signal == 1:
        
        #買った値段の半値だけ戻ったなら売り
        if float(df.at[the_time, "Close"]) - bought_ratio  > crash/2:
            
            print("sell()")
            print(df.at[the_time, "Close"])
            
       #売った事にする
            signal = 0
            
            #差額を追加
            difference += float(df.at[the_time, "Close"]) - bought_ratio

シミュレーション結果

上のプログラムを実行し、1ヶ月の利益を計算した結果がこちらです

1ヶ月間にキャッチできた値幅の合計は、1,808,069円です

もしこのルールに基づいて1ヶ月間ヒゲをキャッチし続けたとして、0.01BTC(大体5万円)をツッコんでいたら、

0.01*1,808,069円=18,080円

より、18,080円の利益を生み出せたことになります

月利計算をすると、18,080 / 50,000 = 0.36なので、月利36%ということになります

単純移動平均で売買するプログラムだと、4年間で平均して月利10%くらいだったので、このヒゲキャッチプログラムは上出来といえます

単純移動平均のゴールデンクロス・デッドクロスで取引する自動売買プログラムはこちら

ヒゲキャッチプログラムの問題点

ヒゲキャッチプログラムがいいモデルだと分かりましたが、一つ大きな問題があります

それは、「取引手数料」と「スプレッド」です

僕が使っている仮想通貨取引所bitbankでは、ビットコインのテイカー(主に成行注文)の取引手数料は0.05%です

取引手数料が、たかが0.05%だと思いますが、ヒゲキャッチプログラムでは1日に何回も取引するので、取引手数料が結構痛いです

さらに、成行注文をすると、市場価格と実際に買える価格との間に若干の乖離(スプレッド)が生まれてしまいます

一言で言うと、ぼったくられてしまいます

これらの問題の解決策は、ズバリ注文方法を指値注文にすることなので、指値でヒゲキャッチができるような仕組みを考えていこうと思います

https://www.kinomiya.tech/blog/hige_catch_2/

コメント

タイトルとURLをコピーしました