Sumber dimuat naik... memuat...

Reformasi API niaga hadapan Deribit untuk menyesuaikan diri dengan perdagangan kuantitatif opsyen

Penulis:FMZ~Lydia, Dicipta: 2022-12-28 10:02:51, Dikemas kini: 2024-12-16 11:28:56

img

Reformasi API niaga hadapan Deribit untuk menyesuaikan diri dengan perdagangan kuantitatif opsyen

Pada masa ini, terdapat banyak bursa niaga hadapan mata wang digital. Walau bagaimanapun, sebagai derivatif niaga hadapan, terdapat beberapa bursa di pasaran untuk perdagangan pilihan mata wang digital. Deribit dan BitMEX menyokong perdagangan pilihan. Dalam bidang perdagangan kuantitatif, perdagangan pilihan juga mempunyai pelbagai strategi, seperti strategi pilihan yang disebutkan dalam beberapa bahan yang dicari:

Jenis
Strategi Arah:
Strategi turun naik:
Strategi lindung nilai:

Dikutip daripadapautan

Untuk menyediakan strategi perdagangan opsyen, anda perlu meletakkan asas yang kukuh terlebih dahulu, dan biasa dengan operasi asas seperti meletakkan pesanan, mendapatkan ticker, membatalkan pesanan, dan mendapatkan kedudukan. Penulisan strategi masih menggunakan platform FMZ Quant Trading, walaupun platform FMZ Quant Trading kini menyokong perdagangan mata wang, perdagangan kontrak dan perdagangan leverage dalam bidang perdagangan kuantitatif mata wang digital. Tidak banyak maklumat mengenai perdagangan opsyen.

Bahan berkaitan Deribit

Dokumen API:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrumentBot simulasi:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument

Anda boleh mendaftarkan akaun di laman web bot simulasi, membuka API KEY, dan mendapatkan API KEY. Mengkonfigurasi di platform FMZ Quant Trading adalah sama dengan mengkonfigurasi bot sebenar.

img

Terdapat empat konsep asas untuk difahami mengenai perdagangan opsyen:

-Tanggal pelaksanaan: pihak panjang dan pendek pilihan menyelesaikan penghantaran kontrak pilihan pada tarikh ini. - Harga pelaksanaan: Pada tarikh pelaksanaan, pihak panjang dan pendek opsyen menyelesaikan penghantaran kontrak opsyen pada harga pelaksanaan. -Premium: iaitu harga opsyen. Seperti spot dan niaga hadapan, ia disenaraikan pada harga tawaran dan harga permintaan. Perlu diperhatikan bahawa kerana kecairan opsyen umumnya lebih rendah daripada niaga hadapan dan spot, perbezaan harga antara tawaran dan meminta mungkin besar, jadi banyak perhatian harus diberikan di sini! Selepas transaksi, harga urus niaga adalah kos kedudukan panjang opsyen, di mana kedudukan panjang mendapat hak (hak untuk menggunakan opsyen); Pilihan pendek, sebagai pihak yang menerima premium, menambah kewajipan. Setelah pilihan panjang meminta untuk menggunakan haknya, pilihan pendek mesti bekerjasama. - Pilihan jual beli: Pilihan panggilan yang dipanggil bermaksud bahawa kedudukan panjang pilihan mempunyai hak untuk meminta kedudukan pendek pilihan untuk membeli Bitcoin tertentu pada harga pelaksanaan pada tarikh pelaksanaan tertentu, dan kedudukan pendek mempunyai kewajipan untuk bekerjasama dengan kedudukan panjang; Pilihan put yang dipanggil bermaksud bahawa sisi panjang pilihan mempunyai hak untuk meminta sisi pendek untuk menjual Bitcoin tertentu pada harga pelaksanaan pada tarikh pelaksanaan tertentu, dan sisi pendek mempunyai kewajiban untuk bekerjasama dengan sisi panjang.

Pemerolehan Ticker

Selepas membaca dokumen API Deribit Exchange, kita dapat melihat bahawa antara muka ticker Deribit untuk mengakses niaga hadapan atau pilihan ticker adalah hanya masalah lulus dalam yang berbezainstrument_nameparameter (instrument_name ditetapkan oleh fungsi SetContractType), jadi pada dasarnya, anda boleh mengikuti antara mukaGetTickeruntuk mendapatkan pilihan pilihan.

Sudah tentu, platform FMZ Quant Trading merangkum bot sebenar Deribit Exchange secara lalai.

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

Kemudian kita menubuhkan kontrak opsyenBTC-27DEC19-7000-Ppada masa ini. Ini adalah opsyen jual dengan tarikh pelaksanaan: 27DEC19 dan harga pelaksanaan: 7000.

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

Kemudian mendapatkan, mari kita tulis bersama-sama dan biarkan kod menjalankan untuk menguji mendapatkan ticker untuk kontrak opsyen ini.

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

Ia mudah untuk menguji dengan menggunakan alat debugging:

img

Ia boleh dilihat bahawa harga adalah konsisten dengan yang pada bot simulasi.

img

Antara muka ticker lain dipanggil dengan cara yang sama, yang tidak akan diulangi di sini. Perdagangan opsyen tidak terlalu aktif. Kadang-kadang tidak ada pesanan untuk membeli atau menjual. Pada masa ini, platform Perdagangan Kuantum FMZ akan mengesan nilai 0 di bahagian bawah, dan ia akan melaporkan ralat. Anda boleh menggunakanSetErrorFilter("Invalid ticker")untuk mengabaikan kesilapan ini, dan menggunakan fungsiGetRawJSONDi sini saya menulis contoh untuk mencapai fungsi yang sama:

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
}

Apabila dipanggil, kami menulis:Log($.GetTicker(exchange))

Buat pesanan

Operasi meletakkan pesanan adalah sangat mudah, berbanding dengan perdagangan niaga hadapan, terdapat hanya dua arah membeli dan menjual.

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

Perintah yang baru sahaja diletakkan juga muncul pada bot simulasi.

img

Dan...exchange.GetOrder(id)boleh mencari maklumat pesanan.

Pembatalan pesanan

Sama sahaja.CancelOrderfungsi digunakan untuk pembatalan pesanan, sama seperti pembatalan pesanan untuk perdagangan niaga hadapan.

img

Dapatkan aset akaun yang tersedia

Mendapatkan akaun aset yang tersedia adalah sama seperti perdagangan niaga hadapan, hanya memanggilGetAccountberfungsi secara langsung.

Meniru paparan pada halaman pertukaran:

img

Jalankan kod untuk mendapatkan.

img

Dapatkan maklumat kedudukan

Kita tidak boleh menggunakan yang terkaparGetPositionfungsi secara langsung untuk kedudukan, kerana urus niaga Deribit lalai adalah urus niaga hadapan, bukan urus niaga opsyen, kita hanya boleh menggunakan fungsi ini untuk mendapatkan kedudukan niaga hadapan. Jadi ini perlu menjadi fungsi yang terpendek untuk mendapatkan kedudukan pilihan.

Antara muka fungsi untuk mendapatkan kedudukan dalam dokumen 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
}

PanggilLog($.GetPosition(exchange))untuk mencetak maklumat kedudukan.

img

Oleh itu, operasi asas boleh dilaksanakan, dan selebihnya boleh dikaji untuk strategi perdagangan opsyen.


Berkaitan

Lebih lanjut