なんか脳死BOTがうまいことBTCの値上がりをとらえてましt……あれ、バグってる?
こないだ作成した脳死BOT。
先日の、なんかすげえ値上がりのときも動かしてまして、こんなログが取れてました。
ずらっと並んでいるのは、値上がりに伴って上がっていくストップです。
なんか350ドルくらいの値上がりを拾ってますね。
トレールストップしゅごい。
これはBOTがどうとかじゃなくて、トレールストップがうまくハマった形ではありますが。
早速いい具合に動いてくれましたね。
小賢しいことは考えず、常に買いか売りかをランダムで出す脳死BOT。
今回のような意味不明な値動きも5割の確率で対応できます。
当たり前ですけど。
仮に裏目に出たとしてもそもそもストップ注文なので、よっぽどのことがなければ大負けはありません。
やはり勝負弱い僕としては、変に裁量で注文するよりこっちのほうがよっぽど勝てる気がします。
バグってる模様。
ただ、注文画面を見たらよくわからないことになってました。
なんか注文が積み上がっている。
(入れている金額が少ないので、サイズは常に1になります)
なんでだろう……となってこの記事を書いていたのですが、書いているうちにある程度事象が整理できてきました。
ストップだけ出すとき。
あれですね。
ストップだけ出すとき、ポジションに対して逆方向の注文を出そうとしているのですが。
いままでポジションだと思っていたものはただのバランス(所持しているBTCの数量)だったので、常にプラスになっていたようです。
つまり直前の判定が常に買い注文と判定される状態だったということですね。
だから売りのトレールストップがどんどん積み上がっていったのか。
なるほどなるほど。
馬鹿ですか……。
ポジションの調べ方。
というわけで、そもそも今まで書いてきた記事のなかでポジションを取得する方法が出てきていないことに気付きました。
どういうことなの……。
調べたところには、private_get_position()
という関数があるようです。
配列で返ってくるので一瞬わからなくなりますが、こんな感じで使えます。
>>> bitmex.private_get_position()[0]['currentQty']
1
こちらは冒頭でも書いたBOT作成まとめ記事に追記してます。
ついでに
全体的に見直して、以下の変更を加えてみました。
ストップでポジション全決済。
amountをNoneにして、Paramに'execInst': 'Close'
を指定するとできるみたいです。
これでもしポジションが積み上がっても大丈夫です。
まあ、今回の変更でそういう事態にはならなくなったはずですが……。
noteにも書いてます。
コード全体をこっそりと記載してみてます。