
Sudah banyak bursa berjangka mata uang digital, tetapi sebagai derivatif berjangka, perdagangan opsi mata uang digital, tidak banyak bursa di pasar. Bursa yang mendukung perdagangan opsi termasuk Deribit dan BitMEX. Dalam bidang perdagangan kuantitatif, terdapat pula banyak strategi untuk perdagangan opsi, seperti strategi opsi yang disebutkan dalam beberapa materi pencarian:
| jenis | |||||
|---|---|---|---|---|---|
| Strategi arah: | Membeli opsi panggilan | Menjual opsi jual | Penyebaran Panggilan Bull | Spread Taruhan Bull | |
| – | Beli Opsi Jual | Menjual opsi panggilan | Panggilan Beruang Menyebar | Spread Taruhan Beruang | |
| Strategi volatilitas: | Jual Straddle | Jual Straddle Lebar | Beli Straddle | Beli Wide Straddle | |
| Strategi lindung nilai: | Panggilan Tertutup | Tutupi Put | Panggilan Perlindungan | Pelindung | |
| – | Batas Ganda Panjang | Batas ganda posisi pendek | – | – |
Dikutip darimenghubungkan
Untuk menulis strategi perdagangan opsi, Anda masih perlu meletakkan dasar yang kuat terlebih dahulu dan memahami operasi dasar seperti menempatkan pesanan, memperoleh informasi pasar, membatalkan pesanan, dan memperoleh posisi. Penulisan strategi masih menggunakan Inventor Quantitative Trading Platform, meskipun Inventor Quantitative Trading Platform saat ini terutama mendukung perdagangan mata uang ke mata uang, perdagangan kontrak, dan perdagangan leverage di bidang perdagangan kuantitatif mata uang digital. Tidak banyak informasi yang terkait dengan perdagangan opsi. Di bawah ini, kami akan mengambil bursa “Deribit” sebagai contoh untuk memperkenalkan cara menggunakan Platform Perdagangan Kuantitatif Inventor untuk memainkan perdagangan opsi mata uang digital.
Dokumentasi API: https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument Disk simulasi: https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument
Anda dapat mendaftarkan akun di situs web platform simulasi, mengaktifkan API KEY, dan memperoleh API KEY. Konfigurasi pada Inventor Quantitative Trading Platform sama dengan konfigurasi pada akun riil.

Ada 4 konsep dasar yang perlu Anda pahami untuk perdagangan opsi:

Menurut dokumentasi API Deribit Exchange, antarmuka pasar Deribit hanya meneruskan data untuk mengakses informasi pasar berjangka atau opsi.instrument_nameParameternya berbeda (instrument_name ditetapkan oleh fungsi SetContractType), jadi pada dasarnya Anda dapat menggunakan antarmuka untuk mendapatkan informasi pasar.GetTickerDapatkan penawaran untuk pilihan.
Tentu saja, paket bawaan Inventor Quantitative Trading Platform adalah pasar riil Deribit Exchange. Pertama-tama kita harus beralih ke pasar simulasi dan menggunakan kode berikut:
exchange.IO("base", "https://test.deribit.com")
Kemudian saat ini kami menyiapkan kontrak opsiBTC-27DEC19-7000-P:
Ini adalah opsi jual dengan tanggal pelaksanaan 27DES19 dan harga pelaksanaan 7000.
exchange.SetContractType("BTC-27DEC19-7000-P")
Kemudian dapatkan. Kami menulisnya bersama, menjalankan kode, dan menguji untuk mendapatkan informasi pasar dari kontrak opsi ini.
function main () {
exchange.IO("base", "https://test.deribit.com")
exchange.SetContractType("BTC-27DEC19-7000-P")
var ticker = exchange.GetTicker()
Log(ticker)
}
Menggunakan alat debugging bisa sangat mudah untuk menguji:
Anda dapat melihat bahwa harganya konsisten dengan harga pada disk simulasi.

Metode pemanggilan antarmuka pasar lainnya sama dan tidak akan diulang di sini. Perlu dicatat bahwa:
Perdagangan opsi tidak terlalu aktif. Terkadang tidak akan ada pesanan beli atau pesanan jual. Pada saat ini, lapisan bawah Platform Perdagangan Kuantitatif Inventor akan mendeteksi nilai 0 dan melaporkan kesalahan. Anda dapat menggunakanSetErrorFilter("Invalid ticker")Abaikan kesalahan ini dan gunakanGetRawJSONFungsi ini memperoleh informasi asli pasar dan merangkum datanya. Berikut ini saya tuliskan 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
}
Ketika memanggil tulis:Log($.GetTicker(exchange))
Operasi penempatan order sangat sederhana. Dibandingkan dengan perdagangan berjangka, hanya ada dua arah: beli dan jual. Juga gunakanSell,BuyUrutan fungsi.
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))
}

Pesanan yang baru saja ditempatkan juga muncul di papan perdagangan simulasi.

Danexchange.GetOrder(id)Anda dapat menanyakan informasi pesanan.
Metode yang sama digunakan untuk pembatalan pesanan.CancelOrderFungsinya, sama seperti membatalkan pesanan dalam perdagangan berjangka.

Mendapatkan aset yang tersedia di akun sama persis seperti dalam perdagangan berjangka. Langsung hubungiGetAccountFungsi.
Tampilan pada halaman pertukaran simulasi

Jalankan kode untuk mendapatkan:

Untuk menahan posisi, Anda tidak dapat langsung menggunakan paketGetPositionberfungsi, karena secara default transaksi Deribit adalah transaksi berjangka, bukan transaksi opsi, dan hanya fungsi ini yang dapat digunakan untuk memperoleh posisi berjangka.
Oleh karena itu, kita harus merangkum fungsi perolehan posisi opsi sendiri.
Antarmuka fungsi untuk mendapatkan posisi dalam dokumentasi API:

$.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))Anda dapat mencetak informasi posisi.

Dengan cara ini, operasi dasar dapat dicapai, dan sisanya adalah mempelajari strategi perdagangan opsi.