
Ya existen muchas bolsas de futuros de divisas digitales, pero como derivado de futuros, negociación de opciones de divisas digitales, no hay muchas bolsas en el mercado. Las bolsas que admiten la negociación de opciones incluyen Deribit y BitMEX. En el campo del trading cuantitativo, también existen muchas estrategias para el trading de opciones, como las estrategias de opciones mencionadas en algunos materiales buscados:
| tipo | |||||
|---|---|---|---|---|---|
| Estrategia direccional: | Comprar una opción de compra | Venta de una opción de venta | Spread de compra de opciones alcistas | Spread de venta alcista | |
| – | Comprar opción de venta | Venta de una opción de compra | Spread de compra de opciones bajistas | Spread de venta bajista | |
| Estrategias de volatilidad: | Venta de straddle | Venta de Straddle ancho | Comprar Straddle | Comprar Straddle ancho | |
| Estrategias de cobertura: | Llamada cubierta | Opción de venta cubierta | Llamadas de protección | Póngalo protector | |
| – | Límite doble largo | Posición corta de doble límite | – | – |
Citado deconectar
Para escribir una estrategia de negociación de opciones, primero es necesario sentar una base sólida y familiarizarse con operaciones básicas como realizar órdenes, obtener información del mercado, cancelar órdenes y obtener posiciones. La redacción de estrategias aún utiliza la plataforma de negociación cuantitativa Inventor, aunque actualmente esta admite principalmente el comercio de moneda a moneda, el comercio de contratos y el comercio apalancado en el campo del comercio cuantitativo de moneda digital. No hay mucha información relacionada con el comercio de opciones. A continuación, tomaremos el intercambio “Deribit” como ejemplo para presentar cómo utilizar la plataforma de comercio cuantitativo Inventor para operar con opciones de divisas digitales.
Documentación de la API: https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument Disco de simulación: https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument
Puede registrar una cuenta en el sitio web de la plataforma de simulación, habilitar la CLAVE API y obtener la CLAVE API. La configuración en la plataforma de comercio cuantitativo de Inventor es igual que la configuración de una cuenta real.

Hay 4 conceptos básicos que debes comprender para operar con opciones:

Según la documentación de la API de Deribit Exchange, la interfaz de mercado de Deribit solo pasa los datos para acceder a la información del mercado de futuros u opciones.instrument_nameLos parámetros son diferentes (instrument_name se establece mediante la función SetContractType), por lo que básicamente puedes usar la interfaz para obtener información del mercado.GetTickerObtenga cotizaciones para las opciones.
Por supuesto, el paquete predeterminado de la plataforma de negociación cuantitativa Inventor es el mercado real de Deribit Exchange. Primero debemos cambiar al mercado de simulación y utilizar el siguiente código:
exchange.IO("base", "https://test.deribit.com")
Luego actualmente configuramos un contrato de opciónBTC-27DEC19-7000-P:
Esta es una opción de venta con fecha de ejercicio: 27DEC19 y precio de ejercicio: 7000
exchange.SetContractType("BTC-27DEC19-7000-P")
Luego, consígalo. Lo escribimos juntos, ejecutamos el código y hacemos pruebas para obtener la información del mercado de este contrato de opción.
function main () {
exchange.IO("base", "https://test.deribit.com")
exchange.SetContractType("BTC-27DEC19-7000-P")
var ticker = exchange.GetTicker()
Log(ticker)
}
El uso de herramientas de depuración puede resultar muy conveniente para probar:
Puedes ver que el precio es consistente con el del disco de simulación.

Los métodos de llamada de otras interfaces de mercado son los mismos y no se repetirán aquí. Cabe señalar que:
El comercio de opciones no es muy activo. A veces no habrá órdenes de compra ni órdenes de venta. En este momento, la capa inferior de la plataforma de comercio cuantitativo de Inventor detectará un valor de 0 e informará un error. Puede utilizarSetErrorFilter("Invalid ticker")Ignore este error y utiliceGetRawJSONLa función obtiene la información original del mercado y encapsula los datos. Aquí escribo un ejemplo para lograr funciones similares:
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
}
Al llamar escribe:Log($.GetTicker(exchange))
La operación de colocación de órdenes es muy sencilla. En comparación con el trading de futuros, solo hay dos direcciones: compra y venta. Utilice tambiénSell,BuyOrden de funciones.
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))
}

La orden recién realizada también aparece en el tablero de negociación simulado.

yexchange.GetOrder(id)Puede consultar la información del pedido.
El mismo método se utiliza para la cancelación de pedidos.CancelOrderFunción, igual que cancelar una orden en el comercio de futuros.

La obtención de los activos disponibles en una cuenta es exactamente igual que en la negociación de futuros. Llamada directaGetAccountFunción.
Visualización en la página de intercambio simulado

Ejecute el código para obtener:

Para mantener posiciones, no se puede utilizar directamente el paqueteGetPositionfunción, porque por defecto las transacciones de Deribit son transacciones de futuros, no transacciones de opciones, y solo esta función se puede utilizar para obtener posiciones de futuros.
Por lo tanto, debemos encapsular la función de obtener posiciones de opciones por nosotros mismos.
La interfaz de función para obtener posiciones en la documentación de la 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
}
LlamarLog($.GetPosition(exchange))Puede imprimir la información de la posición.

De esta manera se pueden realizar las operaciones básicas y el resto es estudiar las estrategias de trading con opciones.