En la carga de los recursos... Cargando...

La transacción de cuantificación del círculo de monedas es algo nuevo - que te acerca a la cuantificación del círculo de monedas.

El autor:Los inventores cuantifican - sueños pequeños, Creado: 2021-06-09 14:30:43, Actualizado: 2023-09-19 21:45:29

img

El círculo de monedas cuantificados transacciones de la nueva apariencia que te lleva cerca de la moneda cuantificados (7).

En el artículo anterior, pensamos juntos, diseñamos una estrategia de red multivariada simple. Luego continuamos aprendiendo en el camino de la negociación cuantitativa. En este artículo, exploramos una estrategia un poco más compleja de diseño de estrategias de cobertura. En este artículo, diseñamos una estrategia de cobertura a largo plazo multivariada, que seguramente no es desconocida para los pequeños socios que están familiarizados con las operaciones de futuros.

La cobertura a largo plazo

El hedge a largo plazo es simplemente hacer un contrato más, hacer un contrato vacío, y esperar a que tres situaciones se equilibren al mismo tiempo:

  • Hacer más ganancias, perder dinero sin hacer nada, una parte de la ganancia es más que una parte de la pérdida, cuando se equilibra, una parte de la ganancia después de compensar las pérdidas.
  • Hacer más pérdidas, ganar dinero sin hacer nada, tener una cabeza más que una pérdida en equilibrio,... (también).
  • El que gana más dinero, el que no gana dinero, y quiere ganar!

Otras situaciones son el descenso, el estancamiento o el aumento de la posición.

设A1为合约A在1时刻的价格,设B1为合约B在1时刻的价格,此时做空A合约,做空价格A1,做多B合约,做多价格B1。
设A2为合约A在2时刻的价格,设B2为合约B在2时刻的价格,此时平仓A合约(平空),平空价格A2,平仓B合约(平多),平多价格B2。

1时刻的差价:A1 - B1 = X 
2时刻的差价:A2 - B2 = Y 
X - Y = A1 - B1 - (A2 - B2)
X - Y = A1 - B1 - A2 + B2
X - Y = A1 - A2 + B2 - B1

可以看到,A1 - A2 就是A合约平仓的盈利差价。
B2 - B1就是B合约平仓的盈利差价。只要这两个平仓总体是正数,即:A1 - A2 + B2 - B1 > 0 就是盈利的。也就是说只要X - Y > 0。
因为:X - Y = A1 - A2 + B2 - B1

得出结论,只要开仓时的差价X大于平仓时的差价Y就是盈利的(注意是做空A,做多B开仓,搞反了就是相反的了),当然这个是理论上的,实际上还要考虑手续费、滑点等因素。

Debido a que los intercambios de moneda digital tienen acuerdos de intercambio, también hay contratos perpetuos. Y el precio del contrato perpetuo siempre está más cerca del precio del mercado actual debido a las tarifas de capitalización. Entonces optamos por usar acuerdos de intercambio y contratos perpetuos con un beneficio de cobertura.

Primero, vamos a hacer una estadística de diferencias de precios multivariadas.

Una vez que los principios básicos se han familiarizado, no hay necesidad de comenzar a escribir estrategias a mano.

Estamos basados enEl acuerdo de OKEXPara diseñar, dibujar gráficos en FMZ es muy sencillo, se pueden dibujar gráficos muy fácilmente con funciones envueltas.Las tablas de mayor importanciaLa función de dibujo en el documento de la API dice:https://www.fmz.com/api#chart...

Dado que son varias variedades, primero se debe determinar la diferencia de esas variedades antes de imprimir el dibujo. Primero escribe dos arquivos en el código, indicando el contrato a hacer.

var arrSwapContractType = ["BTC-USDT-SWAP", "LTC-USDT-SWAP", "ETH-USDT-SWAP", "ETC-USDT-SWAP"]   // 永续合约
var arrDeliveryContractType = ["BTC-USDT-210924", "LTC-USDT-210924", "ETH-USDT-210924", "ETC-USDT-210924"]  // 交割合约

De acuerdo con el código de contrato establecido aquí, la configuración del gráfico se inicializa. Esta configuración del gráfico definitivamente no se puede escribir muerta, ya que tampoco se sabe qué variedad hacer, hacer varias variedades (esto se determina por el valor de arrDeliveryContractType y arrSwapContractType), por lo que la configuración del gráfico se devuelve por una función.

function createCfg(symbol) {
    var cfg = {
        extension: {
            // 不参于分组,单独显示,默认为分组 'group'
            layout: 'single', 
            // 指定高度,可以设置为字符串,"300px",设置数值300会自动替换为"300px"
            height: 300,      
            // 指定宽度占的单元值,总值为12
            col: 6
        },
        title: {
            text: symbol
        },
        xAxis: {
            type: 'datetime'
        },
        series: [{
            name: 'plus',
            data: []
        }]
    }

    return cfg
}

function main() {
    // 声明arrCfg
    var arrCfg = []                                    // 声明一个数组,用来存放图表配置信息
    _.each(arrSwapContractType, function(ct) {         // 迭代记录永续合约代码的数组,用合约名称XXX-USDT部分作为参数传给createCfg函数,构造图表配置信息,返回
        arrCfg.push(createCfg(formatSymbol(ct)[0]))    // createCfg返回的图表配置信息push进arrCfg数组
    })
    var objCharts = Chart(arrCfg)                      // 调用FMZ平台的图表函数Chart,创建图表控制对象objCharts
    objCharts.reset()                                  // 初始化图表内容
    
    // 以下省略.....
}

A continuación vamos a preparar los datos, y usamos la interfaz de mercado agregado de los contratos de OKEX:

El contrato de permanencia de USDT:

https://www.okex.com/api/v5/market/tickers?instType=SWAP

La tasa de cambio de USDT es de aproximadamente:

https://www.okex.com/api/v5/market/tickers?instType=FUTURES

En el caso de la interfaz, la interfaz es la interfaz de la interfaz, la interfaz de la interfaz es la interfaz de la interfaz.

function getTickers(url) {
    var ret = []
    try {
        var arr = JSON.parse(HttpQuery(url)).data
        _.each(arr, function(ele) {
            ret.push({
                bid1: parseFloat(ele.bidPx),             // 买一价
                bid1Vol: parseFloat(ele.bidSz),          // 买一价的量
                ask1: parseFloat(ele.askPx),             // 卖一价
                ask1Vol: parseFloat(ele.askSz),          // 卖一价的量
                symbol: formatSymbol(ele.instId)[0],     // 格式成交易对
                type: "Futures",                         // 类型
                originalSymbol: ele.instId               // 原始合约代码
            })
        })
    } catch (e) {
        return null 
    }
    return ret 
}

Luego escriba una función que maneje el código del contrato.

function formatSymbol(originalSymbol) {
    var arr = originalSymbol.split("-")
    return [arr[0] + "_" + arr[1], arr[0], arr[1]]
}

Lo que queda es combinar los datos obtenidos, calcular las diferencias, producir gráficos, etc. Aquí se prueba la diferencia entre el contrato del segundo trimestre 210 924 y el contrato permanente. El código completo es:

// 临时参数
var arrSwapContractType = ["BTC-USDT-SWAP", "LTC-USDT-SWAP", "ETH-USDT-SWAP", "ETC-USDT-SWAP"]
var arrDeliveryContractType = ["BTC-USDT-210924", "LTC-USDT-210924", "ETH-USDT-210924", "ETC-USDT-210924"]
var interval = 2000

function createCfg(symbol) {
    var cfg = {
        extension: {
            // 不参于分组,单独显示,默认为分组 'group'
            layout: 'single', 
            // 指定高度,可以设置为字符串,"300px",设置数值300会自动替换为"300px"
            height: 300,      
            // 指定宽度占的单元值,总值为12
            col: 6
        },
        title: {
            text: symbol
        },
        xAxis: {
            type: 'datetime'
        },
        series: [{
            name: 'plus',
            data: []
        }]
    }

    return cfg
}

function formatSymbol(originalSymbol) {
    var arr = originalSymbol.split("-")
    return [arr[0] + "_" + arr[1], arr[0], arr[1]]
}

function getTickers(url) {
    var ret = []
    try {
        var arr = JSON.parse(HttpQuery(url)).data
        _.each(arr, function(ele) {
            ret.push({
                bid1: parseFloat(ele.bidPx), 
                bid1Vol: parseFloat(ele.bidSz), 
                ask1: parseFloat(ele.askPx), 
                ask1Vol: parseFloat(ele.askSz), 
                symbol: formatSymbol(ele.instId)[0], 
                type: "Futures", 
                originalSymbol: ele.instId
            })
        })
    } catch (e) {
        return null 
    }
    return ret 
}

function main() {
    // 声明arrCfg
    var arrCfg = []
    _.each(arrSwapContractType, function(ct) {
        arrCfg.push(createCfg(formatSymbol(ct)[0]))
    })
    var objCharts = Chart(arrCfg)
    objCharts.reset()
    
    while (true) {
        // 获取行情数据        
        var deliveryTickers = getTickers("https://www.okex.com/api/v5/market/tickers?instType=FUTURES")
        var swapTickers = getTickers("https://www.okex.com/api/v5/market/tickers?instType=SWAP")
        if (!deliveryTickers || !swapTickers) {
            Sleep(2000)
            continue
        }

        var tbl = {
            type : "table",
            title : "交割-永续差价",
            cols : ["交易对", "交割", "永续", "正对冲", "反对冲"],
            rows : []
        }
        
        var subscribeDeliveryTickers = []
        var subscribeSwapTickers = []
        _.each(deliveryTickers, function(deliveryTicker) {
            _.each(arrDeliveryContractType, function(symbol) {
                if (deliveryTicker.originalSymbol == symbol) {
                    subscribeDeliveryTickers.push(deliveryTicker)
                }
            })
        })
        _.each(swapTickers, function(swapTicker) {
            _.each(arrSwapContractType, function(symbol) {
                if (swapTicker.originalSymbol == symbol) {
                    subscribeSwapTickers.push(swapTicker)
                }
            })
        })
        
        var pairs = []
        var ts = new Date().getTime()
        _.each(subscribeDeliveryTickers, function(deliveryTicker) {
            _.each(subscribeSwapTickers, function(swapTicker) {
                if (deliveryTicker.symbol == swapTicker.symbol) {
                    var pair = {symbol: swapTicker.symbol, swapTicker: swapTicker, deliveryTicker: deliveryTicker, plusDiff: deliveryTicker.bid1 - swapTicker.ask1, minusDiff: deliveryTicker.ask1 - swapTicker.bid1}
                    pairs.push(pair)
                    tbl.rows.push([pair.symbol, deliveryTicker.originalSymbol, swapTicker.originalSymbol, pair.plusDiff, pair.minusDiff])
                    for (var i = 0 ; i < arrCfg.length ; i++) {
                        if (arrCfg[i].title.text == pair.symbol) {
                            objCharts.add([i, [ts, pair.plusDiff]])
                        }                        
                    }                    
                }
            })
        })

        LogStatus(_D(), "\n`" + JSON.stringify(tbl) + "`")        
        Sleep(interval)
    }
}

Disco en funcionamiento

img

¿Qué es lo que está pasando?

img

¡Mira la diferencia de precios!img


Relacionados

Más.

Bios de la trayectoriaEste puede correr directamente, la próxima temporada de OKEX puede ser una falta de liquidez o algo así, caída cuando cae, tormenta cuando sube.

Cuantificación de la microbiologíaMuy bien, muy bien.