Utilice la API extendida en FMZ Quant para realizar el comercio de señales de alerta "TradingView"

El autor:No lo sé., Creado: 2022-03-30 16:28:09, Actualizado: 2022-03-31 17:32:25

Utilice la API extendida en FMZ para realizar el comercio de señales de alerta

Enlace de vídeo en Bilibili

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.

API ampliada de la plataforma cuántica FMZ

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 KEYen la FMZ:img

API KEYse compone deaccess keyysecret key; API KEYes 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 KEYel 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.

Modo de acceso directo de la API extendida

El modo de acceso directo indica la escritura directaAPI KEYen 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/v1es la dirección de la interfaz;?es seguido porQuery; el parámetroaccess_keyse representa, por ejemplo, por xxx (cuando se utilice, complete la clave de acceso de su propia cuenta FMZ); el parámetrosecret_keyse representa por yyyy (cuando se utiliza, complete su propia cuenta secret_key); 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 comerciales a los robots FMZ.CommandRobot interface.

Visión de operaciones

En primer lugar, usted necesita tener una cuenta TradingView Pro. El nivel básico no puede utilizar la función WebHood en la alerta.

img

Añadir un indicador al gráfico, y otros algoritmos de script también se pueden utilizar.MACDel 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).

img

Haga clic derecho en el gráfico y seleccione Añadir alerta en el menú emergente.

img

Se ha puestoWebHookEn este punto, no tienes que preocuparte por configurarlo. Primero ejecutemos el bot que monitorea las señales en la plataforma de trading FMZ Quant.

Bot de orden de la 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 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 delGetCommandCuando hay un mensaje interactivo enviado al programa de estrategia,GetCommandEl bot está configurado con la plataforma simulada, por ejemplo, cuando se opera la estrategia, el bot está configurado con la plataforma simulada.WexAppde la plataforma de negociación FMZ Quant.

img

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

img

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.01durante el acceso a laCommandRobotInterfaz de la API ampliada de FMZ Quant en la URL de solicitud de WebHook, cuando se activa la alerta de TradingView.

Configuración WebHook de TradingView

Volviendo a TradingView, rellenamos la URL del WebHook.API KEYEn elaccess_keyysecret_keypara los parámetrosmethodes fijo, sólo tenemos que acceder a la API extendidaCommandRobot; elargsel 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:img

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:

img

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:img

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 Ordering Bot of Monitoring Signal es solo para estudio e investigación. Necesita ser optimizado y ajustado para el uso de bots reales. También admite futuros. Recomendamos configurarlo en modo de orden de mercado. Para más detalles, consulte los parámetros del código de estrategia. Si tiene alguna pregunta o sugerencia, deje un mensaje.


Más.