前回の投稿で、ボットのサンプルデータとして、Zaif の1日分のビットコイン価格チャート(10秒ごと)を収集しました。今回は、これを元に、売り/買いを判断する、ごく単純なプログラムを作成してみます。
※他のボット作成に関する投稿はコチラ
※取引所のAPIに関する投稿(サンプルあり)はコチラ
自動売買のロジックを考えよう!
要するに、安く買って高く売ればいいわけですから、チャートの谷底で買って、山頂で売ればいいわけです。実際は10秒後の価格は分からないので、きっかり頂点(谷底)は分かりません。よって、次のロジックで判定する事にします。
10秒前は下降してた価格が今上昇してたら、ほぼ谷底なので買い
価格の変化量は次の式で求めます。これは差分近似という数値微分の手法です。
今の価格 - 前回(10秒前)の価格 = 変化量
変化量>0のとき上昇
変化量<0のとき下降
変化量=0のとき変化なし
先の判定ロジックは、変化量を使って次のように表現出来ます。
10秒前の変化量≦0 かつ 今の変化量>0 のとき、(ほぼ谷の底なので)買い
ここまで来れば、プログラムに落とし込むことができます。
サンプルデータで仮想的に自動売買してみよう!
先述のロジックを組んで、サンプルのチャートデータで仮想的な売買をしてみました。売りは緑の点、買いは赤の点で示しています。
小さな山と谷を拾ってしまい、かなり無駄な売買をしているのが分かります。
自動売買ロジックの評価基準を決めよう!
ビットコインを10個まで買える資産を持っている前提で、チャートの買いポイントでビットコインを1つ買い、売りポイントで買ったビットコインを全て売る、という仮想取引をした場合の収支を計算してみました。
仮想取引の結果は…
売りポイント数:1926
売り収益ポイント数:391
最大購入コイン数:6
総収益:3890円
ビットコインを10個まで買えるので、買いポイントが連続すれば10個までビットコインを買えるのですが、最大購入コイン数は6にとどまってます。ビットコイン1つが約12万なので、約72万運用したことになります。
意外なことに、3890円の収益を上げています。ただし、この結果は手数料0%で計算したものです。(2017年3月時点でZaif の売買手数料は0%です)
手数料1.5%として計算すると、次のようになります。
売りポイント数:1926
売り収益ポイント数:1
最大購入コイン数:6
総収益:-70万6212円
総収益 -70万?…ダメだこりゃ…実際は現物取引しかしないのでマイナスにはなりませんが。
ここは自分に厳しく、手数料0.15%の仮想取引の結果を、自動取引ロジックの評価基準にしたいと思います。改良しなくちゃ…
↓↓次回、ちょっとだけロジックを改良してます。
ビットコインのボット作成(その3)~ トレンドに乗ってみる