[TOC] ¿Qué quieres decir?
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.
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
}
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:symbol
、side
、price
、amount
。
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)
}
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.
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:
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) + "`")
}
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 ((BTC_USD.swap
、ETH_USDT.swap
、ETH_USDT.quarter
Y 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 ((
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) + "`")
}
Cuando se transmiteexchange.GetPositions()
El parámetro de la función esETH_USDT.swap
En 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.
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.
BTC_USDT.swap
Los parámetros de símbolo no son compatibles.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ámetrossymbol
Para los objetos de la bolsaexchange
Los futuros están en diferentes formatos:
AAA_BBB
AAA 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.AAA_BBB.XXX
AAA 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
}
El diseño de datos de mercado para solicitar un grupo de variedades especificadas se vuelve más sencillo.
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"))
}
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) + "`")
}
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.
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:
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)
}
También se ha añadido la función GetOrders.symbol
Pará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:
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) + "`")
}
ETH_USDT.swap
Cuando el parámetro, el pedido de ETH USDT lugar de un contrato permanente no finalizado ("lista suspendida")."USDT.swap"
En el caso de USDT, los pedidos de pedidos no completados ("pending orders") de los contratos permanentes de USDT son solicitados.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:
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")
}
La actualización afectó en gran medidaexchange.GetOrder(id)
Parámetros de las funcionesid
El 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:
123456
Antes de esta actualización, para llamar a la función GetOrder, la orden ID que se envió era:123456
。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.
La actualización es paraexchange.CancelOrder()
El efecto de las funcionesexchange.GetOrder()
La función es la misma.
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
。
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
。
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.
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.
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.
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í.
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.
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 %
}
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:
Función miembro de un objeto de un mercado de futurosGetAccount
El regresoAccount
La estructura ha sido ampliada por el campo.
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)
}
CtValCcy
La unidad de valor de un contrato puede ser: BTC, USD, ETH, etc.CtVal
Se registra el valor correspondiente a un contrato de la variedad de transacción en una bolsa, en unidades.CtValCcy
Las monedas registradas en el campo.CtVal
En 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.¿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.