Ferramenta de negociação quantitativa de opções de moeda digital de caixa aberto

Autora:Sonhos pequenos, Criado: 2019-12-27 17:35:30, Atualizado: 2023-10-17 21:26:52

img

Ferramenta de negociação quantitativa de opções de moeda digital de caixa aberto

1, Quantificação de opções de moeda digital, transações processadas

Recentemente, muitas bolsas abriram o recurso de negociação de derivativos de opções digitais, que são semelhantes às opções tradicionais, como negociação de opções e negociação de futuros. Embora existam muitas ferramentas de negociação quantitativa de código aberto no mercado, essas ferramentas exigem um conhecimento básico do framework, familiaridade com a linguagem de programação do framework ou precisam realizar manualmente um teste, configuração e modificação complexos.

Inventor quantificaçãoFMZ.COMNo início do design da arquitetura, o suporte à quantificação de vários derivativos financeiros e ao comércio programado foi levado em consideração e o acesso ao comércio de opções foi muito rápido. O comércio de opções é basicamente semelhante ao comércio de futuros e até mesmo mais simples. E sem adicionar novas interfaces, os usuários familiarizados com o FMZ não aumentam outros custos de aprendizagem.

2o, acessar diretamente a Deribit usando a linguagem de programação nativa

Tomemos como exemplo um contrato de opções da Deribit, por exemplo, se quisermos obter o preço indicado de um contrato de opções atual.

Com a linguagem Go:

package main 

import "net/http"
import "io/ioutil"
import "fmt"
import "encoding/json"



func main() {
    // 获取行情, 访问接口:https://www.deribit.com/api/v2/public/ticker?instrument_name=BTC-27DEC19-7250-P

    resp, err := http.Get("https://www.deribit.com/api/v2/public/ticker?instrument_name=BTC-27DEC19-7250-P")
    if err != nil {
        panic(err)
    }

    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }

    ret := string(body)
    fmt.Println("这只是字符串数据ticker:", ret)
    fmt.Println("需要转换为JSON格式") 

    type js struct {
        data interface{}
    }

    ticker := new(js)

    json.Unmarshal([]byte(ret), &ticker.data)

    fmt.Println("ticker:", ticker) 
    fmt.Println("ticker 中的标记价格数据index_price:", ticker.data.(map[string]interface{})["result"].(map[string]interface{})["index_price"])
}

img

O que você pode ver é que você escreveu N mais códigos apenas para obter esses dados.

3. Interfaces de embalagem de plataformas de negociação quantitativas usadas por inventores

O FMZ é um canal de televisão de rádio, que é um canal de televisão de televisão.

function main() {
    exchange.IO("base", "https://test.deribit.com")   # 切换为 交易所提供的模拟盘
    exchange.SetContractType("BTC-3JAN20-7250-P")     # 设置期权合约
    var ticker = exchange.GetTicker()                 # 获取期权行情
    Log(ticker.Info.result.index_price)               # 打印需要的数据,观察
}

img

Como você pode ver, com apenas algumas linhas de código, é muito fácil obter os dados que você precisa.

Isso é apenas uma interface API pública sem assinatura para acessar o exchange, o que é mais complicado se você acessar uma interface privada com assinatura.

Cada interface também tem que lidar com uma série de assinaturas, parâmetros, etc.:

        strBody := ""
	strQuery := ""
	ts := toString(time.Now().UnixNano() / 1e6)
	nonce := toString(time.Now().UnixNano() / 1e6)
	uri := resource
	if httpMethod == "GET" {
		strQuery = encodeParams(params, false)
		uri = fmt.Sprintf("%s?%s", resource, strQuery)
	} else if httpMethod == "POST" {
		if len(raw) > 0 && len(raw[0]) > 0 {
			strBody = raw[0]
		} else {
			strBody = json_encode(params)
		}
	}

	strRequestDate := fmt.Sprintf("%s\n%s\n%s\n", httpMethod, uri, strBody)
	strToSign := fmt.Sprintf("%s\n%s\n%s", ts, nonce, strRequestDate)
	h := hmac.New(sha256.New, []byte(p.secretKey))
	h.Write([]byte(strToSign))
	strSign := hex.EncodeToString(h.Sum(nil))

	req := Request{
		Method:  httpMethod,
		Uri:     fmt.Sprintf("%s%s", p.apiBase, uri),
		Timeout: p.timeout,
		Body:    strBody,
	}

4, necessidades e funções mais complexas

Além disso, se for usado para processar um banco de código que precisa de concomitância, aquisição assíncrona de transações, subordinação de operações e para processar um banco de código assíncrono, é necessário escrever uma lógica de processamento assíncrona mais complexa, um que não deixa de ser usado pode causar problemas de design de lógica, como bloqueio morto. Se for usado para mostrar gráficos, então é preciso aprender a usar um grande banco de dados, mesmo um comerciante de quantificação com base em programação. Mas o uso de inventor quantificação é muito simples, pois esses recursos já estão instalados e os interfaces de chamada projetados são muito simples de usar.

function main(){
    exchange.IO("base", "https://test.deribit.com")
    exchange.SetContractType("BTC-27DEC19-7250-P")
    while(1){
        var records = exchange.GetRecords()
        Log(records)
        $.PlotRecords(records, "K")
        Sleep(1000)
    }
}

Usando a biblioteca de modelos oferecida pela plataforma, "Draw Line Library", é muito simples criar gráficos de K-lines:img

E há mais recursos para explorar e desenvolver!

5 e nota posterior

Se for implementado diretamente com uma linguagem similar à go (ou python, etc.), os novos alunos podem ser imediatamente expulsos. Para mais informações sobre a estratégia de exemplo de operação de opções da Deribit:https://www.fmz.com/strategy/179475


Relacionados

Mais.