デリビットの先物取引APIを改革し,オプションの定量取引に適応する

作者: リン・ハーンリディア作成日:2022-12-28 10:02:51,更新日:2023-09-20 09:15:09

img

デリビットの先物取引APIを改革し,オプションの定量取引に適応する

現在,多くのデジタル通貨先物取引所があります.しかし,先物衍生品として,デジタル通貨オプション取引の市場には少数取引所があります. Deribit と BitMEX はオプション取引をサポートしています.定量取引の分野では,オプション取引には,いくつかの検索された資料で言及されているオプション戦略など,さまざまな戦略があります.

タイプ
戦略の方向性
変動戦略:
ヘッジ戦略:

引用したリンク

オプション取引戦略を準備するには,まずしっかりとした基礎を築き,注文を出し,ティッカーを取得し,注文をキャンセルし,ポジションを取得するなどの基本的な操作に精通する必要があります.戦略書き方は,現在もFMZ Quant Tradingプラットフォームを使用していますが,FMZ Quant Tradingプラットフォームは,仮想通貨取引,コントラクト取引,レバレッジ取引をサポートしています.オプション取引に関する情報はあまりありません.デジタル通貨オプション取引に精通するために,FMZ Quant Tradingプラットフォームを使用する方法について紹介するために,DerBit Quant取引所を例に挙げましょう.

デリビット関連資料

API ドキュメント:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrumentシミュレーションボット:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument

FMZ Quant Trading プラットフォームの設定は,実際のボットを設定するのと同じです.

img

オプション取引について理解すべき4つの基本的な概念があります.

- 実行日: オプションの長方と短方はこの日にオプション契約の納入を完了します. - 実行価格: 実行日に,オプションの長および短い当事者は,実行価格でオプション契約の配達を完了します. -プレミアム:つまり,オプションの価格です.スポットと先物と同様に,オプションはオプション価格とオプション価格で報じられます. オプションの流動性は通常先物・先物よりも低いため,オプションとオプションの価格差は大きくなる可能性があるため,ここで注意を払う必要があります.取引後,取引価格はオプションロングポジションのコストで,この時点でロングポジションは権利 (オプションを行使する権利) を得ます.ショートオプションは,プレミアムを受け取る当事者として義務を追加します.ロングオプションが権利を行使することを要求すると,ショートオプションは協力する必要があります. - コール・ポットオプション: コールオプションとは,オプション・ロングポジションは,オプション・ショートポジションに特定の演算日に特定の演算価格で与えられたビットコインを購入するよう求め,ショートポジションはロングポジションと協力する義務があることを意味します.

ティッカーの取得

デリビット取引所の API 文書を読んだ後,我々は,デリビットのティッカーインターフェースをアクセスするための先物またはオプションのティッカーは,単に異なる通過の問題であることがわかります.instrument_name基本的には,あなたはインターフェースをフォローすることができます. インターフェースは,すべての要素を設定します.GetTickerオプションのティッカーを得るために.

まず,次のコードを使用してシミュレーションボットに切り替える必要があります.

exchange.IO("base", "https://test.deribit.com")

オプション契約を設定します.BTC-27DEC19-7000-P今のところ この項目は,C0050/R0050とC0050/R0050のいずれかの商品について説明します.

exchange.SetContractType("BTC-27DEC19-7000-P")

このオプション契約のティッカーを取得するためにコードを実行させましょう. このオプション契約のティカーを取得するために,このオプション契約のティカーを取得するために,このオプション契約のティカーを取得するために,このオプション契約のティカーを取得するために,このオプション契約のティカーを取得するために,このオプション契約のティカーを取得するために,このオプション契約のティカーを取得するために,このオプション契約のティカーを取得するために,このオプション契約のティカーを取得するために,このオプション契約のティカーを取得するために,このオプション契約のティカーを取得するために,このオプション契約のティカーを取得するために,このオプション契約のティカーを取得するために,このオプション契約のティカーを取得するために,このオプション契約のティカーを取得します.

function main () {
    exchange.IO("base", "https://test.deribit.com")
    exchange.SetContractType("BTC-27DEC19-7000-P")
    var ticker = exchange.GetTicker()
    Log(ticker)
}

デバッグツールを使って簡単にテストできます.

img

価格がシミュレーションボットと一致しているのがわかります

img

他のティッカーインターフェースは同じ方法で呼び出されますが,ここで繰り返しません. 注: オプション取引はあまり活発ではありません. 時には購入または販売のオーダーはありません. この時点で,FMZ Quant Tradingプラットフォームは,底辺の0の値を検出し,エラーを報告します.SetErrorFilter("Invalid ticker")このエラーを無視し,関数を使用します.GetRawJSON似たような機能を達成するための例を書きます.

function init() {
    SetErrorFilter("Invalid ticker")
}

$.GetTicker = function(e) {
    var ticker = e.GetTicker()
    if (!ticker) {
        try {
            var ret = JSON.parse(e.GetRawJSON())
            return {
                Info : ret,
                High : ret.result.stats.high,
                Low : ret.result.stats.low, 
                Buy : ret.result.best_bid_price,
                Sell : ret.result.best_ask_price,
                Last : ret.result.last_price, 
                Volume : ret.result.stats.volume,
                OpenInterest : 0,
                Time : new Date().getTime()
            }
        } catch (err) {
            Log(err)
        }
    }
    
    return ticker
}

呼び出されるとこう書きます:Log($.GetTicker(exchange))

注文する

オーダーを出す操作は非常にシンプルで,先物取引と比較して,購入と販売の方向は2つしかありません. 注文を出すためにSell, Buy機能も使用されます.

function main () {
    exchange.IO("base", "https://test.deribit.com")
    exchange.SetContractType("BTC-27DEC19-7000-P")
    
    var id = exchange.Buy(0.017, 1)
    Log(exchange.GetOrder(id))
}

img

注文はシミュレーションボットにも表示されます

img

そしてexchange.GetOrder(id)注文情報を調べることができます.

注文のキャンセル

同じことCancelOrderフューチャー取引の注文キャンセルと同様に,オーダーキャンセルに使用されます.

img

口座利用可能な資産を取得

フューチャー取引とまったく同じです. 単に電話で取引してください.GetAccount直接機能する

交換ページの表示をシミュレートする:

img

コードを実行して取得します.

img

位置情報を取得する

カプセル化して使えませんGetPositionこの関数は,先物取引ではなく,先物取引なので,先物取引を得るのにのみ使えます. 選択肢の位置を得るには,この関数が必要になります.

API ドキュメントの位置を取得するための関数インターフェース:

img

$.GetPosition = function(e) {
    // /private/get_positions
    // currency  , kind 
    
    var positions = [] 
    var currency = e.GetCurrency()
    var arr = currency.split("_")
    var baseCurrency = arr[0]
    
    try {
        var ret = e.IO("api", "GET", "/api/v2/private/get_positions", "currency=" + baseCurrency + "&kind=option")
        for (var i in ret.result) {
            if (ret.result[i].size == 0 || ret.result[i].direction == "zero") {
                continue    
            } 
            
            var pos = {
                Info : ret.result[i], 
                Amount : ret.result[i].size,
                FrozenAmount : 0,
                Price : ret.result[i].average_price,
                Profit : ret.result[i].floating_profit_loss,
                MarginLevel : 0,
                Margin : 0,
                ContractType : ret.result[i].instrument_name,
                Type : ret.result[i].direction == "buy" ? ORDER_TYPE_BUY : ORDER_TYPE_SELL,
            }
            
            positions.push(pos)
        }
    } catch (err) {
        Log(err)
        positions = null
    }
    
    return positions
}

呼び出しするLog($.GetPosition(exchange))位置情報を印刷する

img

基本操作が実行され,残りはオプション取引戦略のために研究することができます.


関連性

もっと