
Enlace de vídeo de la estación B
La API de extensión de la Plataforma de comercio cuantitativo Inventor se actualizó recientemente para admitir el modo de acceso directo, lo que facilita el envío de señales de alarma de TradingView al robot de la Plataforma de comercio cuantitativo Inventor para realizar operaciones automáticas. Si aún no sabes qué es la API de extensión, déjame explicarte en detalle.
Enlaces relacionados con la documentación de la API de Inventor
La función principal de la API extendida es proporcionar una interfaz para varias funciones en la plataforma de comercio cuantitativo del inventor de operaciones programáticas, como iniciar robots en lotes al mismo tiempo, iniciar y detener robots en momentos programados, leer detalles de información del robot, etc. Utilizamos la API de extensión de la plataforma de operaciones cuantitativas de Inventor para implementar las operaciones con señales de alerta de TradingView. Este requisito solo requiere la extensión de la API.CommandRobot(RobotId, Cmd)La interfaz puede enviar instrucciones interactivas al robot con el ID especificado. El robot puede realizar las operaciones correspondientes (como dar órdenes de compra o venta) después de recibir las instrucciones.
Para utilizar la API de extensión, primero debe crear su propia cuenta de inventorAPI KEY:
API KEYLa clave esaccess keyysecret keycomposición,API KEYEsta es la clave de la plataforma de comercio cuantitativo inventada por operaciones programadas, por lo que debe conservarse adecuadamente y nunca revelarse. Creación de una extensión FMZAPI KEYPuede especificar permisos cuando utilizaAPI KEYConceder accesoCommandRobot(RobotId, Cmd)Para este ejemplo, por razones de seguridad, sólo otorgue permisos a las extensiones FMZ.API KEYDotarCommandRobot(RobotId, Cmd)Permisos de acceso para la interfaz.
El modo de acceso directo significaAPI KEYEscríbalo directamente en la consulta de la URL. Por ejemplo, la URL para acceder a la API de la extensión Inventor Quantitative Trading Platform se puede escribir de la siguiente manera:
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"ok12345"]
en,https://www.fmz.com/api/v1es la dirección de la interfaz,?DespuésQuery,parámetroaccess_keyEl ejemplo clave está representado por xxx (rellene su propia clave de acceso de cuenta FMZ cuando la utilice), parámetrossecret_keyLa clave secreta está representada por yyyy (rellene su propia clave secreta de cuenta cuando la use), el parámetromethodEs el nombre específico de la interfaz API extendida a la que se accederá.argsSer llamadomethodParámetros de la interfaz.
Utilizamos TradingView como fuente de señal para enviar comandos comerciales al robot de la plataforma comercial cuantitativa del inventor.CommandRobotEsta interfaz.
En primer lugar, es necesario tener una cuenta TradingView Pro. La función WebHood en la alarma no está disponible en el nivel Básico. Vamos al gráfico en TradingView.

Agrega un indicador al gráfico, pero también otros algoritmos de script. Aquí utilizamos los más utilizadosMACDIndicador y luego configure el período de la línea K en 1 minuto (para activar la señal más rápido y facilitar la demostración).

Haga clic derecho en el gráfico y seleccione Agregar alerta en el menú emergente.

Establecer en la ventana emergente “Alerta”WebHookEn este paso, no es necesario apresurarse para configurarlo. Primero, ejecutemos el robot que monitorea las señales en la plataforma de negociación cuantitativa de Inventor.
Código fuente de la estrategia:
// 全局变量
var BUY = "buy" // 注意:现货用的命令
var SELL = "sell" // 现货用的命令
var LONG = "long" // 期货用的命令
var SHORT = "short" // 期货用的命令
var COVER_LONG = "cover_long" // 期货用的命令
var COVER_SHORT = "cover_short" // 期货用的命令
function main() {
// 清空日志,如不需要,可以删除
LogReset(1)
// 设置精度
exchange.SetPrecision(QuotePrecision, BasePrecision)
// 识别期货还是现货
var eType = 0
var eName = exchange.GetName()
var patt = /Futures_/
if (patt.test(eName)) {
Log("添加的交易所为期货交易所:", eName, "#FF0000")
eType = 1
if (Ct == "") {
throw "Ct 合约设置为空"
} else {
Log(exchange.SetContractType(Ct), "设置合约:", Ct, "#FF0000")
}
} else {
Log("添加的交易所为现货交易所:", eName, "#32CD32")
}
var lastMsg = ""
var acc = _C(exchange.GetAccount)
while(true) {
var cmd = GetCommand()
if (cmd) {
// 检测交互命令
lastMsg = "命令:" + cmd + "时间:" + _D()
var arr = cmd.split(":")
if (arr.length != 2) {
Log("cmd信息有误:", cmd, "#FF0000")
continue
}
var action = arr[0]
var amount = parseFloat(arr[1])
if (eType == 0) {
if (action == BUY) {
var buyInfo = IsMarketOrder ? exchange.Buy(-1, amount) : $.Buy(amount)
Log("buyInfo:", buyInfo)
} else if (action == SELL) {
var sellInfo = IsMarketOrder ? exchange.Sell(-1, amount) : $.Sell(amount)
Log("sellInfo:", sellInfo)
} else {
Log("现货交易所不支持!", "#FF0000")
}
} else if (eType == 1) {
var tradeInfo = null
var ticker = _C(exchange.GetTicker)
if (action == LONG) {
exchange.SetDirection("buy")
tradeInfo = IsMarketOrder ? exchange.Buy(-1, amount) : exchange.Buy(ticker.Sell, amount)
} else if (action == SHORT) {
exchange.SetDirection("sell")
tradeInfo = IsMarketOrder ? exchange.Sell(-1, amount) : exchange.Sell(ticker.Buy, amount)
} else if (action == COVER_LONG) {
exchange.SetDirection("closebuy")
tradeInfo = IsMarketOrder ? exchange.Sell(-1, amount) : exchange.Sell(ticker.Buy, amount)
} else if (action == COVER_SHORT) {
exchange.SetDirection("closesell")
tradeInfo = IsMarketOrder ? exchange.Buy(-1, amount) : exchange.Buy(ticker.Sell, amount)
} else {
Log("期货交易所不支持!", "#FF0000")
}
if (tradeInfo) {
Log("tradeInfo:", tradeInfo)
}
} else {
throw "eType error, eType:" + eType
}
acc = _C(exchange.GetAccount)
}
var tbl = {
type : "table",
title : "状态信息",
cols : ["数据"],
rows : []
}
// tbl.rows.push([JSON.stringify(acc)]) // 测试时使用
LogStatus(_D(), eName, "上次接收到的命令:", lastMsg, "\n", "`" + JSON.stringify(tbl) + "`")
Sleep(1000)
}
}
Código fuente de la estrategia
El código de estrategia es muy simple, detecciónGetCommandEl valor de retorno de la función, cuando se envía un mensaje interactivo al programa de políticas,GetCommandLa función devolverá este mensaje y luego el programa de estrategia realizará las operaciones comerciales correspondientes según el contenido del mensaje. En esta estrategia se ha configurado el botón interactivo, que permite probar la función interactiva. Por ejemplo, ejecute esta estrategia y configure el robot con un intercambio simulado de la plataforma de negociación cuantitativa Inventor.WexApp。

Haga clic en el botón de interacción para probar la capacidad del robot para recibir comandos de compra.

Puedes ver que la cadena de comando recibida por el robot es:buy:0.01。
Solo necesitamos hacer que la URL de solicitud de WebHook acceda a la API de extensión de la plataforma de comercio cuantitativo de Inventor cuando se activa la alerta de TradingView.CommandRobotAl utilizar la interfaz, los parámetros transportados sonbuy:0.01Eso es todo.
De vuelta en TradingView, completamos la URL del WebHook. Daraccess_key、secret_keyComplete sus propios parámetrosAPI KEY。methodArreglado, solo necesitamos accederCommandRobotEsta interfaz API extendida,argsLos parámetros son[机器人ID,命令字符串]En esta forma, podemos obtener directamente el ID del robot a través de la página del robot, como se muestra en la figura:
Esta vez dejamos que la señal se active y compramos 0,02 monedas. La cadena de comandos es:"buy:0.02". Esto completa la URL del WebHook. Este método solo admite la escritura de la señal en la URL. Si desea obtener el contenido del mensaje de alerta que puede emitir la propia estrategia de TV, consulte https://www.fmz.com/api#%E7%9B %B4%E6 %8E%A5%E9%AA%8C%E8%AF%81.
https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args=[191755,"buy:0.02"]
Configuración en TradingView:

Esperando la señal para activarse… Esperando la señal para activarse.. Esperando la señal para activarse. …

El robot recibió la señal:

De esta manera, puede utilizar las funciones de gráficos enriquecidas y los algoritmos de indicadores de TradingView junto con los robots de estrategia de la plataforma de negociación cuantitativa Inventor para lograr el comercio automatizado que desea. En comparación con la migración de las estrategias de TradingView a los lenguajes JavaScript y Python, La dificultad se reduce considerablemente.
El código de estrategia del “Robot de colocación de órdenes de señal de monitoreo” es solo para fines de aprendizaje e investigación. Debe optimizarlo y ajustarlo usted mismo para su uso real. Admite futuros y se recomienda configurarlo en modo de orden de mercado. Vea la estrategia Parámetros del código para más detalles. Este es solo un punto de partida. Si tienes alguna pregunta o sugerencia, deja un mensaje.