Utilice la API extendida en la plataforma de negociación de FMZ Quant para realizar el comercio de señales de alerta TradingView

El autor:- ¿ Por qué?, Creado: 2022-12-14 13:42:41, Actualizado: 2023-09-20 10:17:53

img

Utilice la API extendida en la plataforma de negociación de FMZ Quant para realizar el comercio de señales de alerta TradingView

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.

La API extendida en la plataforma de negociación de FMZ Quant

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 KEYpara su propia cuenta FMZ primero:

img

La llave secreta deAPI KEYse compone deaccess keyysecret key. API KEYEs 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 KEYEn FMZ, puede especificar permisos. Por ejemplo, la figura anterior sólo da elAPI KEYpermiso para acceder a laCommandRobot(RobotId, Cmd)Para este ejemplo, basado en consideraciones de seguridad, por favor sólo dar la extensiónAPI KEYen el permiso de FMZ para acceder a laCommandRobot(RobotId, Cmd) interface.

Modo de acceso directo de la API extendida

El modo de acceso directo significa que elAPI KEYPor 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/v1es la dirección de la interfaz,?es seguido porQuery, parámetroaccess_keyLa clave secreta se representa por xxx por ejemplo (completar el acceso_clave de su propia cuenta FMZ cuando lo utiliza).secret_keyes representado por yyyy (completar en su propia cuenta secret_key cuando lo utiliza). El parámetromethodes el nombre específico de la interfaz API extendida a la que se accede, yargses el parámetro delmethodInterfaz 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.

Visión de operaciones

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.MACDindicadores, 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 Añadir alerta en el menú emergente.

Se ha puestoWebHookEn este punto, podemos ejecutar el robot de señal de monitoreo en la Plataforma de Comercio Cuántico FMZ primero.img

Robot de orden de señal de vigilancia

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.GetCommandCuando se envía un mensaje interactivo al programa de estrategia, elGetCommandla 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 laCommandRobotla interfaz de la API ampliada de la plataforma de negociación cuántica FMZ, el parámetro transportado esbuy:0.01.

Configurar el WebHook de TradingView

De vuelta en el TradingView, rellenamos la URL del WebHook.access_key, secret_keyEl.methodSólo tenemos que acceder a laCommandRobotInterfaz extendedAPI. El parámetroargsestá 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:

img

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:

img

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é?

img

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 robot para la colocación de órdenes mediante el monitoreo de señales es sólo para el aprendizaje y la investigación. El uso en el bot real necesita ser auto optimizado y ajustado para soportar futuros. Se recomienda establecerlo en el modo de orden de precio de mercado. Ver los parámetros del código de estrategia para obtener detalles. Si tiene alguna pregunta o sugerencia, no dude en dejar un mensaje.


Relacionados

Más.