botで終値を正確に取得したい
どうもこんにちは、Salterです。botterの皆さんはこの閑散相場をいかがお過ごしでしょうか。私は、閑散相場だからと言って特に他に何かをやる気力も湧かず、儲からないbotの調整&新botの作成に消耗しております……
そんなある日、バックテストと実弾の損益曲線が結構ずれていることに気付き、何故だろうといろいろと調査していたのですが、その原因の中で実弾で取得した終値がバックテストとズレているというバグを見つけました。
・原因
取引所のapiからローソク足を取得するとき、取引所にもよりますが直近の値については確定前の値を取得することがあります。つまり、今回の原因は取得した足の終値がまだ未確定だったということになります。
・解決したい!
原因についてなんとなく推測できたので対策を考えてみたいと思います。まず思いつく解決法は、確定するまで待つということだと思います。
ということで、botの売買判定におけるインターバルを適当に調整してみました。これでいけるだろ常考!!と考えていたのですが、インターバルを伸ばしてみてもなかなか終値が正確に取得できません。しかもよく考えたらインターバルを伸ばすほど他プレイヤーよりも売買が遅れてしまうので無駄に間を開けるだけというのは結構悪手であることに気付きました。(最初に気付けって感じです)結局インターバルをただ闇雲に調整してもあまり効果は見込めませんでした。しかし、解決するにはインターバルを調整するのが一番であることは確かなのでもう少し考えてみました。
・解決した?
上記の事から、apiでkline(ohlc)を取得するやり方ではどうしても出遅れるため、直近の約定履歴を取得し、timestampが更新されたデータであることを確認して、更新直前の価格を取ってくればいけるかな?とか思って試したところ、今のところおおよそバックテストの値と一致しています。
今回の事から、あまり本質的ではないことでもしっかりと実装してやらないと結構バックテストと乖離してしまうということが分かりました。もし、もっと簡単に正確に終値を取得できるよー!というbotterの方がいらっしゃったらtwitterやコメント欄で意見をお待ちしてます。最後にhoheto氏のtweetを見て終わりたいと思います。ご覧いただきありがとうございました。