Utilisez l'API étendue sur FMZ Quant pour réaliser le trading de signaux d'alerte "TradingView"

Auteur:Je suis désolée., Créé: 2022-03-30 16:28:09, mis à jour: 2022-03-31 17:32:25

Utilisez l'API étendue sur FMZ pour réaliser TradingView Alert Signal Trading

Un lien vidéo sur Bilibili

L'API étendue de la plateforme de trading FMZ Quant a récemment été mise à niveau, et la mise à niveau prend en charge le mode d'accès direct, de sorte que le signal d'alerte TradingView peut être facilement envoyé aux robots sur FMZ pour le trading automatique.

API étendue de la plateforme quantique FMZ

Lien de la partie connexe dans la documentation de l'API FMZ

La fonction principale de l'API étendue est de fournir des interfaces pour diverses fonctions sur la plate-forme de trading FMZ Quant, pour les opérations programmatiques, telles que le démarrage simultané des bots par lots, le démarrage et l'arrêt du bot, la lecture des détails de l'information du bot, etc. Nous utilisons l'API étendue FMZ pour implémenter le trading de signaux d'alerte TradingView.CommandRobot(RobotId, Cmd)Cette interface peut envoyer des commandes interactives au bot avec l'ID spécifié, et le bot peut effectuer les opérations correspondantes (telles que placer un ordre d'achat ou de vente, etc.)

Pour utiliser l'API étendue, vous devez d'abord créer votre propre compteAPI KEYsur la FMZ:img

API KEYest constitué de:access keyetsecret key; API KEYest la clé pour faire fonctionner programmatiquement la plateforme de trading FMZ Quant, alors assurez-vous de la conserver correctement et ne la divulguez pas.API KEY, vous pouvez spécifier les autorisations. Par exemple, la figure ci-dessus donne uniquement leAPI KEYl'autorisation d'accéder auCommandRobot(RobotId, Cmd)Dans cet exemple, pour des raisons de sécurité, veuillez uniquement accorder l'autorisation d'accès deCommandRobot(RobotId, Cmd)l'interface avec la FMZ étendueAPI KEY.

Mode d'accès direct de l'API étendue

Le mode d'accès direct indique l'écriture directeAPI KEYdans la requête d'URL; par exemple, l'URL permettant d'accéder à l'API étendue de la plateforme FMZ Quant peut être écrite comme suit:

https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"ok12345"]

Parmi eux,https://www.fmz.com/api/v1est l'adresse de l'interface;?est suivie deQuery; le paramètreaccess_keyest, par exemple, représenté par xxx (lors de l'utilisation, renseignez la clé d'accès de votre propre compte FMZ); le paramètresecret_keyest représenté par yyyy (lors de l'utilisation, renseignez secret_key de votre propre compte); le paramètremethodest le nom spécifique de l'interface API étendue à accéder, etargsest le paramètre dumethodinterface à appeler.

Nous utilisons TradingView comme source de signal pour envoyer des commandes de trading aux robots FMZ.CommandRobot interface.

Vue de négociation

Tout d'abord, vous devez avoir un compte TradingView Pro. Le niveau de base ne peut pas utiliser la fonction WebHood dans l'alerte.

img

Ajouter un indicateur au graphique, et d'autres algorithmes de script peuvent également être utilisés.MACDl'indicateur, puis régler la période de la ligne K à 1 minute (afin de rendre le signal plus rapide et de faciliter la démonstration).

img

Cliquez avec le bouton droit de la souris sur le graphique et sélectionnez Ajouter une alerte dans le menu contextuel.

img

RéglageWebHookDans la fenêtre pop-up Alerte. À ce stade, vous n'avez pas à vous soucier de la configuration. Exécutons d'abord le bot qui surveille les signaux sur la plateforme de trading FMZ Quant.

Commander le robot du signal de surveillance

Le code source de la stratégie:

// 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)
    }
}

Code source de la stratégie

Le code est très simple. Il détecte la valeur de retour de laGetCommandQuand il y a un message interactif envoyé au programme de stratégie,GetCommandle programme de stratégie effectuera une opération de trading correspondante en fonction du contenu du message. le bouton d'interaction a été configuré sur la stratégie, qui peut tester la fonction interactive. par exemple, lorsque la stratégie est opérée, le bot est configuré avec la plate-forme simuléeWexAppde la plateforme de négociation FMZ Quant.

img

Cliquez sur le bouton d'interaction pour tester la capacité du bot à recevoir une commande d'achat.

img

On peut voir que la chaîne de commande reçue par le bot est:buy:0.01.

Nous avons seulement besoin de faire le paramètre transporté êtrebuy:0.01au cours de l'accès auCommandRobotl'interface de l'API étendue FMZ Quant dans l'URL de demande WebHook, lorsque l'alerte TradingView est déclenchée.

Configuration WebHook de TradingView

Retour à TradingView, nous remplissons l'URL du WebHook.API KEYdans leaccess_keyetsecret_keyParamètresmethodest fixé, nous avons seulement besoin d'accéder à l'API étendueCommandRobot; leargsle paramètre est sous la forme de[robot ID, command string], nous pouvons obtenir directement l'ID du robot via la page du bot, comme indiqué sur la figure:img

Cette fois, quand nous déclenchons le signal, acheter 0.02 pièce, et la chaîne de commande est:"buy:0.02"Ça complète l'URL du WebHook.

https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args=[443999,"buy:0.02"]

Configuré sur TradingView:

img

Attendez que le signal soit déclenché. Lorsque le bot reçoit le signal, vous pouvez voir l'alerte du signal en haut à droite de la page, et les journaux de déclenchement en bas à droite de la page.

Le robot a reçu le signal:img

De cette façon, vous pouvez utiliser les fonctions de graphique riches et les algorithmes d'indicateur sur TradingView pour coopérer avec le bot de stratégie de FMZ Quant pour réaliser le trading automatisé que vous voulez.

Le code de stratégie de Ordering Bot of Monitoring Signal est uniquement destiné à l'étude et à la recherche. Il doit être optimisé et ajusté pour l'utilisation de vrais robots. Il prend également en charge les contrats à terme. Nous vous recommandons de le configurer en mode ordre de marché. Pour plus de détails, veuillez vous référer aux paramètres du code de stratégie. Si vous avez des questions ou des suggestions, laissez un message.


Plus de