はじめに
ヒゲキャッチプログラムを作り、実際に動かしてみました
順調にヒゲをキャッチし続けていましたが、途中でヒゲのミスキャッチをしてしまい、売るタイミングを逃して利益を食ってしまいました
ヒゲのミスキャッチが課題です
ミスキャッチを防ぐ=損切り
ヒゲをミスキャッチしたら、諦めるのも一つの手です
白丸のところで偽物のヒゲをミスキャッチしても、潔く損切りをして次のヒゲを狙いにいけば、オレンジのようなヒゲをとってチャラにすることができると思います
損切りをした場合のシミュレーションをしてみようと思います
シミュレーション
はじめにやったシミュレーションの条件はこんな感じです
・5分前の価格よりも3万円下落していたら、買い注文(成行)を出す
・買った時の価格を半値戻したら売り注文(成行)を出す
このシミュレーション条件に、
・そのままさらに3万円下落してしまったら売る
の部分を加えてシミュレーションし直してみようと思います
プログラムにこの条件分岐を加えました
#価格がそのまま落ちてしまったら
if bought_ratio - float(df.at[sim_time, "Close"]) > 30000:
#ロスカットの回数を数える
loss_cut += 1
signal = 0
#差額を追加
difference += float(df.at[sim_time, "Close"]) - bought_ratio
シミュレーション結果
1ヶ月で101,298円の値幅を取れたことになります
損切りをしなかった場合は1,808,069円の値幅が取れていたので、性能が下がっている??と言えます
パラメータを最適化する
30,000円落ちたら損切りをするプログラムにしていましたが、
30,000円ではなくて、それより小さい場合(100円、1,000円、10,000円、、)や、それより大きい場合(50,000円、100,000円、、、)だったら結果が変わってくると思います
いくら落ちたら損切りするのかをパラメータにしてシミュレーションをしていこうと思います
パラメータの最適化①
ロスカットをビットコインの値段が1,000円、5,000円、10,000円、50,000円、100,000円、500,000円、1,000,000円落ちた場合の7パターンをシミュレーションし、グラフにしました
縦軸が利益、横軸がいくらまで落ちたら損切りするかのグラフですが、面白い形になりました
このグラフを見ると、これらのことが言えると思います
・損切りするならば早い方がいい
・損切りをしないなら、しないほうがいい
中途半端な損切りが一番いけないと言えると思います
損切りをするならいくらで損切りをするのがいいのかシミュレーションしてみました
パラメータの最適化②
同じように、ロスカットをビットコインの値段が1円、5円、10円、50円、100円、500円、1,000円落ちた場合の7パターンをシミュレーションし、グラフにしました
やはりロスカットするなら早めにした方がいいと言うことがわかりました
なぜこのような結果になるのか
なぜ、早めにロスカットをした方がいい結果となるのか考えてみました
その理由は、ズバリ、ヒゲをミスキャッチした時の損失が小さくなるからだと思います
例えば、下落幅が150円でロスカットする場合、もしミスキャッチをしたとしても、下落幅の150円分の損失しかありません
0.1BTC(大体50万円くらい)運用していたとしても、
下落幅の150[円/BTC] × 0.1[BTC] = 15[円]
より、15円分の損失しか出ません
しかし、いい面だけではなく、デメリットもあります
損切り金額を小さくすると言うことは、キャッチしたいろうそくの長さをピンポイントで決めることになります
作ったヒゲキャッチプログラムでは、150円でロスカットする場合、30,000円〜30,150円のヒゲのみをキャッチすることになります
長さが30,000円〜30,150円のヒゲしかキャッチできないことになるので、ヒゲの癖(長さがいくらの場合が多いのかとか、何分足だとヒゲの長さが安定してるのか)を見抜くことが大切だと思いました
ロスカットはいくらがいいのか
ロスカットを、下落幅150円と仮定してきましたが、いくらが妥当なのかを考えます
制約条件はこの二つです
・できるだけすぐにロスカットをしたい
・早すぎても指値注文が追いつかない
指値注文が追いつかないことがネックになります
作ったヒゲキャッチプログラムでは、15秒に1回しか注文を出せないので、暴落に対応できません
例えばこのろうそくの場合、5分間で60,000円の傾きで急落しています
1分間で12,000円、15秒で3,000円ということになります
プログラムは15秒に1回しか動かないので、買い注文が約定したことがわかってから150円下に指値のロスカット注文を入れている間に、3,000円暴落することがあり得てしまいます
この解決策として、できるだけプログラムの更新頻度を高めることが挙げられ、現実的に1秒に1回更新にすれば、急落しても1秒で200円くらいなので妥協できます
まとめ
文字数が多くなってしまいましたが、まとめると、やるべきことはこんな感じです
・買い指値(ヒゲキャッチ)が約定していたら、30,000円上だけでなく、200円下にもロスカットの指値(逆指値?)を出す
・1秒に1回約定しているか確認できるようにする
・ヒゲの癖を見抜く
コメント