Sumber daya yang dimuat... Pemuatan...

Reformasi Deribit API berjangka untuk beradaptasi dengan perdagangan kuantitatif opsi

Penulis:FMZ~Lydia, Dibuat: 2022-12-28 10:02:51, Diperbarui: 2023-09-20 09:15:09

img

Reformasi Deribit API berjangka untuk beradaptasi dengan perdagangan kuantitatif opsi

Saat ini, ada banyak bursa berjangka mata uang digital. Namun, sebagai derivatif berjangka, ada beberapa bursa di pasar untuk perdagangan opsi mata uang digital. Deribit dan BitMEX mendukung perdagangan opsi. Dalam bidang perdagangan kuantitatif, perdagangan opsi juga memiliki berbagai strategi, seperti strategi opsi yang disebutkan dalam beberapa bahan yang dicari:

Jenis
Strategi arah:
Strategi volatilitas:
Strategi lindung nilai:

Dikutip darilink

Untuk menyiapkan strategi perdagangan opsi, Anda perlu meletakkan dasar yang kuat terlebih dahulu, dan akrab dengan operasi dasar seperti menempatkan pesanan, mendapatkan ticker, membatalkan pesanan, dan mendapatkan posisi. Penulisan strategi masih menggunakan platform FMZ Quant Trading, meskipun platform FMZ Quant Trading saat ini mendukung perdagangan mata uang-mata uang, perdagangan kontrak dan perdagangan leverage di bidang perdagangan kuantitatif mata uang digital. Tidak banyak informasi tentang perdagangan opsi.

Materi yang berhubungan dengan Deribit

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

Anda dapat mendaftarkan akun di situs web simulasi bot, membuka API KEY, dan mendapatkan API KEY.

img

Ada empat konsep dasar untuk memahami tentang perdagangan opsi:

- Tanggal pelaksanaan: pihak panjang dan pendek dari opsi menyelesaikan pengiriman kontrak opsi pada tanggal ini. - Harga pelaksanaan: Pada tanggal pelaksanaan, pihak panjang dan pendek opsi menyelesaikan pengiriman kontrak opsi dengan harga pelaksanaan. -Premium: yaitu harga opsi. Seperti spot dan futures, itu dikutip pada harga penawaran dan harga permintaan. Perlu dicatat bahwa karena likuiditas opsi umumnya lebih rendah daripada opsi futures dan spot, perbedaan harga antara bid dan ask mungkin besar, jadi banyak perhatian harus diberikan di sini! Setelah transaksi, harga transaksi adalah biaya posisi panjang opsi, pada saat posisi panjang mendapatkan hak (hak untuk menggunakan opsi); Pilihan pendek, sebagai pihak yang menerima premi, menambahkan kewajiban. Setelah opsi panjang meminta untuk menggunakan haknya, opsi pendek harus bekerja sama. - Opsi jual beli: Opsi panggilan yang disebut berarti bahwa posisi panjang opsi memiliki hak untuk meminta posisi pendek opsi untuk membeli Bitcoin tertentu dengan harga pelaksanaan pada tanggal pelaksanaan tertentu, dan posisi pendek memiliki kewajiban untuk bekerja sama dengan posisi panjang; Opsi put yang disebut berarti bahwa sisi panjang opsi memiliki hak untuk meminta sisi pendek untuk menjual Bitcoin tertentu dengan harga pelaksanaan pada tanggal pelaksanaan tertentu, dan sisi pendek memiliki kewajiban untuk bekerja sama dengan sisi panjang.

Akuisisi Ticker

Setelah membaca dokumen API dari Deribit Exchange, kita dapat melihat bahwa antarmuka ticker dari Deribit untuk mengakses berjangka atau pilihan ticker adalah hanya masalah melewati di berbedainstrument_nameparameter (instrument_name ditetapkan oleh fungsi SetContractType), jadi pada dasarnya, Anda dapat mengikuti antarmukaGetTickeruntuk mendapatkan ticker opsi.

Tentu saja, platform FMZ Quant Trading mengkapsulkan bot asli dari Deribit Exchange secara default. Pertama, kita perlu beralih ke bot simulasi, menggunakan kode berikut:

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

Kemudian kita mengatur kontrak opsiBTC-27DEC19-7000-Psaat ini. Ini adalah opsi jual dengan tanggal pelaksanaan: 27DEC19 dan harga pelaksanaan: 7000.

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

Kemudian mendapatkan, mari kita tulis bersama-sama dan biarkan kode berjalan untuk menguji mendapatkan ticker untuk kontrak opsi ini.

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

Mudah untuk menguji dengan menggunakan alat debugging:

img

Dapat dilihat bahwa harga konsisten dengan yang pada simulasi bot.

img

Antarmuka ticker lainnya dipanggil dengan cara yang sama, yang tidak akan diulang di sini. Perdagangan opsi tidak terlalu aktif. Kadang-kadang tidak ada pesanan untuk membeli atau menjual. Pada saat ini, platform Trading FMZ Quant akan mendeteksi nilai 0 di bagian bawah, dan akan melaporkan kesalahan. Anda dapat menggunakanSetErrorFilter("Invalid ticker")untuk mengabaikan kesalahan ini, dan menggunakan fungsiGetRawJSONuntuk mendapatkan informasi asli dari ticker dan merangkum data. di sini saya menulis contoh untuk mencapai fungsi serupa:

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
}

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

Buat pesanan.

Operasi penempatan order sangat sederhana, dibandingkan dengan perdagangan futures, hanya ada dua arah pembelian dan penjualan.

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

Pesanan yang baru saja ditempatkan juga muncul di robot simulasi.

img

Dan...exchange.GetOrder(id)bisa mencari informasi pesanan.

Pembatalan pesanan

Sama saja.CancelOrderfungsi digunakan untuk pembatalan order, sama seperti pembatalan order untuk perdagangan berjangka.

img

Dapatkan aset akun yang tersedia

Mendapatkan akun aset yang tersedia adalah persis sama dengan perdagangan berjangka, hanya memanggilGetAccountfungsi langsung.

Simulasi tampilan pada halaman pertukaran:

img

Jalankan kode untuk mendapatkannya.

img

Dapatkan informasi posisi

Kita tidak bisa menggunakan yang terkapsulGetPositionfungsi langsung untuk posisi, karena transaksi Deribit default adalah transaksi futures, bukan transaksi opsi, kita hanya dapat menggunakan fungsi ini untuk mendapatkan posisi futures. Jadi ini harus menjadi fungsi terkapsul kita sendiri untuk mendapatkan posisi opsi.

Antarmuka fungsi untuk mendapatkan posisi 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
}

PanggilanLog($.GetPosition(exchange))untuk mencetak informasi posisi.

img

Dengan demikian, operasi dasar dapat dilaksanakan, dan sisanya dapat dipelajari untuk strategi perdagangan opsi.


Berkaitan

Lebih banyak