Modificación de la API de futuros de Deribit para adaptarse a las operaciones cuantificadas de opciones

El autor:Un sueño pequeño., Creado: 2019-10-29 14:57:54, Actualizado: 2023-10-17 21:20:50

img

En la actualidad, existen muchos intercambios de futuros de moneda digital, pero como derivados de futuros, el comercio de opciones de moneda digital, actualmente no hay muchos intercambios en el mercado, que apoyan el comercio de opciones, como Deribit, BitMEX. En el campo de la negociación cuantitativa, el comercio de opciones también tiene varias estrategias, como la estrategia de opciones mencionada en algunas de las búsquedas:

Tipo de trabajo
Las estrategias orientadas: Comprar opciones de venta Vender opciones de baja El precio del aluminio en el mercado de vacas Los precios de los precios de los toros están bajando
Comprar opciones de baja Vender opciones de venta Los precios del aluminio en los mercados bajistas Los precios de los mercados bajados
Las estrategias de fluctuación: Se vende el transversal Se vende a largo plazo Comprar en línea Compra de un largo alcance
Las estrategias de cobertura: Prepárense y miren. El estado de alerta está bajando. La protección de los ojos Baja de la protección
Las fronteras bilaterales Dos límites de la cabeza vacía

Citado porConexión

La redacción de estrategias de negociación de opciones requiere una base sólida, con operaciones básicas, obtención de mercado, retirada de orden, obtención de tenencias, etc.. La redacción de estrategias sigue utilizando la plataforma de negociación cuantitativa de inventores, aunque la plataforma de negociación cuantitativa de inventores es actualmente el principal soporte para el campo de la negociación cuantitativa de monedas digitales.

Información sobre Deribit

La documentación de la API:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrumentEl disco de simulación:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument

Se puede registrar una cuenta en el sitio web de la placa analógica, abrir la API KEY y acceder a la API KEY. La configuración en la plataforma de negociación cuantitativa del inventor es la misma que la configuración de la placa real.img

Los cuatro conceptos básicos para entender el comercio de opciones son:img

  • Día de ejecución: la entrega del contrato de opciones se completa en esa fecha por las partes con más espacio de la opción.
  • Precio de venta: En el día de venta, la mayoría de las partes del espacio de la opción completan el contrato de opciones con el precio de venta.
  • Precio de derecho: es decir, el precio de la opción, que, como los futuros en efectivo, ofrece un precio de compra y un precio de venta. Cabe destacar que, debido a que la liquidez de las opciones es generalmente inferior a la de los futuros y los activos, la diferencia de precio de compra y venta puede ser muy grande. Tenga en cuenta que, después de la transacción, el precio de transacción es el costo de la opción multipropiedad, en el que la multipropiedad obtiene el derecho (el derecho de ejercer la opción); mientras que el cabezal de la opción como el pago de los derechos, añade una obligación, una vez que la multipropiedad solicita ejercer el derecho, el cabezal debe cooperar.
  • La opción de "Call" y "Put" es: Las opciones de venta son las opciones en las que varias partes tienen el derecho de comprar bitcoins establecidos en un día de venta, a un precio de venta determinado, y las opciones en las que varias partes tienen la obligación de comprar bitcoins establecidos.

Obtención de información

Al ver los documentos de la API de Deribit, se puede ver que la interfaz de mercado de Deribit es sólo una entrada para acceder a los mercados de futuros u opciones.instrument_nameSi los parámetros son diferentes (instrument_name está configurado a través de la función SetContractType), entonces se puede usar básicamente la interfaz de acceso al mercado.GetTickerEl mercado de opciones también ha cambiado.

Por supuesto, los inventores de la plataforma de intercambio cuantitativo están envueltos por defecto en el disco físico de Deribit, primero debemos cambiar al disco analógico, usando el siguiente código:

exchange.IO("base", "https://test.deribit.com")

Y luego ponemos el actual contrato de opciones.BTC-27DEC19-7000-P¿Qué es esto? Esta es la fecha de venta: 27DEC19 y el precio de venta: 7000 opciones a la baja

exchange.SetContractType("BTC-27DEC19-7000-P")

Luego, obtuvimos, escribimos juntos, ejecutamos el código y probamos cómo obtener este contrato de opciones.

function main () {
    exchange.IO("base", "https://test.deribit.com")
    exchange.SetContractType("BTC-27DEC19-7000-P")
    var ticker = exchange.GetTicker()
    Log(ticker)
}

Las herramientas de depuración son muy fáciles de probar:imgEl precio de los discos es el mismo que el de los discos de simulación.img

En el caso de las llamadas a través de las interfaces de otros sectores, las mismas no se describen aquí, pero hay que tener en cuenta que: Las operaciones de opciones no son muy activas, y a veces se producen situaciones en las que no se paga o no se vende, cuando los inventores cuantifican la base de la plataforma de negociación y detectan un valor de cero, que puede utilizarse para generar un error.SetErrorFilter("Invalid ticker")No obstante, la mayoría de los bloggers no están de acuerdo con el informe.GetRawJSONEn el caso de las funciones que obtienen datos de envase de información primaria de los mercados, aquí escribo un ejemplo para implementar una función similar:

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
}

La llamada dice:Log($.GetTicker(exchange))

La lista de abajo

La operación es muy sencilla, comparada con el comercio de futuros, solo hay dos direcciones de compra y venta.Sell,BuyLas funciones se ordenan.

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

En el simulacro también aparecen los pedidos que acaban de hacerse.img

Y tambiénexchange.GetOrder(id)En la página web de la empresa, se puede consultar la información de los pedidos.

Retiro de la cuenta

La misma aplicación se usa para retirar la cuenta.CancelOrderLa función es la misma que la retirada de dinero en el comercio de futuros.img

Acceso a los activos disponibles en la cuenta

Obtener activos disponibles en la cuenta es exactamente lo mismo que cuando se negocian futuros.GetAccountLa función puede ser.

Muestra en la página de la bolsa de simulaciónimg

Obtención del código de ejecución:img

Obtención de información sobre las existencias

No se puede usar directamente el envase en el almacenamiento.GetPositionLa función de Deribit es la de los futuros y no de las opciones, por lo que se puede obtener solo el mantenimiento de futuros con esta función. Por lo tanto, esto significa que tenemos que envasar nosotros mismos la función de obtener opciones.

Interfaz de función para obtener el almacenamiento en la 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
}

LlamadoLog($.GetPosition(exchange))También se puede imprimir información sobre el almacén.img img

De esta manera, las operaciones básicas pueden ser realizadas, y el resto puede ser estudiado en estrategias de comercio de opciones.


Relacionados

Más.