La API extendida de la plataforma de negociación FMZ Quant ha sido actualizada recientemente para soportar el acceso directo, de modo que pueda enviar fácilmente la señal de alerta TradingView al robot de la plataforma de negociación FMZ Quant para el comercio automático.
Algunos enlaces a la documentación API sobre FMZ (https://www.fmz.com/api)
La función principal de la API ampliada es proporcionar interfaces para varias funciones en la plataforma de negociación FMZ Quant para operaciones programáticas, como iniciar robots en lotes simultáneamente, cronometrar robots para iniciar y detener, leer detalles de información del robot, etc. Usamos la API extendida en la plataforma de negociación FMZ Quant para realizar el plan de demanda de TradingView trading de señales de alerta, que solo utiliza elCommandRobot(RobotId, Cmd)
Esta interfaz puede enviar instrucciones interactivas al robot con un ID especificado, y el robot puede ejecutar las operaciones correspondientes (como colocar una orden de compra, venta, etc.) después de recibir las instrucciones.
Para utilizar la API extendida, usted necesita crear unAPI KEY
para su propia cuenta FMZ primero:
La llave secreta deAPI KEY
se compone deaccess key
ysecret key
. API KEY
Es la clave para cuantificar la Plataforma de Comercio Cuántico FMZ de la operación programática, por lo que debe mantenerse adecuadamente y no divulgar.API KEY
En FMZ, puede especificar permisos. Por ejemplo, la figura anterior sólo da elAPI KEY
permiso para acceder a laCommandRobot(RobotId, Cmd)
Para este ejemplo, basado en consideraciones de seguridad, por favor sólo dar la extensiónAPI KEY
en el permiso de FMZ para acceder a laCommandRobot(RobotId, Cmd)
interface.
El modo de acceso directo significa que elAPI KEY
Por ejemplo, la URL para acceder a la API extendida en FMZ Quant Trading Platform se puede escribir como:
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"ok12345"]
¿Dónde está?https://www.fmz.com/api/v1
es la dirección de la interfaz,?
es seguido porQuery
, parámetroaccess_key
La clave secreta se representa por xxx por ejemplo (completar el acceso_clave de su propia cuenta FMZ cuando lo utiliza).secret_key
es representado por yyyy (completar en su propia cuenta secret_key cuando lo utiliza). 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 de transacción al robot de la Plataforma de Comercio Cuántico FMZ.CommandRobot
interface.
En primer lugar, debe tener una cuenta de nivel TradingView Pro. La función WebHood en la alerta no se puede utilizar en el nivel básico.
En el gráfico TradingView, puede agregar un indicador al gráfico u otros algoritmos de script.MACD
indicadores, y luego fijamos el período de línea K a 1 minuto (para una activación de señal más rápida y una demostración fácil).
Haga clic derecho en el gráfico y seleccione
Se ha puestoWebHook
En este punto, podemos ejecutar el robot de señal de monitoreo en la Plataforma de Comercio Cuántico FMZ primero.
Código fuente de la estrategia:
// Global variable
var BUY = "buy" // Note: The command used for spot
var SELL = "sell" // The command used for spot
var LONG = "long" // The command used for future
var SHORT = "short" // The command used for future
var COVER_LONG = "cover_long" // The command used for future
var COVER_SHORT = "cover_short" // The command used for future
function main() {
// Clear the log and delete it if not needed
LogReset(1)
// Set precision
exchange.SetPrecision(QuotePrecision, BasePrecision)
// Identify future or spot
var eType = 0
var eName = exchange.GetName()
var patt = /Futures_/
if (patt.test(eName)) {
Log("The added exchange is a futures exchange:", 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 exchange is a spots exchange:", eName, "#32CD32")
}
var lastMsg = ""
var acc = _C(exchange.GetAccount)
while(true) {
var cmd = GetCommand()
if (cmd) {
// Detect interactive commands
lastMsg = "command:" + cmd + "time:" + _D()
var arr = cmd.split(":")
if (arr.length != 2) {
Log("cmd incorrect 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("The spots exchange is 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("The futures exchange is 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)]) // Use it when testing
LogStatus(_D(), eName, "Last received command:", lastMsg, "\n", "`" + JSON.stringify(tbl) + "`")
Sleep(1000)
}
}
Código fuente de la estrategia (https://www.fmz.com/strategy/203063)
El código de estrategia es muy simple.GetCommand
Cuando se envía un mensaje interactivo al programa de estrategia, elGetCommand
la función devuelve el mensaje, y el programa de estrategia realiza la operación de transacción correspondiente de acuerdo con el contenido del mensaje. El botón interactivo se ha configurado en esta estrategia para probar la función interactiva. Por ejemplo, ejecute esta estrategia y configure el robot conWexApp
, un intercambio de simulación de la plataforma de negociación cuántica FMZ.
Hacemos clic en el botón interactivo para probar la función del robot de recibir la orden de compra, entonces podemos ver que la cadena de comandos recibida por el robot es:buy:0.01
.
Sólo necesitamos hacer la URL de solicitud WebHook cuando se activa la alerta TradingView para acceder a laCommandRobot
la interfaz de la API ampliada de la plataforma de negociación cuántica FMZ, el parámetro transportado esbuy:0.01
.
De vuelta en el TradingView, rellenamos la URL del WebHook.access_key
, secret_key
El.method
Sólo tenemos que acceder a laCommandRobot
Interfaz extendedAPI. El parámetroargs
está en forma de[Robot ID, Command String]
Podemos obtener el ID del robot a través de la página del robot, directamente como se muestra en la figura:
Esta vez, dejamos que la señal se active, compramos 0.02 monedas, y la cadena de comandos es:buy:0.02
. Entonces la URL de WebHook está completa. Este método solo admite escribir la señal en la URL. Si desea obtener el contenido del mensaje de alerta que puede ser enviado por la estrategia de TV misma, consultehttps://www.fmz.com/api#la verificación directa.
https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args= [191755,"buy:0.02"]
Configurar en el TradingView:
Espera a que la señal se active... Espera a que la señal se active... Espera a que la señal se active... - ¿ Qué?
Entonces el robot recibirá la señal, de esta manera, podemos usar las diversas funciones de gráficos y algoritmos de indicadores en TradingView para cooperar con el robot de estrategia de la Plataforma de Comercio Quant FMZ para lograr el comercio automático que desea.
El código de estrategia de