En el caso de las opciones de divisas digitales, las opciones de divisas digitales son las opciones de divisas digitales disponibles para el mercado.

El autor:- ¿ Por qué?, Creado: 2022-12-23 22:12:54, Actualizado: 2023-09-20 10:41:08

img

En el caso de las opciones de divisas digitales, las opciones de divisas digitales son las opciones de divisas digitales disponibles para el mercado.

1. Comercio cuantitativo y programático de opciones de moneda digital

Recientemente, muchos intercambios han abierto sucesivamente la función de negociación de opciones de moneda digital como derivado. Al igual que las opciones tradicionales, el comercio de opciones y el comercio de futuros se pueden combinar para formar muchas estrategias y métodos de negociación. Aunque hay muchas herramientas de comercio cuantitativo de código abierto en el mercado, estas herramientas a menudo necesitan comprender el marco subyacente, estar familiarizadas con el lenguaje de programación para escribir el marco, o realizar manualmente depuración, configuración y modificación complejas. No es muy conveniente para los principiantes del comercio de programas y el comercio cuantitativo.

En el diseño inicial de la arquitectura, el FMZ Quant (FMZ.COMEn la actualidad, el mercado de opciones es muy similar al de futuros, o incluso más simple. Además, no hay una nueva interfaz. Los usuarios que están familiarizados con la plataforma FMZ no aumentarán otros costos de aprendizaje. Solo pueden configurar el contrato de opción como un contrato de futuros para obtener información del mercado, realizar órdenes, cancelar órdenes, consultar posiciones, etc.

2. Acceder a Deribit Exchange directamente utilizando el lenguaje de programación nativo

Tomemos el contrato de opción de Deribit Exchange como ejemplo. Por ejemplo, necesitamos obtener el precio índice de un contrato de opción actual.

Implementado en el lenguaje Go:

package main 

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



func main() {
    // Get ticker, access interface: 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("This is just string data ticker:", ret)
    fmt.Println("Need to convert to JSON format") 

    type js struct {
        data interface{}
    }

    ticker := new(js)

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

    fmt.Println("ticker:", ticker) 
    fmt.Println("index_price, marked price data in ticker:", ticker.data.(map[string]interface{})["result"].(map[string]interface{})["index_price"])
}

Utilizando la interfaz encapsulada por la plataforma de comercio de FMZ Quant

Lo terminamos usando la plataforma FMZ en dos oraciones simples.

function main() {
    exchange.IO("base", "https://test.deribit.com")   # Switch to the demo offered by the exchange
    exchange.SetContractType("BTC-3JAN20-7250-P")     # Set up options contracts
    var ticker = exchange.GetTicker()                 # Get options ticker
    Log(ticker.Info.result.index_price)               # Print the required data and observe
}

img img

Como podemos ver, es muy simple obtener los datos requeridos en sólo unas pocas líneas de código.

Esto es solo acceder a la interfaz API pública no firmada del intercambio; acceder a la interfaz privada firmada sería más complicado.

Cada interfaz tiene que hacer una gran cantidad de firma, procesamiento de 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. Requisitos y funciones más complejos

No solo eso, si necesita usar acceso concurrente, asíncrono al mercado, operaciones de orden y la biblioteca de código para manejar asíncrono, necesita escribir una lógica de procesamiento asíncrona más compleja. Una falta de atención también puede causar problemas de diseño de lógica como bloqueo. Si necesita usar nuevamente la pantalla de gráficos, entonces necesita aprender a usar muchas bibliotecas. Incluso un operador cuantitativo con una base de programación necesita algo de tiempo para aprender. Sin embargo, es mucho más fácil usar la plataforma FMZ Quant, porque estas funciones se han encapsulado, y las interfaces de llamada diseñadas son muy simples y fáciles de usar. Puede usar muy poco código para implementar las funciones de varios requisitos.

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 la biblioteca de plantillas Plot Library proporcionada por la plataforma, es fácil dibujar un gráfico de líneas K:

img

¡Hay más funciones que explorar y desarrollar!

5. Poscripción

Si se implementa directamente en el lenguaje go (o Python, etc.) como el anterior, los nuevos estudiantes pueden ser desalentados directamente>_< Por ejemplo, las estrategias de operación de la opción Deribit, véase:https://www.fmz.com/strategy/179475


Relacionados

Más.