Opciones de divisas digitales para el comercio cuantificado de la caja abierta

El autor:Un sueño pequeño., Creado: 2019-12-27 17:35:30, Actualizado: 2023-10-17 21:26:52

img

Opciones de divisas digitales para el comercio cuantificado de la caja abierta

1. Cuantificación de opciones de moneda digital, transacciones programadas

Recientemente, muchos intercambios han abierto sucesivamente la función de negociación de este derivado de la moneda digital, que se asemeja a las opciones tradicionales, las operaciones de opciones y las operaciones de futuros, etc. en combinación, se pueden combinar muchas estrategias de negociación, métodos de negociación. Aunque hay muchas herramientas de negociación cuantitativa de código abierto en el mercado, estas herramientas requieren un conocimiento de la base del marco, familiaridad con el lenguaje de programación del marco o requieren realizar manualmente complejos despaches, configuraciones y modificaciones.

El inventor de la cuantificaciónFMZ.COMEn los primeros diseños de la arquitectura, se consideró el apoyo a la cuantificación de diversos derivados financieros, la negociación programática y el acceso muy rápido a las operaciones de opciones. Las operaciones de opciones son básicamente similares a las operaciones de futuros, incluso más simples. Y sin añadir nuevas interfaces, los usuarios familiarizados con FMZ no aumentan otros costos de aprendizaje, solo se pueden realizar operaciones de compra, venta, retiro, consulta, mantenimiento de reservas, etc. con el contrato de opciones como un contrato de futuros.

2o, acceder directamente a la bolsa Deribit con el lenguaje de programación nativo

Tomemos como ejemplo el contrato de opciones de Deribit, por ejemplo, el precio del índice de un contrato de opciones en curso.

Se ha 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"])
}

img

Se puede ver que se escribe N más de un montón de código sólo para obtener este dato.

3. Interfaz de envase de plataforma de intercambio cuantificada por el inventor

En la página web de FMZ, se puede leer:

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 se puede ver, con solo unas líneas de código, es muy fácil obtener los datos que necesitas.

Se trata de una interfaz API pública sin firmar para acceder a los intercambios, que es más complicada si se accede a una interfaz privada con firmas.

Cada interfaz también tiene un montón de firmas, parámetros y otras cosas que procesar:

        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. Necesidades y funciones más complejas

No solo eso, si se necesita paralela, sincronización, obtención de transacciones, operaciones de orden, y para manejar bases de código sincronizadas, se requiere escribir una lógica de procesamiento sincronizado más compleja, una que no deja de lado puede causar problemas de diseño lógico, como bloqueo muerto. Si se requiere que se muestre el gráfico, luego se necesita aprender a usar una gran pila de bases de datos, incluso un operador cuantificado con base en programación, también se necesita un cierto tiempo de aprendizaje.

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

La biblioteca de plantillas de la plataforma, llamada "Draw Line Class Library", es muy simple para crear gráficos de K-line:img

¡Hay más funciones para explorar y desarrollar!

5 y recuerde.

Si se implementa directamente con un lenguaje similar a go (o python, etc.), es posible que los nuevos compañeros sean rechazados directamente >_< Para más información sobre las estrategias de ejemplo de operaciones con opciones de Deribit:https://www.fmz.com/strategy/179475


Relacionados

Más.