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

Más detalles de la actualización de la API de la plataforma de intercambio cuantitativa de inventores: mejorar la experiencia de diseño estratégico

El autor:Los inventores cuantifican - sueños pequeños, Creado: 2024-06-28 09:08:29, Actualizado: 2024-11-01 10:08:12

[TOC] ¿Qué quieres decir?

img

Prólogo

Los inventores de la plataforma de intercambio cuantitativo se rediseñaron varias veces después de nueve años de iterativas tecnológicas, aunque como usuarios es posible que no lo notemos. En los últimos dos años, la plataforma ha realizado una serie de optimizaciones y mejoras en la experiencia del usuario, incluida una interfaz de usuario totalmente actualizada, herramientas de intercambio cuantitativo más comunes y más soporte para datos de retrospección.

Para facilitar el diseño de la política, la lógica de transacción más clara y más fácil de manejar para los principiantes, la plataforma ha actualizado la interfaz API utilizada por la política. Los administradores de las últimas versiones pueden activar estas nuevas funciones. La plataforma sigue siendo compatible con las llamadas de las interfaces antiguas.

Entonces, a través de este artículo, vamos a ver qué actualizaciones de actualización de interfaces existen y qué cambios se necesitan para que las políticas antiguas sean compatibles con la API actual.

1 - Nuevo API

exchange.GetTickers函数

Este tipo de interfaz de mercado agregado es esencial para diseñar estrategias de múltiples variedades, estrategias de monitoreo de mercados en todo el mercado. Para que las estrategias sean más fáciles de desarrollar y evitar la repetición de las ruedas, los inventores de las plataformas de comercio cuantitativo envuelven API de intercambio.

Si el intercambio no tiene esta interfaz (excambio individual), puede llamarexchange.GetTickers()En el caso de los bloggers, el error es el siguiente: No apoyar.

La función no tiene ningún parámetro y devuelve al exchange datos de mercado en tiempo real de todas las variedades agregadas en la interfaz de mercado. Se puede entender simplemente como:

exchange.GetTickers()La función esexchange.GetTicker()La variedad completa de versiones solicitadas de las funciones (cuidado, la diferencia entre los dos nombres de funciones es solo un plural) ‒.

En la actualidad, la mayoría de los usuarios de la plataforma están utilizando la plataforma para realizar pruebas en el ambiente de simulación de disco de OKX:

function main() {
    exchange.IO("simulate", true)

    var tickers = exchange.GetTickers()
    if (!tickers) {
        throw "tickers error"
    }

    var tbl = {type: "table", title: "test tickers", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
    for (var i in tickers) {
        var ticker = tickers[i]
        tbl.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
    }

    LogStatus("`" + JSON.stringify(tbl) +  "`")
    return tickers.length
}

img

exchange.CreateOrder函数

Nuevo aumentoexchange.CreateOrder()La función es el punto de partida de esta actualización.exchange.CreateOrder()La función más importante es especificar directamente en los parámetros de la función la variedad, dirección o tipo de pedido. De este modo, no depende de la configuración actual del sistema para los pares de transacciones, el código de contrato, la dirección de transacción, etc.

En el caso de los escenarios de transacciones múltiples, la complejidad del diseño se reduce en gran medida en los escenarios de concurrencia.exchange.CreateOrder()Los cuatro parámetros de la función son:symbolsidepriceamount

Las pruebas en el entorno del disco de simulación de futuros de OKX:

function main() {
    exchange.IO("simulate", true)

    var id1 = exchange.CreateOrder("ETH_USDT.swap", "buy", 3300, 1)
    var id2 = exchange.CreateOrder("BTC_USDC.swap", "closebuy", 70000, 1)
    var id3 = exchange.CreateOrder("LTC_USDT.swap", "sell", 110, 1)

    Log("id1:", id1, ", id2:", id2, ", id3:", id3)
}

img

Así que sólo se usa tres veces.exchange.CreateOrder()Las llamadas de función dan lugar a tres tipos diferentes de órdenes de futuros, en diferentes direcciones.

exchange.GetHistoryOrders函数

Nuevo aumentoexchange.GetHistoryOrders()La función se utiliza para obtener órdenes de transacción históricas de una variedad, que también requiere soporte de la interfaz del intercambio.

Para consultar los pedidos históricos, las interfaces implementadas por los intercambios son muy diferentes:

  • Algunos soportan consultas separadas, otros no.
  • Algunas transacciones no pueden ser consultadas durante todo el período de la ventana de consulta, es decir, los pedidos de más de N días.
  • La mayoría de los intercambios apoyan la consulta de horarios específicos, algunos no.

Para que este tipo de interfaces se envuelvan con la máxima compatibilidad, en el uso real se debe tener en cuenta si cumplen con las necesidades y expectativas de la política.

Para más información sobre las funciones, consulte el manual de gramática de la API:

https://www.fmz.com/syntax-guide#fun_exchange.gethistoryorders

Las pruebas en el entorno real de la moneda real:

function main() {
    var orders = exchange.GetHistoryOrders("ETH_USDT")

    // 写入图表
    var tbl = {type: "table", title: "test GetHistoryOrders", cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
    for (var order of orders) {
        tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
    }
    
    LogStatus("orders.length:", orders.length, "\n", "`" + JSON.stringify(tbl) +  "`")
}

img

exchange.GetPositions函数

La función de almacenamiento de datos de la versión anterior fueexchange.GetPosition()En esta actualización, se ha añadido una nueva función de obtención de almacenamiento para que se adapte mejor a la semántica del nombre de la función:exchange.GetPositions()También es compatible con la función GetPosition.

Tenga en cuenta que los dos nombres de función sólo se diferencian por una s final, ya que GetPositions es más sintáctico, por lo que se recomienda usar GetPositions en todos los posteriores.

exchange.GetPositions()Hay tres formas de llamar a las funciones:

  • exchange.GetPositions (en inglés) Cuando no se transmite ningún parámetro, se usa el parámetro actual.El trato está bien. / Código del contratoLa configuración de la página web, que solicita datos de almacenamiento de todas las variedades de la dimensión actual.

  • exchange.GetPositions ((ETH_USDT.swap con el botón) Cuando se especifica la información de una variedad específica (este formato es definido por la plataforma FMZ), se solicita la información de almacenamiento de una variedad específica. Por ejemplo:BTC_USD.swapETH_USDT.swapETH_USDT.quarterY luego. BTC_USD.swap: Es un contrato permanente para el precio de BTC. ETH_USDT.swap: Un contrato permanente de U bits de ETH. ETH_USDC.swap: Contrato permanente en USDC de ETH. (Además de USDT, también se puede especificar una moneda de cotización diferente, sin más detalles) ETH_USDT.quarter: El porcentaje de transacción de U de ETH en el trimestre es de aproximadamente. BTC_USD. BTC-USD-201226-24250-C: Contratos de opciones de cambio de divisas en BTC.

  • exchange.GetPositions ((USDT.swap con el botón de cambio) Se solicitan datos de almacenamiento de todas las variedades según el rango de dimensiones especificado. USDT.swap: U es el alcance del contrato permanente. USDT.futures: U es el rango aproximado del tipo de cambio. USDC.swap: alcance del contrato permanente USDC local. (Además de USDT, también se puede especificar una moneda de cotización diferente, sin más comentarios) USDC.futures: Rango aproximado de la tasa de cambio de USDC en el lugar. USD.swap: el alcance de los acuerdos permanentes de divisas. USD.futures: Rango aproximado del tipo de cambio de divisas. USDT.option: U es el alcance de los contratos de opciones locales. USD.option: el alcance de los contratos de opciones de divisas.

    Algunas de las dimensiones de contratación de los intercambios especiales son: USDT.futures_combo:Futures_Deribit es un conjunto de contratos para el intercambio de divisas. USD.futures_ff: El intercambio de futuros_Kraken ofrece una tasa de cambio de garantías mixtas aproximada. USD.swap_pf:Futures_Kraken es un contrato de garantía mixta permanente de la bolsa.

    Para las dimensiones que no son compatibles con la API de los intercambios, se devuelve un valor en blanco cuando se llama.

Las pruebas en el entorno del disco de simulación de futuros de OKX:

function main() {
    exchange.IO("simulate", true)

    exchange.SetCurrency("BTC_USDT")
    exchange.SetContractType("swap")

    var p1 = exchange.GetPositions()
    var p2 = exchange.GetPositions("BTC_USDT.swap")

    var tbls = []
    for (var positions of [p1, p2]) {
        var tbl = {type: "table", title: "test GetPosition/GetPositions", cols: ["Symbol", "Amount", "Price", "FrozenAmount", "Type", "Profit", "Margin", "ContractType", "MarginLevel"], rows: []}
        for (var p of positions) {
            tbl.rows.push([p.Symbol, p.Amount, p.Price, p.FrozenAmount, p.Type, p.Profit, p.Margin, p.ContractType, p.MarginLevel])
        } 
        tbls.push(tbl)
    }

    LogStatus("`" + JSON.stringify(tbls) +  "`")
}

img

Cuando se transmiteexchange.GetPositions()El parámetro de la función esETH_USDT.swapEn la actualidad, la mayoría de los clientes de ETH están en el mercado, y los clientes de ETH pueden obtener datos sobre el mantenimiento de contratos permanentes de ETH.

Cuando no se transmiteexchange.GetPositions()Cuando los parámetros de la función permiten obtener datos de tenencia de todos los contratos permanentes de U-bit que se ponen en línea en el intercambio (porque el par de transacciones actual es BTC_USDT, el contrato es un swap, según el par de transacciones actual, la solicitud de rango de contrato), entonces el valor es equivalente a la llamada.exchange.GetPositions("USDT.swap"), especifique un rango de petición.

exchange.GetFundings函数

La nueva función GetFundings permite obtener las tasas de capital de los contratos permanentes de los mercados de futuros. La función tiene un símbolo de parámetro. La función devuelve un conjunto de estructuras de financiación.

  • Especificar parámetros de símbolos: devuelve el parámetro de información de estructura de la tasa de financiación de la variedad especificada (Arrollo de financiación), el parámetro de símbolos puede establecer un rango similar al parámetro de símbolos de las funciones GetOrders/GetPositions.
  • Sin especificar parámetros de símbolo: devuelve datos de todas las variedades de la dimensión actual según la dimensión de la pareja de transacciones actual, el código de contrato, mecanismos como la función GetOrders/GetPositions.
  • Si el intercambio tiene que especificar una variedad específica, se deben transmitir parámetros de símbolo, es decir, el código de la variedad específica, por ejemplo:BTC_USDT.swapLos parámetros de símbolo no son compatibles.

2 Aplicación de la API mejorada

exchange.GetTicker函数

Función de campoexchange.GetTicker()Esta actualización incluye la adición de parámetros de símbolos; permite que la función se desprenda de los pares de transacciones actuales, solicite información de variedades de contratos directamente de acuerdo con los parámetros especificados; simplifica el proceso de redacción del código; sin embargo, sigue siendo compatible con las formas de llamada que no se transmiten, siendo compatible al máximo con las políticas antiguas de la plataforma.

ParámetrossymbolPara los objetos de la bolsaexchangeLos futuros están en diferentes formatos:

  • Objetos de las bolsas El formato es:AAA_BBBAAA representa la base de la moneda de negociación y BBB representa la moneda de cotización. Los nombres de las monedas están en mayúsculas. Por ejemplo, el BTC_USDT es un par de transacciones al contado.
  • Objetos de las bolsas de futuros El formato es:AAA_BBB.XXXAAA representa la moneda de base, BBB representa la moneda de cotización, y XXX representa el código del contrato, por ejemplo, el cambio de contrato permanente. Por ejemplo: BTC_USDT.swap, un contrato perpetuo de U de BTC.

Las pruebas en el entorno real de los futuros de divisas:

var symbols = ["BTC_USDT.swap", "BTC_USDT.quarter", "BTC_USD.swap", "BTC_USD.next_quarter", "ETH_USDT.swap"]

function main() {
    exchange.SetCurrency("ETH_USD")
    exchange.SetContractType("swap")

    var arr = []
    var t = exchange.GetTicker()
    arr.push(t)

    for (var symbol of symbols) {
        var ticker = exchange.GetTicker(symbol)
        arr.push(ticker)
    }

    var tbl = {type: "table", title: "test GetTicker", cols: ["Symbol", "High", "Open", "Low", "Last", "Buy", "Sell", "Time", "Volume"], rows: []}
    for (var ticker of arr) {
        tbl.rows.push([ticker.Symbol, ticker.High, ticker.Open, ticker.Low, ticker.Last, ticker.Buy, ticker.Sell, ticker.Time, ticker.Volume])
    }

    LogStatus("`" + JSON.stringify(tbl) +  "`")
    return arr
}

img

El diseño de datos de mercado para solicitar un grupo de variedades especificadas se vuelve más sencillo.

exchange.GetDepth函数

Es lo mismo que la función GetTickerexchange.GetDepth()La función también añade un parámetro de símbolo. Puede ser posible especificar directamente la variedad cuando se solicita datos de profundidad.

Las pruebas en el entorno real de los futuros de divisas:

function main() {
    exchange.SetCurrency("LTC_USD")
    exchange.SetContractType("swap")

    Log(exchange.GetDepth())
    Log(exchange.GetDepth("ETH_USDT.quarter"))
    Log(exchange.GetDepth("BTC_USD.swap"))
}

img

exchange.GetTrades函数

Es lo mismo que la función GetTickerexchange.GetTrades()La función también añade un parámetro de símbolo. Se puede especificar directamente la variedad cuando se solicitan datos de transacciones en el mercado.

Las pruebas en el entorno real de los futuros de divisas:

function main() {
    var arr = []
    var arrR = []
    var symbols = ["LTC_USDT.swap", "ETH_USDT.quarter", "BTC_USD.swap"]    

    for (var symbol of symbols) {
        var r = exchange.Go("GetTrades", symbol)
        arrR.push(r)
    }

    for (var r of arrR) {
        arr.push(r.wait())
    }
    
    var tbls = []
    for (var i = 0; i < arr.length; i++) {
        var trades = arr[i]
        var symbol = symbols[i]

        var tbl = {type: "table", title: symbol, cols: ["Time", "Amount", "Price", "Type", "Id"], rows: []}
        for (var trade of trades) {
            tbl.rows.push([trade.Time, trade.Amount, trade.Price, trade.Type, trade.Id])
        }

        tbls.push(tbl)
    }

    LogStatus("`" + JSON.stringify(tbls) +  "`")
}

img

Esta actualización también es compatible con la aprobación.exchange.Go()La función se llama simultáneamente a la API de la plataforma cuando se transmite la información de variedad especificada por el parámetro de símbolo.

exchange.GetRecords函数

La función GetRecords ha hecho una gran modificación en esta ocasión, además de apoyar la información de la variedad de datos de la línea K que se solicita directamente especificando el parámetro de símbolo. Se mantiene el parámetro period original para especificar el período de la línea K, y se agrega un parámetro limit para especificar la longitud de la línea K deseada durante el período de la solicitud. También es compatible con las versiones anteriores de la función GetRecords.

exchange.GetRecords()Cómo llamar a una función:

  • exchange.GetRecords (en inglés) Sin especificar ningún parámetro cuando se solicita la variedad de datos de línea K de la pareja de transacciones / contrato correspondiente al código actual, el ciclo de línea K es el ciclo de línea K predeterminado en la interfaz de revisión de estrategias o en el plato real.
  • exchange.GetRecords ((60 * 15) también está disponible. Cuando sólo se especifica el parámetro de ciclo de la línea K, se solicitan datos de la línea K de la variedad correspondiente a la pareja de transacciones/contratos en curso.
  • exchange.GetRecords (en inglés) (en inglés) Cuando se especifica solo la información de la variedad, se solicitan datos de línea K para especificar la variedad, y el ciclo de línea K es el ciclo de línea K predeterminado en la interfaz de revisión de estrategias o en el disco real.
  • exchange.GetRecords ((BTC_USDT.swap, 60 * 60)) Especifique la información de la variedad, especifique el ciclo de la línea K específico y solicite datos de la línea K.
  • exchange.GetRecords ((BTC_USDT.swap, 60, 1000) se encuentra en el sitio web de exchange.GetRecords. Especifique la información de la variedad, especifique el ciclo específico de la línea K, indique la longitud de la línea K que se desea obtener periódicamente y solicite datos de la línea K. Tenga en cuenta que cuando el parámetro de límite excede la longitud máxima de una solicitud de un intercambio, se genera una solicitud de separación de páginas (es decir, varias llamadas a la interfaz de línea K del intercambio).

Las pruebas en el entorno real de los futuros de divisas:

function main() {
    exchange.SetCurrency("ETH_USDT")
    exchange.SetContractType("swap")
    
    var r1 = exchange.GetRecords()
    var r2 = exchange.GetRecords(60 * 60)
    var r3 = exchange.GetRecords("BTC_USDT.swap")
    var r4 = exchange.GetRecords("BTC_USDT.swap", 60)
    var r5 = exchange.GetRecords("LTC_USDT.swap", 60, 3000)

    Log("r1相邻Bar时间差值:", r1[1].Time - r1[0].Time, "毫秒, Bar长度:", r1.length)
    Log("r2相邻Bar时间差值:", r2[1].Time - r2[0].Time, "毫秒, Bar长度:", r2.length)
    Log("r3相邻Bar时间差值:", r3[1].Time - r3[0].Time, "毫秒, Bar长度:", r3.length)
    Log("r4相邻Bar时间差值:", r4[1].Time - r4[0].Time, "毫秒, Bar长度:", r4.length)
    Log("r5相邻Bar时间差值:", r5[1].Time - r5[0].Time, "毫秒, Bar长度:", r5.length)
}

img

exchange.GetOrders函数

También se ha añadido la función GetOrders.symbolParámetros que permiten especificar una variedad específica y consultar los pedidos incompletos de esa variedad; también se admite la búsqueda de pedidos incompletos de todas las variedades en el rango de dimensiones especificado.

exchange.GetOrders()Las funciones pueden ser llamadas de la siguiente manera:

  • exchange.GetOrders (en inglés) Para las bolsas de futuros: cuando no se transmite ningún parámetro, el valor de los valores de los valores de los futuros se basa en el valor de los valores de los valores de los futuros.El trato está bien. / Código del contratoLa configuración, que solicita todos los pedidos pendientes de toda la variedad del rango de dimensiones actual.
    Para los intercambios de contado: cuando no se envían ningún parámetro, se solicitan pedidos incompletos de todas las variedades de contado.
  • exchange.GetOrders ( BTC_USDT.swap) o exchange.GetOrders ( BTC_USDT) es una aplicación de intercambio de órdenes de compra y venta de bitcoins. Para el intercambio de futuros: exchange.GetOrders ( BTC_USDT.swap), consulta todos los pedidos pendientes de contratos permanentes en USDT de BTC. Para el intercambio de efectivo: exchange.GetOrders ( BTC_USDT), consulta todos los pedidos pendientes en el par de operaciones de efectivo BTC_USDT.
  • Soporte exclusivo para los intercambios de futuros exchange.GetOrders (USDT.swap) especificar el rango de dimensión para solicitar todas las variedades de pedidos pendientes (pending lists) El rango de división de dimensiones coincide con el rango de la función GetPositions. Por ejemplo: exchange.GetOrders (USDT.swap) solicita pedidos pendientes de todas las variedades del alcance del contrato permanente de U.

Las pruebas en el entorno del disco de simulación de futuros de OKX:

function main() {
    exchange.IO("simulate", true)

    exchange.SetCurrency("BTC_USDT")
    exchange.SetContractType("swap")

    // 写入图表
    var tbls = []
    for (var symbol of ["null", "ETH_USDT.swap", "USDT.swap"]) {
        var tbl = {type: "table", title: symbol, cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}

        var orders = null
        if (symbol == "null") {
            orders = exchange.GetOrders()
        } else {
            orders = exchange.GetOrders(symbol)
        }

        for (var order of orders) {
            tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
        }

        tbls.push(tbl)
    }
    
    LogStatus("`" + JSON.stringify(tbls) +  "`")
}
  • Cuando no se transmite el parámetro, se solicita la orden pendiente de toda la variedad del rango de dimensiones del par de transacciones (BTC_USDT), código de contrato (swap) en curso.
  • Especifique los parámetrosETH_USDT.swapCuando el parámetro, el pedido de ETH USDT lugar de un contrato permanente no finalizado ("lista suspendida").
  • Envío de una cadena"USDT.swap"En el caso de USDT, los pedidos de pedidos no completados ("pending orders") de los contratos permanentes de USDT son solicitados.

exchange.GetPosition函数

Todavía es compatible con el antiguo nombre de la función de obtención de almacenamiento, y también se ha añadido un parámetro de símbolo para especificar la variedad de información de los datos de almacenamiento que se solicitan específicamente.exchange.GetPositions()En el video, la mujer dice:

exchange.IO函数

En cuanto aexchange.IO("api", ...)El modo de invocación de funciones, mejorado para todos los objetos de la bolsa, admite la función de dirección de petición completa de entrada directa.

Por ejemplo, si quieres llamar a la interfaz OKX:

GEThttps://www.okx.com/api/v5/cuenta/máximo ccy de retiro: BTC

Soporte para escribir direc-tamente direcciones de baseshttps://www.okx.com, no es necesario cambiar la dirección de base para llamar a la función IO.

Las pruebas en el entorno del disco de simulación de futuros de OKX:

function main() {
    exchange.IO("simulate", true)

    return exchange.IO("api", "GET", "https://www.okx.com/api/v5/account/max-withdrawal", "ccy=BTC")
}

img

3 Impacto de las interfaces API

exchange.GetOrder函数

La actualización afectó en gran medidaexchange.GetOrder(id)Parámetros de las funcionesidEl parámetro id se ha cambiado del original id de la orden de la bolsa a un formato de cadena que contiene la variedad de transacciones. Todos los pedidos envasados en la plataforma FMZ tienen este formato.

Por ejemplo:

  • El ID de la orden original de la bolsa definida en la orden de intercambio es:123456Antes de esta actualización, para llamar a la función GetOrder, la orden ID que se envió era:123456
  • Código de producto del nombre del intercambio definido en la orden del intercambio:BTC-USDT¿Qué es esto? Tenga en cuenta que aquí se habla de los códigos de variedades de transacciones nombrados por los intercambios y no de los pares de transacciones definidos por la plataforma FMZ.

En la actualidad, la mayoría de los usuarios de Twitter no tienen acceso a la red social.exchange.GetOrder(id)El formato del parámetro id que la función necesita transmitir se ajusta a:BTC-USDT,123456

  • Para empezar, explique por qué se diseñó de esta manera: La función CreateOrder se ha mejorado para especificar directamente la variedad de la orden (la variedad de la orden y el par de transacciones en la configuración actual, el código del contrato puede ser diferente), si el ID de la orden devuelta no contiene la información de la variedad. La ID de la orden no se puede usar porque no se sabe cuál es la variedad de la orden (el contrato) en el momento de la factura específica. La mayoría de las facturas y retiradas de los intercambios requieren especificar parámetros que describen el código de la variedad.

  • ¿Cómo combinar este impacto: Si el pedido se realiza con la función exchange.IO que llama directamente a la interfaz de pedido de la bolsa para realizar el pedido, el valor devuelto generalmente incluye el símbolo original del intercambio (código de variedad) y el id de la orden original. Entonces, juntar los dos con coma en inglés es el Id de la orden según la definición de la plataforma FMZ. Del mismo modo, si se usa la interfaz de pedido que se envuelve en la plataforma FMZ, ya que la parte inicial del ID de la orden es el código de variedad de transacción, solo se puede eliminar el código de variedad y el punto de referencia si se necesita usar el ID original de la orden.

exchange.CancelOrder函数

La actualización es paraexchange.CancelOrder()El efecto de las funcionesexchange.GetOrder()La función es la misma.

exchange.Buy函数

La actualización es paraexchange.Buy()El efecto de las funcionesexchange.GetOrder()La función es la misma.exchange.Buy()El Id de la orden devuelta por la función es una nueva estructura, por ejemplo, el Id devuelto cuando se realiza un pedido en un mercado de futuros de OKX:LTC-USDT-SWAP,1578360858053058560

exchange.Sell函数

La actualización es paraexchange.Sell()El efecto de las funcionesexchange.GetOrder()La función es la misma.exchange.Sell()El Id de la orden devuelta por la función es una nueva estructura, por ejemplo, el Id devuelto cuando se realiza un pedido en un mercado de futuros de OKX:ETH-USDT-SWAP,1578360832820125696

exchange.GetPosition函数

Sólo los objetos de los intercambios de futuros admiten esta función, y para obtener datos de la función de almacenamiento, se nombra exchange.GetPosition (), con el nuevo nombre de exchange.GetPositions (), y ambos se comportan de manera completamente coincidente.

La función exchange.GetPosition (), cuando no se especifica ningún parámetro, obtiene los datos de tenencia de los contratos específicos establecidos en el código del contrato.

Modificación, nueva definición de la función: exchange.GetPosition (), que obtiene el valor de todas las variedades de la gama de dimensiones definidas por el código del contrato, sin especificar ningún parámetro.

Por ejemplo, el par de operaciones actual es BTC_USDT, y el código del contrato es swap.

exchange.GetPosition() // 等价于调用 exchange.GetPosition("USDT.swap")

La función solicita datos de mantenimiento de contratos permanentes en bits U de todas las monedas.

exchange.GetOrders函数

En el caso de las bolsas de valores:

La función exchange.GetOrders ((() no especifica ningún parámetro y cuando se llama, se obtiene todo el orden no completado del par de transacciones en curso.

Modificación, nueva definición de la función: exchange.GetOrders (), cuando se llama sin especificar ningún parámetro, se obtienen todos los pedidos incompletos de la variedad de transacciones al instante.

En el caso de las bolsas de futuros:

La función exchange.GetOrders, cuando no se especifica ningún parámetro, obtiene todas las órdenes pendientes de un contrato específico en el que se establece el código del contrato.

Modificación, nueva definición de la función: exchange.GetOrders (), que obtiene todos los pedidos incompletos en el rango de dimensiones definidas por el código del contrato, sin especificar ningún parámetro.

Por ejemplo, el par de transacciones actual es BTC_USD y el código del contrato es quarter.

exchange.GetOrders()   // 等价于调用 exchange.GetOrders("USD.futures")

La función solicita datos de pedidos incompletos de la tasa de cambio de divisas de todas las monedas.

4. Ajuste de la estructura

La estructura del ticker

Esta actualización añade un campo de símbolo a las estructuras de Ticker, que registra la información de mercado de la variedad de las estructuras de Ticker actuales.exchange.GetTicker()El formato de los parámetros de símbolos de las funciones es completamente idéntico.

Estructuras de orden

Esta actualización añade un campo de símbolo al estructurador de orden, que tiene un formato similar al de la estructura de orden.exchange.GetTicker()El formato de los parámetros de símbolos de la función es completamente idéntico. Esta actualización también modifica el campo Id de la estructura Order para registrar la información de variedad, la información de orden original y el nuevo formato de orden Id.exchange.GetOrder()La descripción de la orden Id en la función, no se describe aquí.

Estructuras de posición

Esta actualización añade un campo de símbolo al estructurador de Posición, que tiene un formato similar al de la tabla.exchange.GetTicker()El formato de los parámetros de símbolos de las funciones es completamente idéntico.

Estructura de financiación

La función GetFundings devuelve una matriz de estructuras de fondos.

{
    "Info": {...},               // 交易所资金费率接口原始应答数据
    "Symbol": "BTC_USDT.swap",   // FMZ平台定义的品种名称
    "Interval": 28800000,        // 8小时间隔,单位毫秒
    "Time": 1729728000000,       // 本期资金费率收取时间
    "Rate": 0.0001,              // 资金费率,即 0.01 %
}

5. Sistema de retroevaluación

Para satisfacer las necesidades de los usuarios, la actualización incluye la compatibilidad con el disco físico, y el sistema de retroalimentación completará la adaptación en una semana. Si el código de la política individual se ve afectado, haga los cambios de adaptación según lo indicado en este artículo.

Según la actualización de la API de la estrategia de la plataforma, las interfaces de las API en el sistema de retrospección de la plataforma se han completado sincronizadamente; además, el sistema de retrospección tiene soporte adicional:

  • Apoya más datos de retrospección de los intercambios.
  • Apoya todo tipo de datos de retest de los intercambios.
  • El U-bit, la entrega de bitcoins, el contrato permanente y el comercio mixto.
  • Los objetos de los intercambios de mercancías durante el período de revisión apoyan los pares de transacciones de cambio.
  • El sistema de detección añade soporte para nuevas funciones como GetTickers, GetMarkets y otras.

Actualización adicional

1, Cuenta, nueva estructura de campos de equidad, UPnL

Función miembro de un objeto de un mercado de futurosGetAccountEl regresoAccountLa estructura ha sido ampliada por el campo.

  • Equidad La mayoría de las monedas de activos de garantía en la actualidad apoyan este campo, a excepción de los mercados de futuros muy particulares que no lo apoyan.
  • La UPnL La mayoría de las posiciones de todos los activos de moneda de garantía que se mantienen en la actualidad, con excepción de los intercambios de futuros muy específicos, no apoyan el sector.

2, Función SetMarginLevel para mejorar el parámetro de símbolos

La función miembro SetMarginLevel de los objetos de los mercados de futuros ha sido mejorada con el aumento del símbolo de parámetros.

Ejemplo de prueba:

function main() {
    exchange.SetCurrency("ETH_USDT")
    exchange.SetContractType("swap")
    
    // 当前交易对为ETH_USDT,合约代码为swap,设置杠杆值为10
    exchange.SetMarginLevel(10)
    
    // 直接指定交易对BTC_USDT,合约代码swap,设置杠杆值20
    exchange.SetMarginLevel("BTC_USDT.swap", 20)
}

3. La función GetMarkets devuelve la estructura de mercado añadiendo el campo CtValCcy

  • El campoCtValCcyLa unidad de valor de un contrato puede ser: BTC, USD, ETH, etc.
  • El campoCtValSe registra el valor correspondiente a un contrato de la variedad de transacción en una bolsa, en unidades.CtValCcyLas monedas registradas en el campo.CtValEn la actualidad, la mayoría de las personas no tienen acceso a internet.CtValCcy"BTC" significa un contrato con un valor de 0.01 BTC.

Más.

¿Qué quieres decir?Me pregunté qué pasa con mi nuevo robot, el ID de retorno también lleva el nombre de la transacción, lo estudié durante mucho tiempo, y la información del registro de la orden de compra no se muestra ahora, también debido a la actualización de los administradores.

¿Qué es lo que está pasando?/upload/asset/2ffc0f961149326b78aed.png /upload/asset/2ffc0f961149326b78aed.png /upload/asset/2ffc0f961149326b78aed.png /upload/asset/2ffc0f961149326b78aed.png ¿Es este el problema causado por la actualización de la interfaz?

el ecnemuse 希望exchange.Buy函数能增加开止损单的功能。。

En el caso de las empresasEn la primera fila

¿Qué quieres decir?Está bien.

Los inventores cuantifican - sueños pequeñosBien, prueba aquí. Gracias por preguntar. Lo trataremos tan pronto como sea posible.

¿Qué quieres decir?Sí, extMsg1, extMsg2 no se muestra.

Los inventores cuantifican - sueños pequeñosHola, el ID de la orden es un cambio inevitable, ya que la actualización de la orden de especificar directamente la variedad, la ID de la orden debe incluir la información de la variedad, de lo contrario no se puede determinar qué variedad es la orden y no se puede llamar en el momento de la retirada (ya que la mayoría de los intercambios requieren especificar la variedad y especificar la ID cuando se retira). ¿No aparece el mensaje después de la orden que usted dice que no aparece, es decir: exchange.Buy ((price, amount, extMsg1, extMsg2) cuando se llama, extMsg1, extMsg2 no aparece en el registro?

Los inventores cuantifican - sueños pequeñosHola, puedes enviar la configuración actual de la bolsa, el par de transacciones, el código del contrato.

El inventor de la cuantificaciónEnvíe los detalles del código de prueba y la configuración al formulario y el ingeniero le responderá en el primer momento.

Los inventores cuantifican - sueños pequeñosLas diferencias en los mecanismos de intercambio son muy grandes y varían en el grado de apoyo, así que vamos a investigar si es posible.

Los inventores cuantifican - sueños pequeñosGracias por su apoyo, si tiene algún problema de uso, envíe un formulario o un comentario.