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.
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.
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.
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_name
parameter (instrument_name ditetapkan oleh fungsi SetContractType), jadi pada dasarnya, Anda dapat mengikuti antarmukaGetTicker
untuk 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-P
saat 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:
Dapat dilihat bahwa harga konsisten dengan yang pada simulasi bot.
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 fungsiGetRawJSON
untuk 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))
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))
}
Pesanan yang baru saja ditempatkan juga muncul di robot simulasi.
Dan...exchange.GetOrder(id)
bisa mencari informasi pesanan.
Sama saja.CancelOrder
fungsi digunakan untuk pembatalan order, sama seperti pembatalan order untuk perdagangan berjangka.
Mendapatkan akun aset yang tersedia adalah persis sama dengan perdagangan berjangka, hanya memanggilGetAccount
fungsi langsung.
Simulasi tampilan pada halaman pertukaran:
Jalankan kode untuk mendapatkannya.
Kita tidak bisa menggunakan yang terkapsulGetPosition
fungsi 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:
$.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.
Dengan demikian, operasi dasar dapat dilaksanakan, dan sisanya dapat dipelajari untuk strategi perdagangan opsi.