※親会社であるFTXが破綻しFTX JPも利用不可となりました。本記事はあくまで過去のものとして備忘録として残しておきます。(2022/11)
FTX JPにはQuant Zone (クオンツゾーン)という簡易的なbotを作成できるツールが用意されております。
これはプログラム言語を作る必要が無く、Webブラウザ上でポチポチ押すだけで簡易的な自動売買プログラムを作成することができるのだ。
クオンツゾーンの始め方と基本的な動作 – お客様サポート(ヘルプ・お問い合わせ) | FTX Japan
https://help-jp.ftx.com/hc/ja/articles/7964988268697
上記動画もあるので、使う前に軽く見るとイメージつかむの楽かもしれない。
補足注意
クオンツゾーンは設定した設定を30秒~1分程度に1回ずっとチェックし続けます。ググると15秒毎と参考サイトとかにありますが、現在のFTX JPは30秒~1分間隔で自動実行されるということを覚えておこう。上記FTX JPの動画でもそう説明してるし。
自動実行の問題として、条件に一致すると一生実行し続けるということです。なので、何かしらのストッパーは必須と考えて組みましょう。
簡単なクオンツゾーンの機能説明とか
・トリガー
まずトリガー。ここに条件を書いて、"true(真)"になったら実行だ。上記例だとBTC-PERPの価格が18800ドル未満になったら発動します。上記例だと18800ドル未満になったら30秒~1分毎に発動し続けるのでご注意を。
で、ここで注目すべきは画像下の「現在の値:false」の部分。これが動的に結果を返してくれるのですごいやりやすい。計算とかも数値が表示されるので、起動しなくても結果が分かるのは凄い楽。Webブラウザ上でこれができるのはかなり嬉しい。
更に注目すべきは右側の「?」ボタン。関数の説明がずらっとでるので、ここに書いてあることは一通り実行できたりする。
想像の10倍使いやすかった。メッチャ便利。
ということで続いてアクション。
・アクション
トリガーが"true"になったらどのようなアクションを起こすかを決める。
タイプはトレーダーでもないなら基本は「カスタム注文の発注」で進めることになる。注文タイプは指値とか成行とか適当に選べる。で、上記例だと指値注文は
「現在のBTC-PERPの価格より-50ドルの部分で指値する」
というルールになっている。こんな風に、動的に結果を返すことも可能なのだ。
で、アクションは複数設定できたりするので色々いじってみると楽しいと思う。ただ、慣れないうちはサブアカウントで試した方が絶対良い。誤発注したら目も当てられないからだ。(※かくいう私は面倒なのでメインアカウントでやってる。将来火傷しそう)
後不安なら「Post-Only」にチェックを入れておくといいでしょう。指値するときに現在価格よりも上の設定を入れると注文がキャンセルされるので、誤発注対策および成行注文になって手数料を損することを防ぐことができます。
とうぜん、指値部分がヒットしたら成り行き注文したい場合は「Post-Only」は外しておくべきでしょう。
=======
ここからは私個人のメモ。やることをまとめる。
私自身はビットコインガチホ勢なのでトレードする気がなかったため使っていなかったのですが、先物取引等を使っているときに
「ウォレットのUSD残高がマイナスになると証拠金を強制的にUSDにする」
という仕様があるため、これをなんとしてでも阻止したいと考えています。FTX.com時代は無かった気がするのになぁ・・・
以下FTX JPのヘルプページ。
パーペチュアルで使用する証拠金について – お客様サポート(ヘルプ・お問い合わせ) | FTX Japan
https://help-jp.ftx.com/hc/ja/articles/4588827371801
証拠金転換(コラテラル・コンバージョン)
* 証拠金転換はパーペチュアルのポジションを保有している時に実行されます。
FTX JapanはUSD残高がマイナスの場合、もしくは以下の条件を満たすときはUSD以外の証拠金をUSDに転換します。
- 毎週木曜日午前9時時点でUSD残高がマイナスの場合
- USD残高のマイナスが3万ドルに達した場合
FTX Japanは次の順番で、USDに変換します。
JPY>BTC>ETH>SOL>FTT**FTTを証拠金として有効にしている場合のみ
証拠金転換(コラテラル・コンバージョン)
FTX JapanはUSD残高がマイナスの場合、もしくは以下の条件を満たすときはUSD以外の証拠金をUSDに転換します。
- 毎週日曜の午前9時時点でUSD残高がマイナスの場合
- USD残高のマイナスが3万ドルに達した場合
※2022/09/12 更新
公式ヘルプサイト表記が木曜日ではなく日曜日になっていたので修正
「FTX JapanはUSD残高がマイナスの場合、もしくは」という表記なので、実質マイナスになったらドル転が実行されるということに読めとれます。ftx.com時代は純粋にマイナス3万ドルに達しなければドル転しなかったので本当に残念。ただ、他社日本の取引所もそういうルールのところがあった気がしたので日本特有のルールかな?と思ってる。本当に残念ですが。※気になるので一応サポートに問い合わせ中だったりする。
話が脱線しました。
もし本当にマイナスになった時点でドル転するなら厄介です。
そして恐らく、証拠金をUSDに変換する際のレートは販売所の価格帯になり、成行注文の手数料が取られて結構ガッカリするだろうなぁと思っています。※詳細はヘルプページに載ってる気がするけど場所分からなかったので割愛
※2022/9/2 追記
ロスカット発生時、通常の成行注文(テイカー)の手数料以外は発生しないそうです。今回のマイナスUSDの時もこれに該当すると思います。以下公式し後のヘルプより引用します。
追加証拠金制度とロスカットルールについて – お客様サポート(ヘルプ・お問い合わせ) | FTX Japan
https://help-jp.ftx.com/hc/ja/articles/5258951638297
ロスカットの際の手数料
なので、「毎週木曜日日曜日午前9時(日本時間)」までに自主的にUSDをマイナスからプラスにする必要があるのでした。
※2022/09/12 更新
公式ヘルプサイト表記が木曜日ではなく日曜日になっていたので修正
そこで今回はこのクオンツゾーンを使って自動で対応したいと思います。
個人的に注意したい点
- BTC-PERPは最低取引額が0.001BTCからで、現物BTCは0.0001BTCから可能であるため、そこを考慮して設計する必要がある
- クオンツゾーンの時間は9時間遅れているため、日本で実行する場合は-9時間で考える必要あり。"hour"とか使う場合は日付またぎにも注意
注意を踏まえつつ、やることを決めます。時間表記は日本時間から9時間引いて考えて今s。
やること
- 水曜日12時~23時59分の場合に実行するようにします。
- 該当アカウントのUSD残高が0未満になっている場合、その分だけBTC-PERPショートとBTC現物を売却してUSD残高を0にしつつ、BTC-PERP枚数とBTC現物枚数を調整します
- USDのマイナス額が0.002枚以上なら、各々0.001BTCずつ成行で解消する
- USDのマイナス額が0.001枚以上0.002枚未満なら最後に良い感じでUSDが10ドルぐらいになるように成行売買
- 0.001枚以下の場合はBTC-PERP側が取引できない(※最低取引量が0.001なので)ので、あきらめて木曜日朝8時になったらUSDマイナス分の現物を売る。ただし、条件として「水曜日23時55分~23時59分」とする。このルールは「強制決済」される手数料がもったいないから実行するに留める程度の軽いルールとする。
※2022/09/12 追記
本ルールは以前ヘルプサイトに載っていた「木曜日」を元に作成していますが、現在USDマイナス分強制決済される日は「日曜日」なのでご注意ください。
ここまでやる必要は無いと思いますが、とりあえずこんな感じで。
結局プログラミングというものは日本語で書けるのだ。後はこれを各プログラム言語に落とし込むだけ。今回はそれが「クオンツゾーン」になっただけ。※難しいプログラムが組めない筆者の感想
1.大きなマイナスが出てたら0.001BTCずつ決済
FTX JPは手数料は割合なので少ない金額で回数増やしても一回の取引で大きな額でも変わらないので、少額ずつやって注文を通りやすくする。なので0.001BTCずつ清算していくルールを作ります。
balance("USD")は「現在のアカウント」のウォレットのことです。サブアカウントのUSD残高は見ないので注意。
で、今回のルールの条件は4つ。
- ウォレット内USDが0未満である - balance("USD") < 0
- (ウォレット内USD+5ドル)を現在のBTC/USDの価格で割った値が0.002枚以上である。 - (abs(balance("USD"))+5) / (price("BTC/USD"))
- 水曜日である(day_of_week() == 2で水曜日) - day_of_week() == 2
- 20時~23時59分59秒である - hour >= 20
※2022/09/12 追記
現状「日曜日」がトリガーとなったので、day_of_week()は5の「土曜日」を指定した方が良いです。
こんな感じ。0.001と少しずつやるので少し早めの20時にしました。0.001ドルは3000円ぐらいなので、4時間ぐらい1分発動として72万円の損失があったら対応できるでしょう。1週間毎に常に清算することになるし。BTC-PERPでショートしている額次第ということで。
「2.」で5ドル追加してるのは価格変動対策によるなんとなく5ドル増しにしてる感じです。気分。
で、アクションはこんな感じ。買いと売りの2つのアクションを設定。
これは両方とも「成行注文」です。本当は片方「指値注文」にして、それが通ったことを確認してから反対側を「成行注文」とすると片方だけ手数料を節約できますが、アクション毎に条件を設定することはできないので残念ながら両方「成行注文」で。
変数とか使えばやれないことは無いかもだけど複雑化するので誤作動の方が怖いのでこっちにする。最悪、手数料稼ぎたいなら水曜日前に大きな赤字は手動で決済すればいい。
2.小さなマイナスが出てたら必要枚数キッチリ決済する
次は単に、USDのマイナス額が0.001枚~0.002枚の間ぐらいを行ったり来てりしてる場合を条件にしています。何をやるかというと、そこそこキッチリした枚数を清算したいから細かい条件出した。ケチなんです私。
で、アクションはさっきとそんなに変わらないけど、注文サイズ(枚数)だけちょっと違う。
先ほどの注文サイズはBTC-PERP最小の0.001固定でしたが、今回は0.001~0.002の間だと分かっているので、きちんと残量を計算してキッチリ注文する形にしています。こうすることでギリギリまで指値注文で行えるので手数料がお得になるという算段。
で、最後に0.001枚以下の対応も入れます。
3.小さすぎるマイナスはあきらめて現物売りだけやる
それでもUSDがマイナスになるのですが、強制決済されても癪なので、ギリギリまでルール化しておきます。最後のあがきは指値注文にします。
時間の条件で、hour == 23 と minute >= 55を入れました。これで水曜日23時55分~59分の間だけ動きます。
アクションとしては、今回指値で対応するので次のようにしました。
現在の価格から5ドル上で売り注文にしています。最悪注文が通らない可能性はありますが、少額なのでまぁいいでしょうという感じ。結局強制決済されたら成行手数料を取られるはずなので。多分。
で、これだけでもいいのですが、23時55分から5分もあるので、何回も条件に引っかかると現物売りまくり状態になってモヤモヤするので、指値注文したら1分間一時停止するアクションも追加しました。
これで1分~2分間隔ぐらいで実行されることを期待しています。多分。クオンツゾーン自体がランダムな時間帯に実行なのでその辺の細かい部分はシステムに任せる。
ということで、3つのルールを作成しました。
ここまで作っておいてアレですが、このルールは未検証です。
だって今暴落してるから使う機会が無い・・・
まぁ多分動くやろな~って感じで書いてるので、参考程度にとどめておいた方がいいです。マジで。
ということで、こんな感じでクオンツゾーンはトレード以外にも、決められたルールを売買するときに非常に重宝するなと思いました。他にもアイディアがあったらどんどんルール追加していくのも楽しそうです。
ただ、作り過ぎると管理が大変になりそうなので自身が管理できる範囲で取り組むか、サブアカウントでやるのが無難でしょう。
恒例のリファURL物乞い
いつもの。そもそもここまで見てる人は普通にFTX JPの口座開設してる人しかいないので無意味だろうと思いつつも張るのでした。
私のリファラルURL、いわゆる紹介コードを張っておきます。こちらのリンクから新規口座開設をすると永年手数料が5%減りますので是非!
FTX JPは取引停止となったためリンク削除しました