avatar of 发明者量化-小小梦 发明者量化-小小梦
Seguir Mensajes Privados
4
Seguir
1271
Seguidores

Herramienta de negociación cuantitativa de opciones de moneda digital lista para usar

Creado el: 2019-12-27 17:35:30, Actualizado el: 2023-10-17 21:26:52
comments   0
hits   2907

Herramienta de negociación cuantitativa de opciones de moneda digital lista para usar

Herramienta de negociación cuantitativa de opciones de moneda digital lista para usar

1. Comercio cuantitativo y programado de opciones de divisas digitales

Recientemente, muchas bolsas han comenzado a negociar derivados de opciones de divisas digitales. De manera similar a las opciones tradicionales, la combinación de negociación de opciones y negociación de futuros puede crear una variedad de estrategias y métodos de negociación. Si bien existen muchas herramientas comerciales cuantitativas de código abierto en el mercado, estas herramientas a menudo requieren comprender el marco subyacente, estar familiarizado con el lenguaje de programación utilizado para escribir el marco o realizar manualmente depuraciones, configuraciones y modificaciones complejas. No es muy conveniente para los novatos que son nuevos en el comercio programático y el comercio cuantitativo. Gran parte del tiempo que debería haberse centrado en estrategias e ideas comerciales se dedica a depurar programas y aprender lenguajes de programación.

Al diseñar su arquitectura inicial, FMZ.COM tuvo en cuenta el soporte para el comercio cuantitativo y programado de varios derivados financieros, y se conectó rápidamente al comercio de opciones. El comercio de opciones es básicamente similar al comercio de futuros, o incluso más simple. Y no se añaden nuevas interfaces. Los usuarios que están familiarizados con el uso de FMZ no incurrirán en ningún coste de aprendizaje adicional. Solo necesitan configurar contratos de opciones como contratos de futuros para obtener información del mercado, realizar pedidos, cancelar pedidos, verificar posiciones y realizar otras tareas. Operaciones sobre contratos de opciones.

2. Acceda al intercambio de Deribit directamente utilizando el lenguaje de programación nativo

Tomemos como ejemplo el contrato de opciones bursátiles de Deribit. Por ejemplo, queremos obtener el precio índice de un contrato de opciones vigente.

Implementado en 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"])
}

Herramienta de negociación cuantitativa de opciones de moneda digital lista para usar

Puedes ver que se escribió mucho código sólo para obtener estos datos.

3. Utilice la interfaz encapsulada por la Plataforma de Comercio Cuantitativo de Inventor

Usamos FMZ para hacerlo en sólo dos frases.

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)               # 打印需要的数据,观察
}

Herramienta de negociación cuantitativa de opciones de moneda digital lista para usar

Como puedes ver, con sólo unas pocas líneas de código, es muy fácil obtener los datos requeridos.

Esto solo implica acceder a la interfaz API pública no firmada del exchange. Acceder a la interfaz privada firmada será más complicado.

Cada interfaz también necesita realizar una gran cantidad de procesamiento de firmas, parámetros y otros:

        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. Requisitos y funciones más complejos

No solo eso, si necesita obtener información del mercado y realizar pedidos de manera simultánea y asincrónica, y utiliza una biblioteca de códigos que maneja operaciones asincrónicas, necesita escribir una lógica de procesamiento asincrónico más compleja, lo que puede causar problemas de diseño lógico, como bloqueos si no está seguro. No tengo cuidado. Si necesita volver a utilizar la visualización de gráficos, tendrá que aprender a utilizar muchas bibliotecas. Incluso a un operador cuantitativo con conocimientos básicos de programación le llevará algún tiempo aprender a hacerlo. Sin embargo, es mucho más sencillo utilizar Inventor Quantization, porque estas funciones han sido encapsuladas y las interfaces de llamada diseñadas son muy simples y fáciles de usar. Puedes usar muy poco código para implementar las distintas funciones necesarias.

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)
    }
}

Utilizando la biblioteca de plantillas “Drawing Line Library” proporcionada por la plataforma, es muy fácil dibujar un gráfico de líneas K: Herramienta de negociación cuantitativa de opciones de moneda digital lista para usar

¡Hay muchas más funciones para explorar y desarrollar!

5. Posdata

Si utiliza el lenguaje Go (o Python, etc.) como el anterior para implementarlo, los nuevos estudiantes pueden desanimarse directamente >_< Para ver una estrategia de muestra sobre las opciones de Deribit, consulte: https://www.fmz.com/strategy/179475