La API extendida de la plataforma de Trading Quant de FMZ ha sido recientemente actualizada, y la actualización admite el modo de acceso directo, para que la señal de alerta TradingView pueda enviarse fácilmente a los bots en FMZ para el comercio automático.
Enlace de la parte relacionada en la documentación de la API FMZ
La función principal de la API extendida es proporcionar interfaces para varias funciones en la plataforma de negociación FMZ Quant, para las operaciones programáticas, como bot de inicio de lote simultáneamente, bot de inicio y parada de tiempo, lectura de detalles de información bot, etc. Usamos la API extendida FMZ para implementar TradingView alerta de señal de negociación.CommandRobot(RobotId, Cmd)
Esta interfaz puede enviar comandos interactivos al bot con el ID especificado, y el bot puede realizar las operaciones correspondientes (como colocar una orden de compra o venta, etc.)
Para usar la API extendida, primero necesita crear su propia cuentaAPI KEY
en la FMZ:
API KEY
se compone deaccess key
ysecret key
; API KEY
es la clave para operar programáticamente la plataforma de comercio FMZ Quant, así que asegúrese de mantenerlo correctamente y no lo divulgue.API KEY
, puede especificar los permisos.API KEY
el permiso para acceder a laCommandRobot(RobotId, Cmd)
En este ejemplo, por razones de seguridad, por favor conceda sólo el permiso de acceso deCommandRobot(RobotId, Cmd)
Interfaz con la FMZ extendidaAPI KEY
.
El modo de acceso directo indica la escritura directaAPI KEY
en la consulta de URL; por ejemplo, la URL que accede a la API extendida de la plataforma FMZ Quant se puede escribir como:
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"ok12345"]
Entre ellos,https://www.fmz.com/api/v1
es la dirección de la interfaz;?
es seguido porQuery
; el parámetroaccess_key
se representa, por ejemplo, por xxx (cuando se utilice, complete la clave de acceso de su propia cuenta FMZ); el parámetrosecret_key
se representa por yyyy (cuando se utiliza, complete su propia cuenta secret_key); el parámetromethod
es el nombre específico de la interfaz API extendida a la que se accede, yargs
es el parámetro delmethod
Interfaz a ser llamado.
Utilizamos TradingView como fuente de señal para enviar comandos comerciales a los robots FMZ.CommandRobot
interface.
En primer lugar, usted necesita tener una cuenta TradingView Pro. El nivel básico no puede utilizar la función WebHood en la alerta.
Añadir un indicador al gráfico, y otros algoritmos de script también se pueden utilizar.MACD
el indicador y, a continuación, ajustar el período de la línea K a 1 minuto (con el fin de que la señal se active más rápidamente y facilitar la demostración).
Haga clic derecho en el gráfico y seleccione
Se ha puestoWebHook
En este punto, no tienes que preocuparte por configurarlo. Primero ejecutemos el bot que monitorea las señales en la plataforma de trading FMZ Quant.
Código fuente de la estrategia:
// global variable
var BUY = "buy" // Note: the command used for spot
var SELL = "sell" // the command used for futures
var LONG = "long" // the command used for futures
var SHORT = "short" // the command used for futures
var COVER_LONG = "cover_long" // the command used for futures
var COVER_SHORT = "cover_short" // the command used for futures
function main() {
// Empty the logs; delete, if not needed
LogReset(1)
// Set the precision
exchange.SetPrecision(QuotePrecision, BasePrecision)
// Judge whether it is spot or futures
var eType = 0
var eName = exchange.GetName()
var patt = /Futures_/
if (patt.test(eName)) {
Log("The added platform is a futures platform:", eName, "#FF0000")
eType = 1
if (Ct == "") {
throw "Ct contract set to null"
} else {
Log(exchange.SetContractType(Ct), "Set contract:", Ct, "#FF0000")
}
} else {
Log("The added platform is a spot platform:", eName, "#32CD32")
}
var lastMsg = ""
var acc = _C(exchange.GetAccount)
while(true) {
var cmd = GetCommand()
if (cmd) {
// Detect the interactive command
lastMsg = "Command:" + cmd + "Time:" + _D()
var arr = cmd.split(":")
if (arr.length != 2) {
Log("Wrong cmd information:", 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("Spot trading platforms are not supported!", "#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("Futures trading platforms are not supported!", "#FF0000")
}
if (tradeInfo) {
Log("tradeInfo:", tradeInfo)
}
} else {
throw "eType error, eType:" + eType
}
acc = _C(exchange.GetAccount)
}
var tbl = {
type : "table",
title : "Status information",
cols : ["Data"],
rows : []
}
// tbl.rows.push([JSON.stringify(acc)]) // Used during testing
LogStatus(_D(), eName, "The command received last time:", lastMsg, "\n", "`" + JSON.stringify(tbl) + "`")
Sleep(1000)
}
}
Código fuente de la estrategia
El código es muy simple. Detecta el valor de retorno delGetCommand
Cuando hay un mensaje interactivo enviado al programa de estrategia,GetCommand
El bot está configurado con la plataforma simulada, por ejemplo, cuando se opera la estrategia, el bot está configurado con la plataforma simulada.WexApp
de la plataforma de negociación FMZ Quant.
Haga clic en el botón de interacción para probar la capacidad del bot para recibir un comando de compra.
Podemos ver que la cadena de comandos recibida por el bot es:buy:0.01
.
Sólo necesitamos hacer que el parámetro transportado seabuy:0.01
durante el acceso a laCommandRobot
Interfaz de la API ampliada de FMZ Quant en la URL de solicitud de WebHook, cuando se activa la alerta de TradingView.
Volviendo a TradingView, rellenamos la URL del WebHook.API KEY
En elaccess_key
ysecret_key
para los parámetrosmethod
es fijo, sólo tenemos que acceder a la API extendidaCommandRobot
; elargs
el parámetro tiene la forma de[robot ID, command string]
, podemos obtener directamente el ID del robot a través de la página del bot, como se muestra en la figura:
Esta vez cuando activamos la señal, comprar 0.02 moneda, y la cadena de comandos es:"buy:0.02"
Eso completa la URL del WebHook.
https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args=[443999,"buy:0.02"]
Configurar en TradingView:
Espera a que se active la señal. Cuando el bot recibe la señal, se puede ver la alerta de señal en la parte superior derecha de la página, y los registros de activación en la parte inferior derecha de la página.
El bot recibió la señal:
De esta manera, puede usar las ricas funciones de gráficos y algoritmos de indicadores en TradingView para cooperar con el bot de estrategia de FMZ Quant para realizar la negociación automatizada que desea.
El código de estrategia de