avatar of 发明者量化-小小梦 发明者量化-小小梦
Suivre Messages privés
4
Suivre
1271
Abonnés

Utilisez l'API d'extension de la plateforme de trading quantitative Inventor pour implémenter le trading de signaux d'alarme TradingView (recommandé)

Créé le: 2020-04-29 17:08:27, Mis à jour le: 2025-05-16 16:29:48
comments   104
hits   12185

Utilisez l’API d’extension de la plateforme de trading quantitative Inventor pour implémenter le trading de signaux d’alarme TradingView (recommandé)

Utilisez l’API d’extension de la plateforme de trading quantitative Inventor pour implémenter le trading de signaux d’alerte TradingView

Lien vidéo de la station B

L’API d’extension de la plateforme de trading quantitative Inventor a récemment été mise à niveau pour prendre en charge le mode d’accès direct, ce qui facilite l’envoi de signaux d’alarme TradingView au robot de la plateforme de trading quantitative Inventor pour réaliser un trading automatique. Si vous ne savez toujours pas ce qu’est l’API d’extension, laissez-moi vous l’expliquer en détail.

Extension de l’API de la plateforme de trading quantitatif Inventor

Liens vers les parties pertinentes de la documentation de l’API Inventor

La fonction principale de l’API étendue est de fournir une interface pour diverses fonctions sur la plate-forme de trading quantitative de l’inventeur d’opérations programmatiques, telles que le démarrage de robots par lots en même temps, le démarrage et l’arrêt de robots à des heures programmées, la lecture des détails des informations sur les robots, etc. Nous utilisons l’API d’extension de la plateforme de trading quantitative Inventor pour implémenter le trading de signaux d’alerte TradingView. Cette exigence ne nécessite que l’extension de l’API.CommandRobot(RobotId, Cmd)L’interface peut envoyer des instructions interactives au robot avec l’ID spécifié. Le robot peut effectuer les opérations correspondantes (comme passer des ordres d’achat ou de vente) après avoir reçu les instructions.

Pour utiliser l’API d’extension, vous devez d’abord créer votre propre compte d’inventeurAPI KEY: Utilisez l’API d’extension de la plateforme de trading quantitative Inventor pour implémenter le trading de signaux d’alarme TradingView (recommandé) API KEYLa clé estaccess keyetsecret keycomposition,API KEYC’est la clé de la plateforme de trading quantitative inventée par les opérations programmées, elle doit donc être conservée correctement et ne jamais être divulguée. Créer une extension FMZAPI KEYVous pouvez spécifier des autorisations lorsque vous utilisezAPI KEYAccorder l’accèsCommandRobot(RobotId, Cmd)Pour cet exemple, pour des raisons de sécurité, accordez uniquement des autorisations aux extensions FMZ.API KEYDoterCommandRobot(RobotId, Cmd)Autorisations d’accès à l’interface.

Mode d’accès direct pour l’API d’extension

Le mode d’accès direct signifieAPI KEYÉcrivez-le directement dans la requête de l’URL. Par exemple, l’URL permettant d’accéder à l’API d’extension de la plateforme de trading quantitative Inventor peut être écrite comme suit :

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

dans,https://www.fmz.com/api/v1est l’adresse de l’interface,?Après celaQuery,paramètreaccess_keyL’exemple clé est représenté par xxx (renseignez votre propre clé d’accès au compte FMZ lors de l’utilisation), paramètressecret_keyLa clé secrète est représentée par yyyy (renseignez votre propre clé secrète de compte lorsque vous l’utilisez), le paramètremethodIl s’agit du nom spécifique de l’interface API étendue à laquelle il faut accéder.argsÊtre appelémethodParamètres de l’interface.

Nous utilisons TradingView comme source de signal pour envoyer des commandes de trading au robot de plateforme de trading quantitatif de l’inventeur.CommandRobotCette interface.

TradingView

Tout d’abord, vous devez disposer d’un compte TradingView Pro. La fonctionnalité WebHood de l’alarme n’est pas disponible au niveau Basic. Nous allons au graphique sur TradingView.

Utilisez l’API d’extension de la plateforme de trading quantitative Inventor pour implémenter le trading de signaux d’alarme TradingView (recommandé)

Ajoute un indicateur au graphique, mais également d’autres algorithmes de script. Nous utilisons ici le plus couramment utiliséMACDIndicateur, puis réglez la période de la ligne K sur 1 minute (afin de déclencher le signal plus rapidement et de faciliter la démonstration).

Utilisez l’API d’extension de la plateforme de trading quantitative Inventor pour implémenter le trading de signaux d’alarme TradingView (recommandé)

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

Utilisez l’API d’extension de la plateforme de trading quantitative Inventor pour implémenter le trading de signaux d’alarme TradingView (recommandé)

Définir dans la fenêtre contextuelle « Alerte »WebHookÀ cette étape, vous n’avez pas besoin de vous précipiter pour le configurer. Commençons d’abord par exécuter le robot qui surveille les signaux sur la plateforme de trading quantitative d’Inventor.

Robot de commande de signaux de surveillance

Code source de la stratégie :

// 全局变量
var BUY = "buy"     // 注意:现货用的命令
var SELL = "sell"   //      现货用的命令
var LONG = "long"   // 期货用的命令
var SHORT = "short" // 期货用的命令
var COVER_LONG = "cover_long"   // 期货用的命令
var COVER_SHORT = "cover_short" // 期货用的命令

function main() {
    // 清空日志,如不需要,可以删除
    LogReset(1)

    // 设置精度
    exchange.SetPrecision(QuotePrecision, BasePrecision)

    // 识别期货还是现货
    var eType = 0
    var eName = exchange.GetName()
    var patt = /Futures_/
    if (patt.test(eName)) {
        Log("添加的交易所为期货交易所:", eName, "#FF0000")
        eType = 1
        if (Ct == "") {
            throw "Ct 合约设置为空"
        } else {
            Log(exchange.SetContractType(Ct), "设置合约:", Ct, "#FF0000")
        }
    } else {
        Log("添加的交易所为现货交易所:", eName, "#32CD32")
    }
    
    var lastMsg = ""
    var acc = _C(exchange.GetAccount)
    while(true) {
        var cmd = GetCommand()
        if (cmd) {
            // 检测交互命令
            lastMsg = "命令:" + cmd + "时间:" + _D()
            var arr = cmd.split(":")
            if (arr.length != 2) {
                Log("cmd信息有误:", 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("现货交易所不支持!", "#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("期货交易所不支持!", "#FF0000")
                }
                if (tradeInfo) {
                    Log("tradeInfo:", tradeInfo)
                }
            } else {
                throw "eType error, eType:" + eType
            }
            acc = _C(exchange.GetAccount)
        }
        var tbl = {
            type : "table", 
            title : "状态信息", 
            cols : ["数据"], 
            rows : []
        }
        // tbl.rows.push([JSON.stringify(acc)])   // 测试时使用
        LogStatus(_D(), eName, "上次接收到的命令:", lastMsg, "\n", "`" + JSON.stringify(tbl) + "`")
        Sleep(1000)
    }
}

Code source de la stratégie

Le code de stratégie est très simple, la détectionGetCommandLa valeur de retour de la fonction, lorsqu’un message interactif est envoyé au programme de stratégie,GetCommandLa fonction renverra ce message, puis le programme de stratégie effectuera les opérations de trading correspondantes en fonction du contenu du message. Le bouton interactif a été configuré sur cette stratégie, ce qui permet de tester la fonction interactive. Par exemple, exécutez cette stratégie et configurez le robot avec un échange simulé de la plateforme de trading quantitative Inventor.WexApp

Utilisez l’API d’extension de la plateforme de trading quantitative Inventor pour implémenter le trading de signaux d’alarme TradingView (recommandé)

Cliquez sur le bouton d’interaction pour tester la capacité du robot à recevoir des commandes d’achat.

Utilisez l’API d’extension de la plateforme de trading quantitative Inventor pour implémenter le trading de signaux d’alarme TradingView (recommandé)

Vous pouvez voir que la chaîne de commande reçue par le robot est :buy:0.01

Nous devons simplement faire en sorte que l’URL de demande WebHook accède à l’API d’extension de la plateforme de trading quantitatif Inventor lorsque l’alerte TradingView est déclenchée.CommandRobotLors de l’utilisation de l’interface, les paramètres transportés sontbuy:0.01C’est ça.

Configuration du WebHook de TradingView

De retour dans TradingView, nous remplissons l’URL du WebHook. Donneraccess_keysecret_keyRemplissez vos propres paramètresAPI KEYmethodCorrigé, nous devons juste accéderCommandRobotCette interface API étendue,argsLes paramètres sont[机器人ID,命令字符串]Sous cette forme, nous pouvons obtenir directement l’ID du robot via la page du robot, comme indiqué sur la figure : Utilisez l’API d’extension de la plateforme de trading quantitative Inventor pour implémenter le trading de signaux d’alarme TradingView (recommandé) Cette fois, nous laissons le signal se déclencher et achetons 0,02 pièces. La chaîne de commande est :"buy:0.02". Ceci complète l’URL du WebHook. Cette méthode ne prend en charge que l’écriture du signal dans l’URL. Si vous souhaitez obtenir le contenu du message d’alerte qui peut être émis par la stratégie TV elle-même, reportez-vous à https://www.fmz.com/api#%E7%9B %B4%E6 %8E%A5%E9%AA%8C%E8%AF%81.

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

Configuration sur TradingView :

Utilisez l’API d’extension de la plateforme de trading quantitative Inventor pour implémenter le trading de signaux d’alarme TradingView (recommandé)

En attendant le signal de déclenchement… En attendant le signal de déclenchement. En attente du signal de déclenchement.

Utilisez l’API d’extension de la plateforme de trading quantitative Inventor pour implémenter le trading de signaux d’alarme TradingView (recommandé)

Le robot a reçu le signal :

Utilisez l’API d’extension de la plateforme de trading quantitative Inventor pour implémenter le trading de signaux d’alarme TradingView (recommandé)

De cette façon, vous pouvez utiliser les fonctions graphiques riches et les algorithmes d’indicateurs sur TradingView en conjonction avec les robots de stratégie de la plateforme de trading quantitatif Inventor pour obtenir le trading automatisé que vous souhaitez. Par rapport au portage des stratégies sur TradingView dans les langages JavaScript et Python, la difficulté est grandement réduite.

Le code de stratégie du « Robot de placement d’ordres de surveillance » est destiné uniquement à l’apprentissage et à la recherche. Il doit être optimisé et ajusté par vous-même pour une utilisation réelle. Il prend en charge les contrats à terme et il est recommandé de le configurer en mode ordre de marché. Voir la stratégie paramètres de code pour plus de détails. Ceci n’est qu’un point de départ. Si vous avez des questions ou des suggestions, n’hésitez pas à laisser un message.