Hiện tại, có nhiều sàn giao dịch tương lai tiền kỹ thuật số. Tuy nhiên, với tư cách là một phái sinh tương lai, có rất ít sàn giao dịch trên thị trường giao dịch tùy chọn tiền kỹ thuật số. Deribit và BitMEX hỗ trợ giao dịch tùy chọn. Trong lĩnh vực giao dịch định lượng, giao dịch tùy chọn cũng có nhiều chiến lược khác nhau, chẳng hạn như các chiến lược tùy chọn được đề cập trong một số tài liệu được tìm kiếm:
Loại |
---|
Chiến lược hướng: |
– |
Chiến lược biến động: |
Chiến lược phòng hiểm: |
– |
trích dẫn từliên kết
Để chuẩn bị một chiến lược giao dịch tùy chọn, trước tiên bạn cần đặt nền tảng vững chắc và quen thuộc với các hoạt động cơ bản như đặt lệnh, nhận ticker, hủy lệnh và có được vị trí. Việc viết chiến lược vẫn sử dụng nền tảng FMZ Quant Trading, mặc dù nền tảng FMZ Quant Trading hiện đang hỗ trợ giao dịch tiền tệ, giao dịch hợp đồng và giao dịch đòn bẩy trong lĩnh vực giao dịch tiền tệ số lượng kỹ thuật số. Không có nhiều thông tin về giao dịch tùy chọn. Hãy lấy sàn giao dịch
Tài liệu API:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrumentRobot mô phỏng:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument
Bạn có thể đăng ký một tài khoản trên trang web bot mô phỏng, mở API KEY và nhận API KEY.
Có bốn khái niệm cơ bản để hiểu về giao dịch quyền chọn:
- Ngày thực hiện: các bên dài và ngắn của tùy chọn hoàn thành giao dịch hợp đồng tùy chọn vào ngày này. - Giá thực thi: Vào ngày thực thi, các bên dài và ngắn của tùy chọn hoàn thành giao dịch hợp đồng tùy chọn theo giá thực thi. -Premium: đó là giá của các tùy chọn. Giống như giao ngay và tương lai, nó được trích dẫn ở giá mua và giá mua. Điều đáng chú ý là vì thanh khoản của các tùy chọn thường thấp hơn tương lai và giao ngay, sự khác biệt giá giữa giá thầu và giá thầu có thể lớn, vì vậy nên chú ý nhiều ở đây! Sau giao dịch, giá giao dịch là chi phí của các vị trí dài tùy chọn, tại thời điểm đó các vị trí dài có được quyền (quyền thực hiện tùy chọn); Tùy chọn ngắn, như bên nhận tiền thưởng, thêm một nghĩa vụ. Một khi tùy chọn dài yêu cầu thực hiện quyền của mình, tùy chọn ngắn phải hợp tác. - Các lựa chọn bán hàng: Cái gọi là lựa chọn mua có nghĩa là các vị trí dài của tùy chọn có quyền yêu cầu các vị trí ngắn của tùy chọn mua Bitcoin nhất định ở một mức giá thực thi nhất định vào một ngày thực thi nhất định, và các vị trí ngắn có nghĩa vụ hợp tác với các vị trí dài; Cái gọi là lựa chọn đặt có nghĩa là phía dài của tùy chọn có quyền yêu cầu phía ngắn bán Bitcoin nhất định ở một mức giá thực thi nhất định vào một ngày thực thi nhất định, và phía ngắn có nghĩa vụ hợp tác với phía dài.
Sau khi đọc tài liệu API của Deribit Exchange, chúng ta có thể thấy rằng giao diện ticker của Deribit để truy cập vào hợp đồng tương lai hoặc quyền chọn ticker chỉ đơn giản là một vấn đề của việc truyền vào khác nhauinstrument_name
tham số (instrument_name được thiết lập bởi các chức năng SetContractType), do đó về cơ bản, bạn có thể làm theo giao diệnGetTicker
để có được các lựa chọn.
Tất nhiên, nền tảng FMZ Quant Trading đóng gói bot thực của Deribit Exchange theo mặc định. Trước tiên, chúng ta cần chuyển sang bot mô phỏng, sử dụng mã sau:
exchange.IO("base", "https://test.deribit.com")
Sau đó chúng ta thiết lập hợp đồng quyền chọn.BTC-27DEC19-7000-P
hiện tại.
Đây là một lựa chọn bán với ngày thực hiện: 27DEC19 và giá thực hiện: 7000.
exchange.SetContractType("BTC-27DEC19-7000-P")
Sau đó nhận được, hãy viết nó cùng nhau và để mã chạy để kiểm tra nhận được ticker cho hợp đồng tùy chọn này.
function main () {
exchange.IO("base", "https://test.deribit.com")
exchange.SetContractType("BTC-27DEC19-7000-P")
var ticker = exchange.GetTicker()
Log(ticker)
}
Nó dễ dàng để kiểm tra bằng cách sử dụng công cụ gỡ lỗi:
Có thể thấy rằng giá phù hợp với giá trên robot mô phỏng.
Các giao diện ticker khác được gọi theo cùng một cách, điều này sẽ không được lặp lại ở đây.
Giao dịch tùy chọn không hoạt động nhiều. Đôi khi không có lệnh mua hoặc bán. Tại thời điểm này, nền tảng FMZ Quant Trading sẽ phát hiện giá trị 0 ở phía dưới, và nó sẽ báo cáo một lỗi. Bạn có thể sử dụngSetErrorFilter("Invalid ticker")
để bỏ qua lỗi này, và sử dụng chức năngGetRawJSON
để lấy thông tin ban đầu của ticker và đóng gói dữ liệu.
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
}
Khi được gọi, chúng tôi viết:Log($.GetTicker(exchange))
Hoạt động đặt lệnh rất đơn giản, so với giao dịch tương lai, chỉ có hai hướng mua và bán.
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))
}
Lệnh vừa được đặt cũng xuất hiện trên robot mô phỏng.
Và...exchange.GetOrder(id)
có thể tìm thông tin đặt hàng.
Tương tự.CancelOrder
chức năng được sử dụng để hủy lệnh, giống như việc hủy lệnh cho giao dịch tương lai.
Nhận tài sản có sẵn tài khoản là chính xác giống như giao dịch tương lai, chỉ cần gọi choGetAccount
trực tiếp.
Mô phỏng hiển thị trên trang trao đổi:
Chạy mã để lấy.
Chúng ta không thể sử dụng các encapsulatedGetPosition
chức năng trực tiếp cho các vị trí, bởi vì giao dịch Deribit mặc định là một giao dịch tương lai, không phải là một giao dịch quyền chọn, chúng ta chỉ có thể sử dụng chức năng này để có được các vị trí tương lai.
Vì vậy, điều này sẽ phải là chức năng đóng gói của riêng chúng tôi để có được vị trí tùy chọn.
Giao diện chức năng để lấy vị trí trong tài liệu 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
}
Gọi đi.Log($.GetPosition(exchange))
để in thông tin vị trí.
Do đó, các hoạt động cơ bản có thể được thực hiện, và phần còn lại có thể được nghiên cứu cho các chiến lược giao dịch tùy chọn.