Modificação da API de futuros da Deribit para permitir negociação quantitativa de opções

Autora:Sonhos pequenos, Criado: 2019-10-29 14:57:54, Atualizado: 2023-10-17 21:20:50

img

Existem muitas casas de câmbio de futuros de moeda digital, mas como derivativos de futuros, o comércio de opções de moeda digital, não há muitas casas de câmbio no mercado atualmente, com Deribit, BitMEX. No campo da negociação quantitativa, o comércio de opções também possui várias estratégias, como a estratégia de opções mencionada em algumas informações:

Tipo
Estratégias orientadas: Comprar opções binárias Venda de opções binárias O preço do óleo é baixo no mercado Preço de ouro em baixa
Comprar opções binárias Venda de opções binárias Os preços do urânio estão em baixa Preço de baixa no mercado de ursos
A estratégia de volatilidade: Venda de transversal Venda de extensão Comprar em formato transversal Compra de larga distância
Estratégias de hedge: Prepare-se para ver. Preparação para descer A proteção da sabedoria A queda da proteção
Multidimensional Bálsamo da cabeça

Citação deConexão

A elaboração de estratégias de negociação de opções ainda requer uma base sólida, sendo necessária a familiaridade com as operações básicas de submissão, aquisição de mercado, retirada de ordem, aquisição de participações. A elaboração de estratégias ainda usa a plataforma de negociação quantitativa do inventor, embora a plataforma de negociação quantitativa do inventor atualmente seja o principal suporte para o campo de negociação quantitativa de moedas digitais.

Informações sobre Deribit

Documentos da API:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrumentSimulador:https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument

É possível registrar uma conta no site do disco analógico, abrir o API KEY e acessar o API KEY. A configuração na plataforma de negociação quantitativa do inventor é a mesma que a configuração do disco real.img

Os quatro conceitos básicos que você precisa entender sobre negociação de opções são:img

  • Dia de Execução: Entrega do contrato de opções entre as partes mais vazias da opção nessa data.
  • Preço de subscrição: no dia da subscrição, a cessão de um contrato de opções é concluída pela maioria das partes do espaço de opções no preço de subscrição.
  • O preço do direito: é o preço da opção, que, tal como os futuros em tempo real, oferece um preço de compra e um preço de venda. É importante ressaltar que, como a liquidez das opções é geralmente inferior à dos futuros e a dos contados, o diferencial de preço de compra e venda pode ser muito grande. É importante notar que, após a transação, o preço de transação é o custo do multiproprietário da opção, quando o multiproprietário obtém o direito (exercício do direito de opção); enquanto o cabeçalho da opção, como pagamento do direito, acrescenta uma obrigação, uma vez que o cabeçalho exige o exercício do direito, o cabeçalho deve colaborar.
  • A opção "Call" e "Put" é: Uma opção de compra ou venda é uma opção que possui um número de opções em um determinado dia de negociação, a um determinado preço de negociação, para exigir do cabeçalho da opção o direito de comprar um determinado bitcoin, com o cabeçalho com a obrigação de cooperar; e uma opção de queda é uma opção que possui um número de opções em um determinado dia de negociação, a um determinado preço de negociação, para exigir do cabeçalho da opção o direito de vender um determinado bitcoin, com a obrigação de cooperar.

Acessos

A API da Deribit mostra que a interface de mercado da Deribit é apenas para acessar o mercado de futuros ou opções.instrument_nameOs parâmetros são diferentes (instrument_name é definido pela função SetContractType), então você pode basicamente usar a interface para obter o mercado.GetTickerO mercado de opções também está se tornando mais ativo.

Naturalmente, o padrão padrão para o invento da plataforma de negociação quantitativa é o disco físico da Deribit, mas primeiro precisamos mudar para o disco analógico, usando o seguinte código:

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

E então nós colocamos o atual como um contrato de opçõesBTC-27DEC19-7000-PNão, não é. Esta é a data do prazo de vencimento: 27DEC19, preço do prazo de vencimento: 7000 opções de baixa.

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

Então, nós escrevemos juntos, nós deixamos o código funcionar, e testamos a forma como podemos obter esse contrato de opções.

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

A ferramenta de depuração pode ser usada para testar facilmente:imgO preço é o mesmo que o preço do disco analógico.img

A maioria dos outros tipos de chamadas de interfaces são consistentes e não serão descritos aqui, mas é importante notar que: A negociação de opções não é muito ativa, e às vezes ocorre uma transação sem pagamento ou sem venda, quando os inventores quantificam o fundo da plataforma de negociação, detectando um valor de zero, e informam o erro.SetErrorFilter("Invalid ticker")O problema é que a maioria dos blogueiros não sabe o que fazer.GetRawJSONA função pode obter dados de envelopes de informações primas do mercado, e aqui eu escrevi um exemplo para executar uma função semelhante:

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
}

O Facebook também divulgou uma mensagem no Twitter.Log($.GetTicker(exchange))

Lista abaixo

A operação abaixo é muito simples, comparada com a negociação de futuros, apenas compra e venda em duas direções.Sell,BuyA função substitui-se.

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

A simulação também mostra as encomendas que foram feitas.img

E tambémexchange.GetOrder(id)Os pedidos podem ser consultados.

Retirada

A mesma coisa que é usada para retirar o pedido éCancelOrderA função é a mesma que a retirada de depreciação em negociações de futuros.img

Acesso a ativos disponíveis na conta

Aceder a uma conta de ativos disponíveis é exatamente o mesmo que negociar futuros, chamando diretamenteGetAccountA função pode ser.

Apresentação na página da bolsa de simulaçãoimg

O código de execução foi obtido:img

Obtenção de informações sobre o estoque

A partir de agora, o produto pode ser vendido no mercado.GetPositionA função Deribit não funciona, pois, por padrão, a negociação do Deribit é uma negociação de futuros e não uma negociação de opções, e só pode ser usada para obter a posse de futuros. Assim, isso significa que temos que começar a envelopar a função de obter opções de ações.

Interfaces de funções para obter armazéns na 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
}

ChamadaLog($.GetPosition(exchange))A partir daí, a empresa começou a produzir produtos de alta qualidade.img img

Assim, as operações básicas podem ser realizadas e o restante pode ser estudado em estratégias de negociação de opções.


Relacionados

Mais.