【BTC-FX bot】botの無駄な損を減らそう
前回のnoteは最初からニッチ過ぎたなと反省したので、今回はもっと多くのbotユーザー(主にbF)向けのnoteです。
タイトルの通り”無駄な損を減らす”ことについてです。
無駄な損とは何か
まず”無駄な損”って何?ってなりますよね。損は全部無駄じゃないの?と
勝率100%のアルゴリズムでも無い限りは、損切りは必ず発生するものですよね。これは”必要な損”とは言いませんが”仕方の無い損”だと考えます。
では、”無駄な損”とは何か。それは想定外の損です。ざっくり言ってしまえば損切り以外の損です。
バグによる残りポジションだったり、遅延による損切り遅れだったり、狙っていないのにSFDを支払っていたり等々…。
どうやって無駄な損を減らすのか
botの防御力を上げていきましょう。コードを強固にしていくだけです。
以下にそれぞれの対応・対処法を記載しています。
エラー発生時
エラーが出ないように実装するのが一番ですが、エラーを完全に無くすのは至難の業ですよね。
なので、エラーが発生した場合の処理を実装しましょう。
具体的には、エラー発生時や強制終了時にLINEやメールによる通知をしたり、注文と建玉を空にする処理を入れたりですね。
LINEへの通知(LINE Notify)はとても簡単で便利なので、是非使ってみて下さい。
APIからの想定外の値
APIを過信してはいかせん。APIドキュメント通りの値が必ず来るとは限りません。
なので、レスポンスが正しいか確認しましょう。
例えば、新規注文をしたときのレスポンスに”child_order_acceptance_id”が存在するか確認し、存在しない場合に注文失敗時の処理をしたり、場合によっては一定時間後に再注文する、など。
注文遅延
bFユーザーの皆さんが頭を悩ませているであろう問題ですね。
これにより注文があとから湧いてきたり、通ってるのかキャンセル出来たのかわからなかったりとても恐ろしい現象です。
時間軸を長めのアルゴリズムにすると影響はあまり受けにくくなりますが、解決策とは言えませんよね。
完全な解決策ではありませんが、取引所の状態を確認して、一定以上なら一次停止するような実装がおすすめです。
簡単なのは注文前に取引所の状態をAPIで取得する方法ですが、これだと注文するまでに時間のロスが発生してしまいますよね。
そのため私のbotでは、サブプロセスで取引所の状態を一定間隔で取得しており、メインプロセス(注文を出すプロセス)ではその状態を確認してから注文を出す実装にしています。
(但し、頻度に気をつけないとAPIの制限にひっかかるので注意)
残りポジション
注文遅延や部分約定、並列処理している場合やIFOの両面約定などによって想定外のポジションが残っている場合があります。
一定間隔毎や決済完了時に残り注文や建玉を確認して、注文と建玉を綺麗にしましょう。
SFD
bFユーザーの皆さんが頭を悩ませているシリーズ第二弾ですね。
専用botで美味しく頂く…というのは冗談で、乖離率に応じて処理を制限するのが無難だと思います。
botのアルゴリズムや時間軸にもよりますが、値幅があまり取れない(取らない)botであればSFDを徴収されるだけのパターンは非常に痛いと思うので、SFDの境界付近5%・10%・15%・20%(-5%・-10%・-15%・-20%)は一次停止したり、プラス乖離の場合はロングを封印するなどが考えられます。
如何でしたでしょうか。そんなことわかってるよ、という方も多いとは思いますが、botユーザーの層はかなり広がっていると感じているので、参考になった方が少しでもいたら幸いです。
この記事が気に入ったらサポートをしてみませんか?