デリビット・フューチャーズAPIの改変,オプション量化取引に対応

作者: リン・ハーン小さな夢, 作成日:2019年10月29日 14:57:54, 更新日:2023年10月17日 21:20:50

img

デジタル通貨先物取引所は既にたくさんあるが,先物衍生品として,デジタル通貨オプション取引は,現在市場にある取引所はほとんどない.オプション取引をサポートする取引所は,Deribit,BitMEXである.量化取引の分野では,オプション取引には,いくつかの戦略もあります.例えば,いくつかの情報に言及されているオプション戦略を検索します:

タイプ
方向性戦略: 買取オプション 売る 牛市での価格が下がる 牛市が落ちる
買取する 売るオプション 熊市がの価格を見失い 熊市が落ちる
波動率戦略: 売れるスプレス 広範囲販売 購入する ブロードスレンダーを購入する
負債をカバーする戦略: 準備はいい 予備は落ちる 保護的な 保護的な下落
多頭双極 空頭双極

引用する接続

オプション取引戦略の作成には,基本的な下注,市場取得,取消,保有取得などの操作を熟知する必要があります. 戦略の作成は依然として発明者の量化取引プラットフォームを使用しています. 発明者の量化取引プラットフォームは現在,デジタル通貨量化取引分野におけるサポートの主なものは,コイン取引,契約取引,レバレッジ取引です. オプション取引に関する情報はあまり多くありません. 下記は"Deribit"取引所の例で,発明者の量化取引プラットフォームを使用してデジタル通貨オプション取引を行う方法を説明します.

デリビット 関連情報

アフィリエイトのアーカイブhttps://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument模擬ディスク:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument

アナログディスクのウェブサイトでアカウントを登録し,API KEYを開き,API KEYにアクセスできます.img

オプション取引の4つの基本的な概念は,img

  • 実行日:オプションの多空間の当事者がその日にオプション契約を交付する.
  • 実行権価格: 実行権日,オプションの多空間の当事者が実行権価格でオプション契約の交付を完了する.
  • 配当金:即時先物と同じく,買取価格と売却価格を提示するオプションの価格である. 注目すべきは,オプションの流動性は一般的に先物と現物より劣っているため,買取価格差が大きい可能性があること.ここで特に注意しなければならない.取引後に,取引価格はオプション多頭体のコストであり,多頭体は権利を取得する (オプションの権利を行使する);一方,オプションの空頭体は権利の收益として,一方には義務を加え,多頭体が権利を行使することを要求すると,空頭体は協力しなければならない.
  • フォローしているユーザーに, バイアップオプションとは,オプション多頭が,ある有効日,ある有効価格で,オプション空頭から既定のビットコインを購入する権利を要求し,空頭には対応する多頭の義務がある.一方,バイアップオプションとは,オプション多頭が,ある有効日,ある有効価格で,空頭から既定のビットコインを売る権利を要求し,空頭には対応する多頭の義務がある.

取得した

DeribitのAPI文書を見ると,Deribitの市場インターフェースは,先物やオプション市場にアクセスするための単なる転送です.instrument_name参数が違う (instrument_name は SetContractType により設定されている) となると,基本的に市場を取得するインターフェースに沿って行えます.GetTicker投資家は,投資家の利益を得るために,投資を行う.

もちろん,発明者による量化取引プラットフォームのデフォルトパッケージは,Deribit取引所のリアルディスクで,まずは,次のコードを使用して,アナログディスクに切り替える必要があります:

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

取引先の取引先を設定します.BTC-27DEC19-7000-Pナイジェリア人 これは27DEC19の有効期限で,有効価格は7000の負債です.

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

他の業界では,インターフェイスでの通話が一致しているので,ここでは概要を述べる必要はなく,以下のようなことを注意してください. オプション取引はあまり活発ではありません. 取引所は時々,買い手なしまたは売り手なしの状況が発生します. このとき,発明者は取引プラットフォームの底部を量化し,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

倉庫情報を取得

商品の保管には,直接パッケージを使用することはできません.GetPositionDeribitのデフォルト取引は,オプション取引ではなく,先物取引であるため,この関数で先物保有を入手するだけです. 選択肢の保有権を得る関数は,この関数で包み込む必要があります.

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 img

基本操作は完了し,残りはオプション取引戦略の研究です.


関連性

もっと