【BitMEX】ccxtのcreate_orderで使えるordTypeとexecInstを調べて記事にする試み

BitMEXの勉強です。
前段はこちら。

FXで資産を吹き飛ばした経験はあるくせにまともに取引した経験はないので、ちゃんと勉強しておきたいなと思うわけです。

ordType

こちらのサイトの翻訳みたいな感じです。

order type。

以下の種類がある模様。

Limit

orderQty(数量)とprice(価格)を指定して注文します。

Market

priceの指定なしに、現在の価格で買えるだけ買います。
が、もし価格が上がりすぎて証拠金が足りなくなった場合、その時点で注文がキャンセルされます。

このへんまではわかるんですけど……。

MarketWithLeftOverAsLimit

なにこれ。

Marketの残りはLimitとして残す?

ああなるほど。
大きな注文の場合の話ですね。

通常のMarketの場合は、数量が足りずに注文がすべて成立しない場合、どんなに不利な方向に値段が動こうとも市場価格を追いかけてすべての注文を成立させます。

一方でこちらは注文できる数だけ注文して、成立しなかったぶんは指値として残すという注文のようです。

どんどん価格が上がっていくときなどで買えるなら買えるだけ買いたいけど、変な価格で掴まされることは避けたい。
みたいな注文ですね。

Stop

orderQtyとstopPx(ストップ価格)を指定します。
stopPxに市場価格が到達すると、注文を発動します。

ストップなので、売りならstopPxより低くなると注文が発動します。
注文を出した段階では証拠金は必要ではないので、ストップが発動した際の証拠金の量には注意が必要とのこと。

手仕舞うときは後述するexecInstにCloseを設定するといいみたいですね。

StopLimit

ほぼStopと一緒ですが、MarketではなくLimitで注文が出されます。
つまり、stopPxの0.5ドル上とかに注文を出すことで、手数料をケチることができます。

MarketIfTouched

Stopの逆バージョン。
指定した金額まで上がったらMarketで注文して利確することができます。

必要なパラメータが書いてないので、Stopの逆バージョンをこう呼ぶ、ということのようです。

LimitIfTouched

StopLimitの逆バージョン。
最初からLimitで良いような気がしてくるんですけどこれ。

execInst

Execution Instructions。
注文に際して、様々な命令を指定できるっぽいです。
注文画面に表示されてるチェックボックスの部分ですね。

複数の命令を指定したい場合はカンマで区切ります。

ParticipateDoNotInitiate

別名Post Only Order。
Takerになる場合は注文をキャンセルします。
手数料をとことんケチりたい人向け。

MarkPrice, LastPrice, IndexPrice

デフォルトはMarkPrice。
Stop系とIf touched系のトリガー条件で参照する価格を指定できます。

……って言われてもそれって違うの?

みたいな顔になるんですけど。

なんたらPriceについて

みんな大好きビットメックスフリークを見てみます。

LastPriceはそのまんま、最後に取引された価格。

IndexPriceは指標に使ってる他の取引所の価格。

MarkPriceは上記の価格からなんかいい感じに算出した価格。

というわけでLastPrice以外はいまいちピンときませんね。
とはいえMarkPriceというのはロスカットとかの基準になる値のようなので、デフォルトがこれになっているってことみたいです。

一瞬だけ極端な価格になってすぐ戻ってくる可能性のあるLastPriceよりもマイルドな値になることが多いので、ロスカットの基準をぎりぎりまで追い込めるとかそんな意義があるようですね。

それが良いことか悪いことかは割と判断に悩むところですが……。

ReduceOnly

ポジションを増やさず、減らすためにのみ動く注文です。
他の注文が先に成立したことでポジションが減った場合にも、そのポジションを更に減らす方向に注文が修正ないしはキャンセルされます。

複数のReduceOnly注文が重なった場合、少ない注文から成立していきます。

Close

この注文の機能は2つ。

1つは確実にストップを行うため、必要に応じて同じ種類の他の注文をキャンセルするというもの。

そしてもう1つは、自動的に注文の数量がポジションと同じ値になるというもの(orderQtyを指定しない場合)。

そんな感じ。

というわけでBitMEXのAPIのパラメータを見てみたりなんなりしました。

ストップ絡みでの設定が多いですね。
ストップはトレーダーにとっての命綱みたいなものですから、きちんと把握しておきたいものです。

ちなみにサンプルコードとかでこの辺りのパラメータをしれっと使うことがあるはずなので、そういう意味でも把握しておくとよさそうです。

コメント

  1. まとめがわかりやすく参考にさせていただきました!

    execInstのCloseについて質問なのですが公式では全決済時に使用、oderQtyを入力しないで使うとのことですが
    参照:https://blog.bitmex.com/ja_jp-load-shedding-and-close-execinst/

    type='StopMarket',
    side='Sell',
    amount=,
    price=None,
    params={ 'stopPx': 6397,
    'execInst': 'Close'
    のように入力しないで実行しようとするとエラーが出てしまいます。amountに数字を入力して実行するとexecInstにCloseをつけてもエラーが出ず注文が通るのですが。これでは正しくないのではないかと疑問に思っています。

    もしくはoderQty=amountという解釈が間違っているのでしょうか?

    Closeは使いこなせれば非常に便利だと思うので正しい使い方が知りたいです。

    アドバイスいただければ幸いですm(_ _)m

    返信削除

コメントを投稿

こんにちは