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

Auteur:Je ne sais pas., Créé: 2022-12-14 13:42:41, Mis à jour: 2023-09-20 10:17:53

img

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

L'API étendue de la plateforme de trading FMZ Quant a été récemment mise à niveau pour prendre en charge l'accès direct, de sorte qu'elle peut facilement envoyer le signal d'alerte TradingView au robot de la plateforme de trading FMZ Quant pour le trading automatique.

L'API étendue sur la plateforme de négociation quantitative FMZ

Certains liens vers la documentation API sur FMZ (https://www.fmz.com/api)

La fonction principale de l'API étendue est de fournir des interfaces pour diverses fonctions sur la plateforme de trading FMZ Quant pour les opérations programmatiques, telles que le démarrage des robots en lots simultanément, le chronométrage des robots pour démarrer et s'arrêter, la lecture des détails de l'information robot, etc. Nous utilisons l'API étendue sur la plateforme de trading FMZ Quant pour réaliser le plan de demande de trading de signaux d'alerte TradingView, qui utilise uniquement leCommandRobot(RobotId, Cmd)Cette interface peut envoyer des instructions interactives au robot avec un ID spécifié, et le robot peut exécuter les opérations correspondantes (telles que passer un ordre d'achat, de vente, etc.) après avoir reçu les instructions. Pour utiliser l'API étendue, vous devez créer unAPI KEYpour votre propre compte FMZ d'abord:

img

La clé secrète deAPI KEYest constitué de:access keyetsecret key. API KEYIl s'agit de la clé pour quantifier la plateforme de trading FMZ Quant de l'opération programmatique, il doit donc être correctement conservé et non divulgué.API KEYsur FMZ, vous pouvez spécifier des autorisations.API KEYautorisation d'accès auCommandRobot(RobotId, Cmd)Pour cet exemple, pour des raisons de sécurité, veuillez ne donner que la version étendueAPI KEYsur l'autorisation FMZ d'accéder à laCommandRobot(RobotId, Cmd) interface.

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

Le mode d'accès direct signifie que leAPI KEYest écrit directement dans la requête URL. Par exemple, l'URL pour accéder à l'API étendue sur la plateforme de trading FMZ Quant peut être écrite comme suit:

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

Où?https://www.fmz.com/api/v1est l'adresse de l'interface,?est suivie deQuery, paramètreaccess_keyla clé secrète est représentée par xxx par exemple (remplissez la clé d'accès de votre propre compte FMZ lorsque vous l'utilisez).secret_keyest représenté par yyyy (remplissez votre propre compte secret_key lorsque vous l'utilisez). 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 transaction au robot de la plateforme de trading quantique FMZ.CommandRobot interface.

Vue de négociation

Tout d'abord, vous devez avoir un compte de niveau TradingView Pro. La fonction WebHood dans l'alerte ne peut pas être utilisée au niveau Basic.

Dans le graphique TradingView, vous pouvez ajouter un indicateur au graphique ou d'autres algorithmes de script.MACDles indicateurs, puis nous réglons la période de la ligne K à 1 minute (pour un déclenchement plus rapide du signal et une démonstration plus facile).

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

RéglageWebHookÀ ce stade, nous pouvons exécuter le robot de signal de surveillance sur la plateforme de trading quantique FMZ en premier.img

Robot de commande 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 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)
    }
}

Le code source de la stratégie (https://www.fmz.com/strategy/203063)

Le code de stratégie est très simple. Il détecte la valeur de retour de laGetCommandLorsque un message interactif est envoyé au programme de stratégie, leGetCommandfonction renvoie le message, et le programme de stratégie effectue l'opération de transaction correspondante en fonction du contenu du message. Le bouton interactif a été défini sur cette stratégie pour tester la fonction interactive. Par exemple, exécutez cette stratégie et configurez le robot avecWexApp, un échange de simulation de la plateforme de négociation quantitative FMZ.

Nous cliquons sur le bouton interactif pour tester la fonction du robot de recevoir l'ordre d'achat, puis nous pouvons voir que la chaîne de commande reçue par le robot est:buy:0.01.

Nous avons seulement besoin de faire l'URL de demande WebHook lorsque l'alerte TradingView est déclenchée pour accéder à laCommandRobotl'interface de l'API étendue de la plateforme de négociation quantitative FMZ, le paramètre transporté estbuy:0.01.

Mettre en place le WebHook de TradingView

Retour dans le TradingView, nous remplissons l'URL du WebHook. remplir votre propre clé API pour les paramètresaccess_key, secret_keyLemethodNous n'avons qu'à accéder auCommandRobotL'interface API étendue. Le paramètreargsest sous forme de[Robot ID, Command String]Nous pouvons obtenir l'ID du robot à travers la page du robot, directement comme indiqué sur la figure:

img

Cette fois, nous laissons le signal déclencher, acheter 0,02 pièces, et la chaîne de commande est:buy:0.02. Ensuite, l'URL WebHook est terminée. Cette méthode ne prend en charge que l'écriture du signal dans l'URL. Si vous voulez obtenir le contenu du message d'alerte qui peut être envoyé par la stratégie TV elle-même, consultezhttps://www.fmz.com/api#vérification directe.

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

Définition sur le tradingView:

img

Attends le signal pour déclencher... Attends le signal pour déclencher... Attends le signal pour déclencher... - Je ne sais pas.

img

Ensuite, le robot recevra le signal, de cette façon, nous pouvons utiliser les différentes fonctions de graphique et algorithmes d'indicateur sur TradingView pour coopérer avec le robot de stratégie de la plateforme de trading FMZ Quant pour obtenir le trading automatique que vous voulez.

Le code de stratégie de robot pour passer des ordres en surveillant les signaux est uniquement destiné à l'apprentissage et à la recherche. L'utilisation sur un vrai bot doit être auto-optimisée et ajustée pour prendre en charge les contrats à terme. Il est recommandé de le régler sur le mode d'ordre de prix du marché. Voir les paramètres du code de stratégie pour plus de détails. Si vous avez des questions ou des suggestions, n'hésitez pas à laisser un message.


Relationnée

Plus de