Type/to search
8
Follow
1364
Followers
Transformasi API Deribit Futures agar sesuai dengan perdagangan kuantitatif opsi
Original
Created 2019-10-29 14:57:54  Updated 2024-12-16 11:24:47
 0
 3119

img

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 panggilanMenjual opsi jualPenyebaran Panggilan BullSpread Taruhan Bull
--Beli Opsi JualMenjual opsi panggilanPanggilan Beruang MenyebarSpread Taruhan Beruang
Strategi volatilitas:Jual StraddleJual Straddle LebarBeli StraddleBeli Wide Straddle
Strategi lindung nilai:Panggilan TertutupTutupi PutPanggilan PerlindunganPelindung
--Batas Ganda PanjangBatas 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.

Informasi terkait Deribit

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.
img

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

  • Tanggal pelaksanaan: Tanggal di mana pihak panjang dan pendek opsi menyelesaikan penyerahan kontrak opsi.
  • Harga pelaksanaan: Pada tanggal pelaksanaan, pihak panjang dan pendek opsi menyelesaikan penyerahan kontrak opsi pada harga pelaksanaan.
  • Premium: Ini adalah harga opsi. Seperti spot futures, kuotasi mencakup harga beli dan harga jual.
    Perlu dicatat bahwa karena likuiditas opsi secara umum lebih buruk daripada futures dan spot, spread bid-ask mungkin besar, jadi perhatian khusus harus diberikan di sini! Setelah transaksi selesai, harga transaksi adalah biaya opsi beli. Pada saat ini, posisi beli memperoleh hak (hak untuk melaksanakan opsi); dan posisi jual opsi, sebagai pihak yang menerima premi. , memiliki kewajiban tambahan. Setelah posisi long meminta untuk menggunakan hak, posisi short harus bekerja sama.
  • Opsi beli dan opsi jual:
    Opsi beli adalah hak yang dimiliki oleh pemegang opsi beli untuk meminta pemegang opsi beli untuk membeli sejumlah Bitcoin pada harga pelaksanaan tertentu pada tanggal pelaksanaan tertentu, dan pemegang opsi beli memiliki kewajiban untuk bekerja sama dengan pemegang opsi beli. pemegang. Opsi jual adalah hak yang dimiliki pemegang opsi beli untuk meminta pemegang opsi jual untuk membeli sejumlah Bitcoin pada harga pelaksanaan tertentu pada tanggal pelaksanaan tertentu. Pada tanggal pelaksanaan tertentu, penjual opsi jual diharuskan untuk menjual bitcoin yang diberikan pada harga pelaksanaan tertentu, dan penjual pendek berkewajiban untuk bekerja sama dengan penjual panjang.

Informasi Pasar

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:
img
Anda dapat melihat bahwa harganya konsisten dengan harga pada disk simulasi.
img

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))

Tempatkan pesanan

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)) }

img

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

Danexchange.GetOrder(id)Anda dapat menanyakan informasi pesanan.

Batalkan Pesanan

Metode yang sama digunakan untuk pembatalan pesanan.CancelOrderFungsinya, sama seperti membatalkan pesanan dalam perdagangan berjangka.
img

Dapatkan aset yang tersedia di akun

Mendapatkan aset yang tersedia di akun sama persis seperti dalam perdagangan berjangka. Langsung hubungiGetAccountFungsi.

Tampilan pada halaman pertukaran simulasi
img

Jalankan kode untuk mendapatkan:
img

Dapatkan informasi posisi

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

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

Related Recommendations
Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)