Mengubahsuai API niaga hadapan Deribit untuk menyesuaikan perdagangan kuantitatif opsyen

Penulis:Mimpi kecil, Dicipta: 2019-10-29 14:57:54, Dikemas kini: 2023-10-17 21:20:50

img

Bursa niaga hadapan mata wang digital kini sudah banyak, tetapi sebagai derivatif masa hadapan, perdagangan pilihan mata wang digital, tidak banyak pertukaran yang ada di pasaran sekarang, yang menyokong perdagangan pilihan adalah Deribit, BitMEX. Dalam bidang perdagangan kuantitatif, perdagangan pilihan juga mempunyai pelbagai strategi, seperti strategi pilihan yang disebutkan dalam beberapa maklumat carian:

Jenis
Strategi yang berorientasikan: Membeli pilihan binari Menjual opsyen penurunan Bursa Beli Benih Benih Harga Bursa Lembu Menurun
Membeli opsyen penurunan Jual Pilihan Binari Bursa Beruang Lihat Harga Uranium Berkurang Bursa Bursa Bursa Bursa Bursa
Strategi kadar turun naik: Jual-belah Jual-belah lebar Membeli dalam bentuk yang berlainan Beli lebar lebar
Strategi lindung nilai: Bersedia untuk melihat Perhatian rendah Perlindungan yang baik Perlindungan jatuh
Multi-tanah dua Bilim kepala kosong

Dipetik dariSambungan

Menulis strategi dagangan opsyen masih memerlukan asas yang kukuh terlebih dahulu, operasi asas seperti pesanan, pemerolehan pasaran, penarikan pesanan, dan pemerolehan pegangan perlu difahami. Menulis strategi masih menggunakan platform dagangan kuantitatif pencipta, walaupun platform dagangan kuantitatif pencipta kini menyokong bidang dagangan kuantitatif mata wang digital.

Maklumat mengenai Deribit

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

Anda boleh mendaftarkan akaun di laman web piringan analog, membuka API KEY, dan mengakses API KEY; konfigurasi di platform perdagangan kuantitatif pencipta, seperti konfigurasi piringan sebenar.img

Terdapat empat konsep asas yang perlu difahami untuk perdagangan opsyen:img

  • Hari Penguatkuasaan: Pihak yang mempunyai lebih banyak ruang pilihan menyempurnakan kontrak pilihan pada tarikh tersebut.
  • Harga hak cipta: Pada hari hak cipta, kedua-dua pihak yang mempunyai ruang pilihan menyelesaikan kontrak pilihan dengan harga hak cipta.
  • Harga hak: iaitu harga opsyen, seperti masa hadapan, tawaran mempunyai harga beli dan harga jual. Perlu diperhatikan bahawa kerana kecairan opsyen umumnya lebih rendah daripada niaga hadapan dan tunai, perbezaan harga jual beli mungkin sangat besar, perlu diperhatikan di sini! Selepas transaksi, harga urus niaga adalah kos multi-opsi, di mana multi-opsi memperoleh hak (menggunakan hak opsyen); dan kepala kosong opsyen sebagai pihak yang menerima hak, menambah kewajipan, apabila multi-opsi meminta hak untuk digunakan, kepala kosong mesti bekerjasama.
  • Pilihan put (Call) dan put (Call): Pilihan yang disebut option bullish adalah pilihan multi-head yang mempunyai hak untuk membeli bitcoin yang ditetapkan pada hari tertentu, pada harga tertentu, dengan kewajipan untuk membeli bitcoin yang ditetapkan; dan pilihan beli adalah pilihan multi-head yang mempunyai hak untuk menjual bitcoin yang ditetapkan pada hari tertentu, dengan harga tertentu, dengan kewajipan untuk menjual bitcoin yang ditetapkan.

Pengambilalihan

Dengan melihat dokumen API Bursa Deribit, antara muka pasaran Deribit hanya digunakan untuk mengakses pasaran niaga hadapan atau opsyen.instrument_nameJika parameternya berbeza (instrument_name ditetapkan melalui fungsi SetContractType), maka anda boleh menggunakan antara muka untuk mendapatkan pasaran.GetTickerPerdagangan pilihan.

Sudah tentu, pembungkusan pelopor platform dagangan kuantitatif adalah cakera sebenar Deribit secara lalai, tetapi kita perlu beralih ke cakera analog terlebih dahulu, menggunakan kod berikut:

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

Dan kemudian kita menetapkan kontrak opsyen sekarang.BTC-27DEC19-7000-PPerkataan: Ini adalah tarikh hak jual: 27 DEC19, harga hak jual: 7000

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

Kemudian, kita menulis bersama-sama, let's run the code, untuk menguji bagaimana untuk mendapatkan kontrak opsyen ini.

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

Percubaan yang mudah dilakukan menggunakan alat debugging:imgDi sini, anda boleh melihat harga yang sama dengan harga pada piringan analog.img

Perkhidmatan ini mempunyai ciri-ciri yang sama seperti perkhidmatan lain yang lain, tetapi tidak boleh digambarkan di sini, tetapi perlu diingat: Perdagangan opsyen tidak begitu aktif, dan kadang-kadang ada keadaan tidak ada pembelian atau tidak ada pesanan jual, pada masa ini, pencipta mengutip lapisan bawah platform dagangan untuk mengesan nilai 0 yang akan memberikan kesalahan, yang boleh digunakan untuk mengesan nilai yang tidak sesuai dengan harga yang ditetapkan.SetErrorFilter("Invalid ticker")Saya tidak tahu apa yang berlaku di sini.GetRawJSONFungsi ini mengambil data pembungkusan maklumat mentah dari pasaran, di sini saya menulis contoh untuk menjalankan 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
}

"Saya tidak tahu apa yang berlaku di sini.Log($.GetTicker(exchange))

Senarai di bawah

Operasi di bawah sangat mudah, hanya membeli dan menjual dua arah berbanding perdagangan niaga hadapan.Sell,BuyFungsi di bawah.

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 di piring simulasi.img

danexchange.GetOrder(id)Anda boleh mendapatkan maklumat tentang pesanan anda.

Penggalangan

Pengeluaran juga digunakan untukCancelOrderFungsi, sama seperti pengeluaran semasa perdagangan niaga hadapan.img

Memperoleh aset yang boleh digunakan

Memperoleh aset yang tersedia di akaun dengan cara yang sama seperti perdagangan niaga hadapan, panggilan langsungGetAccountFungsi boleh.

Paparan pada halaman bursa analogimg

Kode untuk menjalankan:img

Mengambil maklumat simpanan

Tidak boleh menggunakan produk yang dibungkus secara langsung.GetPositionFungsi ini tidak berfungsi, kerana perdagangan Deribit secara lalai adalah perdagangan niaga hadapan, bukan perdagangan opsyen, hanya boleh digunakan untuk mendapatkan pegangan niaga hadapan. Oleh itu, ini adalah satu fungsi yang perlu kita lakukan sendiri untuk membungkus fungsi untuk mendapatkan saham pilihan.

Antara muka fungsi untuk mendapatkan stok pada 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
}

PanggilanLog($.GetPosition(exchange))Di sini, anda boleh mencetak maklumat simpanan anda.img img

Dengan cara ini, operasi asas dapat dilaksanakan, dan selebihnya boleh dipelajari strategi perdagangan pilihan.


Berkaitan

Lebih lanjut