В настоящее время существует множество фьючерсных бирж цифровой валюты. Однако, как фьючерсный производный продукт, на рынке для торговли опционами на цифровую валюту существует мало бирж. Deribit и BitMEX поддерживают торговлю опционами. В области количественной торговли торговля опционами также имеет различные стратегии, такие как стратегии опционов, упомянутые в некоторых материалах, которые были поисканы:
Тип |
---|
Направленная стратегия: |
– |
Стратегия волатильности: |
Стратегия хеджирования: |
– |
Цитирую:ссылка
Чтобы подготовить стратегию торговли опционами, вам сначала нужно заложить прочную основу и быть знакомым с базовыми операциями, такими как размещение заказа, получение тикера, отмена заказа и получение позиций. В написании стратегии все еще используется платформа FMZ Quant Trading, хотя платформа FMZ Quant Trading в настоящее время поддерживает торговлю валютами, контрактную торговлю и рычаг торговли в области цифровой валютной количественной торговли. Нет много информации о торговле опционами. Давайте возьмем биржу
Документ API:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrumentБот-симулятор:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument
Вы можете зарегистрировать учетную запись на сайте бота-симулятора, открыть ключ API и получить ключ API.
Существует четыре основных понятия для понимания о торговле опционами:
- Дата осуществления: длинные и короткие стороны опциона завершают поставку опционного контракта на эту дату. -Цена осуществления: на дату осуществления долговые и короткие стороны опциона завершают поставку контракта опциона по цене осуществления. -Премия: это цена опционов. Как и спот и фьючерсы, он котируется по цене покупки и цене покупки. Стоит отметить, что поскольку ликвидность опционов, как правило, ниже, чем у фьючерсов и спота, разница в цене между предложением и запросом может быть большой, поэтому здесь следует уделять большое внимание! После сделки цена сделки - это стоимость опционов длинных позиций, при этом длинные позиции получают право (право на осуществление опциона); короткий опцион, как сторона, получающая премию, добавляет обязательство. Как только длинный опцион запрашивает осуществление своих прав, короткий опцион должен сотрудничать. -Опции продажи: Так называемый опцион покупок означает, что опционные длинные позиции имеют право попросить опционные короткие позиции купить данный Биткойн по определенной цене на определенную дату проведения, а короткие позиции имеют обязательство сотрудничать с длинными позициями; так называемый опцион пута означает, что длинная сторона опциона имеет право попросить короткую сторону продать данный Биткойн по определенной цене проведения на определенную дату проведения, а короткая сторона имеет обязательство сотрудничать с длинной стороной.
После прочтения API документа Deribit Exchange мы можем видеть, что интерфейс тикера Deribit для доступа к фьючерсам или опционов тикеров просто вопрос прохождения в различныхinstrument_name
параметры (instrument_name устанавливается функцией SetContractType), так что в основном, вы можете следовать интерфейсGetTicker
чтобы получить информацию об опционах.
Конечно, платформа FMZ Quant Trading по умолчанию инкапсулирует реальный бот Deribit Exchange.
exchange.IO("base", "https://test.deribit.com")
Тогда мы создадим опционный контрактBTC-27DEC19-7000-P
Сейчас.
Это опцион на продажу с датой исполнения: 27DEC19 и ценой исполнения: 7000.
exchange.SetContractType("BTC-27DEC19-7000-P")
Тогда, давайте напишем это вместе и позволим коду запустить, чтобы проверить получение тикера для этого контракта опциона.
function main () {
exchange.IO("base", "https://test.deribit.com")
exchange.SetContractType("BTC-27DEC19-7000-P")
var ticker = exchange.GetTicker()
Log(ticker)
}
Это легко проверить с помощью инструмента отладки:
Можно увидеть, что цена соответствует цене на симуляторе бота.
Другие интерфейсы тикеров называются таким же образом, что не будет повторяться здесь.
Торговля опционами не очень активна. Иногда нет заказа на покупку или продажу. В это время платформа FMZ Quant Trading обнаружит значение 0 внизу и сообщит об ошибке. Вы можете использоватьSetErrorFilter("Invalid ticker")
чтобы игнорировать эту ошибку, и использовать функциюGetRawJSON
Здесь я пишу пример для достижения аналогичных функций:
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
}
Когда звонят, мы пишем:Log($.GetTicker(exchange))
Операция размещения заказа очень проста, по сравнению с торговлей фьючерсами, есть только два направления покупки и продажи.
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))
}
Заказ, который только что был сделан, также отображается на симуляторе бота.
И...exchange.GetOrder(id)
можно посмотреть информацию о заказе.
То же самое.CancelOrder
Функция используется для отмены ордера, так же как отмена ордера для торговли фьючерсами.
Получение аккаунта доступных активов точно так же, как торговля фьючерсами, просто позвонитеGetAccount
Функционирует непосредственно.
Симулировать отображение на странице обмена:
Запусти код, чтобы получить.
Мы не можем использовать капсулированныйGetPosition
функция напрямую для позиций, потому что по умолчанию сделка Deribit является сделкой фьючерсов, а не сделкой опционов, мы можем использовать эту функцию только для получения позиций фьючерсов.
Это должна быть наша собственная функция, чтобы получить опционную позицию.
Функциональный интерфейс для получения позиций в документе 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
}
Позвони.Log($.GetPosition(exchange))
чтобы распечатать информацию о местоположении.
Таким образом, основные операции могут быть реализованы, а остальные могут быть изучены для стратегий торговли опционами.