L'API de l'extension de la plate-forme de négociation quantitative utilisée par les inventeurs pour réaliser des transactions de signaux d'alarme TradingView (recommandé)

Auteur:Le petit rêve, Créé: 2020-04-29 17:08:27, Mis à jour: 2023-10-08 19:56:04

img

Extension de l'API pour effectuer des transactions de signaux d'alarme TradingView à l'aide de la plateforme de négociation quantitative de l'inventeur

Lien vidéo de la station B

L'API de l'Inventor Quantitative Trading Platform Extension a été récemment mise à niveau pour prendre en charge le mode d'accès direct, ce qui permet de réaliser facilement des signaux d'alarme TradingView envoyés aux robots de l'Inventor Quantitative Trading Platform pour effectuer des transactions automatiques.

L'inventeur de la plateforme de négociation quantitative étend l'API

Liens vers les sections pertinentes de la documentation de l'API des inventeurs

Le rôle principal de l'API d'extension est de fournir une interface aux différentes fonctionnalités de la plate-forme de négociation quantitative des inventeurs, telles que le démarrage en série simultané du robot, le démarrage et l'arrêt du robot, la lecture des détails du robot, etc. Nous utilisons l'API d'extension de la plate-forme de négociation quantitative des inventeurs pour réaliser des opérations d'alarme avec l'API d'extension TradingView.CommandRobot(RobotId, Cmd)L'interface peut envoyer des instructions d'interaction à un robot avec un ID spécifié, et le robot peut exécuter les opérations correspondantes (par exemple, passer une commande, acheter, vendre, etc.) dès qu'il reçoit les instructions.

Pour utiliser l'API, vous devez d'abord créer votre propre compte d'inventeur.API KEY: img API KEYLa clé secrèteaccess keyetsecret keyLe groupe a été créé.API KEYLa clé de la plate-forme de négociation quantifiée par les inventeurs de l'opération programmatique doit donc être bien conservée et ne jamais être divulguée.API KEYSi vous utilisez des paramètres de configuration, vous pouvez spécifier des autorisations, comme dans le graphique ci-dessus, pour ce seul paramètre.API KEYAccès accordéCommandRobot(RobotId, Cmd)Permis d'interface, pour cette instance, pour des raisons de sécurité, donnez uniquement l'extension FMZAPI KEYDonnerCommandRobot(RobotId, Cmd)Les droits d'accès à l'interface.

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

Le mode d'accès direct estAPI KEYEn écrivant directement dans la requête d'une URL, par exemple pour accéder à l'API de l'inventeur de l'extension de la plateforme de trading quantitative, vous pouvez écrire:

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

Il y en a une.https://www.fmz.com/api/v1Il s'agit de l'adresse de l'interface.?Il y a eu plus tard.QueryParamètresaccess_keyL'exemple de clé secrète est indiqué par xxx (à l'aide de l'exemple de clé d'accès de votre compte FMZ), paramètresecret_keyLes clés secrètes sont indiquées par l'indicatif "yyyy" (à l'aide de l'indicatif "secret_key"), paramètremethodIl s'agit du nom spécifique de l'API d'extension à accéder.argsPour appelermethodParamètres de l'interface.

Nous utilisons TradingView comme source de signaux pour envoyer des ordres de transaction à des robots de plateforme de trading quantifiés par les inventeurs.CommandRobotCette interface.

Vue de négociation

Tout d'abord, vous devez avoir un compte au niveau TradingView Pro, au niveau Basic, vous ne pouvez pas utiliser les fonctionnalités WebHood dans l'alarme.

img

L'ajout d'un indicateur à un graphique peut être un autre algorithme de script.MACDL'indicateur, puis le cycle de la ligne K est réglé sur 1 minute (pour faciliter la démonstration et le déclenchement plus rapide du signal).

img

Sur le graphique, cliquez avec le bouton droit pour choisir "Ajouter une alerte" dans le menu pop-up.

img

Paramètres dans la fenêtre d'alarmeWebHookÀ ce stade, il est possible de ne pas avoir besoin d'une configuration précipitée, mais d'utiliser le robot de surveillance de la plate-forme de négociation quantifié par l'inventeur.

Robots qui signalent la surveillance

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

Le code source de la stratégie

Le code de stratégie est simple, détectable.GetCommandLa valeur de retour d'une fonction est la valeur de la valeur d'un message d'interaction qui est envoyé à un programme de stratégie.GetCommandLa fonction renvoie le message, puis le programme d'instruction effectue des opérations correspondantes en fonction du contenu du message. Le bouton d'interaction est installé sur la stratégie et permet de tester les fonctionnalités d'interaction, par exemple, en configurant le robot à l'inventeur de la plate-forme de négociation quantifiée.WexApp

img

Cliquez sur le bouton d'interaction et testez la fonctionnalité pour que le robot reçoive les commandes d'achat.

img

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

Lorsque nous déclenchons une alerte TradingView, WebHook demande à l'URL d'accéder à l'API de l'inventeur pour quantifier l'extension de la plateforme de trading.CommandRobotLe paramètre porté est:buy:0.01Je ne peux pas le faire.

Pour configurer le WebHook de TradingView

En revenant à TradingView, nous remplissons l'URL de WebHook.access_keysecret_keyLes paramètres remplissent leurs propresAPI KEYmethodC'est une question de temps et d'espace.CommandRobotL'API est une extension de l'interface utilisateur.argsLe paramètre est[机器人ID,命令字符串]Les robots peuvent être utilisés pour créer des images, des images, des images, des images, des images, des images, des images, etc.imgCette fois-ci, lorsque le signal est déclenché, nous achetons 0.02 pièces et la chaîne de commande est:"buy:0.02"Cette méthode ne prend en charge que l'écriture du signal dans l'URL, si vous souhaitez obtenir le contenu des messages d'alerte émis par la politique de télévision elle-même, veuillez vous référer à l'adresse WebHook.https://www.fmz.com/api#直接验证

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

Dans TradingView, le paramètre suivant est défini:

img

Attendre le signal de déclenchement... Attendre le signal de déclenchement... 等待信号触发.

img

Le robot reçoit un signal:

img

Cela permet d'utiliser les nombreuses fonctionnalités graphiques de TradingView, les algorithmes d'indicateurs et les robots de stratégie de la plate-forme de trading quantifiée par les inventeurs pour réaliser les transactions automatisées que vous souhaitez, ce qui réduit la difficulté de transférer les stratégies de TradingView vers JavaScript et Python.

Le code de stratégie de "Monitoring Robot Under Signal" est uniquement destiné à la recherche pédagogique, l'utilisation réelle nécessite des ajustements d'optimisation personnalisés, prend en charge les contrats à terme, il est recommandé de le configurer en mode prix du marché, voir les paramètres du code de stratégie pour plus de détails. Si vous avez des questions, nous vous invitons à laisser un commentaire.


Relationnée

Plus de

Pw1013Pourriez-vous me connecter à l'échange de crypto-monnaie, merci.

le groupe Mingxi1005Quand l'inventeur pourra-t-il gagner des contrats à terme sur des paires de pièces?

le groupe Mingxi1005Quand l'inventeur pourra-t-il gagner des contrats à terme sur des paires de pièces?

Il sourit.Vous êtes un bon gars, la stratégie de contrat que j'ai fait, après avoir ouvert des positions, il y a des fois que les positions augmentent à mi-chemin, alors quand je dois enfin faire une mise à niveau, comment faire pour compenser toutes les positions avec cover_long (parce que je ne sais pas combien de fois le milieu augmentera), ce que 1 dans "cover_long:1" est devenu, à genoux pour le code

Tyke950115Mon message de stratégie télé est le suivant: commandes {{strategy.order.action}}@{{strategy.order.contracts}}Ticker. Si je veux faire un contrat, est-ce que je dois ajouter quatre avertissements? Est-ce que le webhook peut citer les champs de la politique? Ou dois-je le faire avant de mourir? Quelles sont les 4 façons de long, cover_long, cover_short dans le webhook pour correspondre aux messages contenus dans l'alarme?

La petite cuisine quantiqueJ'aimerais aussi transmettre le texte des messages de tv, malheureusement, je ne peux pas le transporter, je peux seulement transporter des paramètres url, pas pour les messages de tradingview.

Je ne veux pas[1234567, "buy:50"] Ceci est un achat de 50 usd de BTC, qui a été effectué en utilisant les codes de la banque. Mais quand j'ai vendu, [1234567, "sell:50"] il a montré l'erreur: Alors, comment puis-je me configurer pour vendre tous les BTC que j'ai achetés la première fois?

- Je ne sais pas.C'est vraiment très fonctionnel!

lanbnBonjour professeur, j'ai suivi vos étapes par étape, le serveur est celui que l'inventeur a emporté avec lui, mais la télévision a déjà envoyé un signal, mais le robot du côté de l'inventeur n'exécute toujours pas les commandes du signal, est-ce à cause du serveur?

Je ne sais pas.C'est génial, collectez et regardez lentement

À l'envers de Q./upload/asset/19a5ed382b58652c4dd19.png /upload/asset/19b0ea9ffa5100a3594f3.png /upload/asset/19a806e32e9b589696fa0.png /upload/asset/19a5005173219393cf2d9.png Pourquoi le code du contrat que j'ai ajouté en suivant les étapes n'est-il pas affiché, est-ce que c'est une erreur?

le wuxianPar exemple, si la politique tv indique plusieurs têtes vides, cela va-t-il fonctionner selon les indications de la politique tv?

PY008Les codes des contrats à terme indiquent quoi?

mélon23Où est le tutoriel vidéo des contrats à terme?

suc210Les futures binaires ne sont-elles pas prises en charge?

le yuanlijieComment faire un contrat? Je ne connais pas l'anglais, sauf les lettres orthographiques.

- Je vous en prie.Il y a une grande vague blanche qui s'élargit immédiatement, c'est trop fort.

le feu de l'airC'est un pas en avant, et un pas en arrière.

l' homélieC'était génial.

Pw1013Je lui ai demandé ce qu'il en était de toi.

- Je ne sais pas.J'ai un problème dans ma communauté, pouvez-vous m'aider à le voir?

Le petit rêveIl n'y a pas d'API pour cela.

- Je ne sais pas.Deep n'a même pas de connexion API?

Le petit rêveCela dépend de la demande des utilisateurs.

Le petit rêveIl faut modifier les stratégies, pas une ou deux phrases. FMZ prend directement en charge le langage PINE, ce qui rend plus facile l'exécution directe de scripts PINE.

le groupe Mingxi1005J'aimerais ajouter une fonction de suspension de l'arrêt d'arrêt après le démarrage sur le robot que vous avez publié, où l'ajouter?

Le petit rêveOui, j'ai aussi demandé à leur service clientèle de supprimer les API qui ne sont pas sous contrat.

le groupe Mingxi1005Il n'y a aucun moyen.

Le petit rêveC'est une interface API en direct, chef! Il y a aussi des sites de téléchargement de vidéos et de vidéos.

le groupe Mingxi1005https://www.coinw.fit/front/API Cette adresse a un API, il faut une échelle pour ouvrir /upload/asset/2986424014eb005f8cda2.png

le groupe Mingxi1005https://www.coinw.fit/front/API Ce site a un API, il faut une échelle pour l'ouvrir

Le petit rêveL'adresse n'est pas ouverte. Aucune documentation d'API n'est sous contrat.

le groupe Mingxi1005Le lien d'entrée de l'API: https://coinw.pw/API

Le petit rêveC'est l'API instantanée de coinw, coinw instantanée FMZ est déjà prise en charge, ils n'ont pas d'interface de contrat. Vous devriez consulter Coinw. J'ai demandé à leur service clientèle et ils ont dit qu'il n'y avait pas d'API de contrat.

le groupe Mingxi1005Nous pouvons nous-mêmes le lier avec le protocole général? Il suffit de demander à remplir l'adresse IP, quelle adresse cette adresse IP doit être remplie? Le lien d'entrée de l'API: https://coinw.pw/API

Le petit rêveJe suis embarrassé, mais vous êtes sûr que les contrats gagnant-gagnant ont une API?

le groupe Mingxi1005Oui, professeur, si vous accédez, il y aura beaucoup d'accès quantitatif, parce que le bitcoin gagne 80% de commission.

Le petit rêveBonjour, est-ce que vous avez besoin d'un contrat pour accéder à cette bourse?

Deux et deux.J'ai rencontré le même problème.

lanbnFrère, la stratégie de la télévision en lien direct avec FMZ, est-ce que tu as réussi?

Le petit rêveCe que vous pouvez concevoir spécifiquement, par exemple si vous concevez la requête cover_long:1, changez-la en cover_long:all, de sorte que vous modifiez la stratégie de surveillance de FMZ en recevant l'interaction cover_long, en jugeant si c'est all, tout est en équilibre. Je ne sais pas. // Variable globale var BUY = "buy" // Remarque: commandes à utiliser sur place Var SELL = "sell" // Commandes à utiliser au comptant var LONG = "long" // commandes à utiliser pour les contrats à terme var SHORT = "short" // commandes pour les contrats à terme var COVER_LONG = "cover_long" // commandes à utiliser pour les contrats à terme var COVER_SHORT = "cover_short" // commandes à utiliser pour les contrats à terme Je ne sais pas. Je ne sais pas. Je ne sais pas. Je ne sais pas. } autre si (eType == 1) { Var tradeInfo = nul Var ticker = _C (exchange.GetTicker) si (action == LONG) { Exchange.SetDirection (en anglais seulement) L'ordre de vente est un ordre d'achat. } autre if (action == SHORT) { Exchange.SetDirection (en anglais seulement) L'ordre de vente est un ordre d'achat. } else if (action == COVER_LONG) { // COVER_LONG est le couvercle long, déterminez si c'est cette action, entrez ici si // Ici, vous jugez plus spécifiquement des paramètres tels que all, pour faire la conception d'opérations pour tous les plateaux, pour écrire spécifiquement Exchange.SetDirection (en anglais seulement) L'ordre de vente est un ordre d'achat. } autre if (action == COVER_SHORT) { L'échange.SetDirection (en anglais seulement) L'ordre de vente est un ordre d'achat. Je ne sais pas. Log (("Les échanges à terme ne sont pas pris en charge!", "#FF0000") Je ne sais pas. si (tradeInfo) { est le nombre Log (("tradeInfo:", "tradeInfo") est un fichier dédié à l'entreprise. Je ne sais pas. Je ne sais pas. Jetez "eType error, eType:" + eType Je ne sais pas. acc = _C (exchange.GetAccount) Je ne sais pas. Je ne sais pas.

Yidai estAvez-vous résolu votre question?

Le petit rêveLa stabilité de l'alarme télévisée n'est pas très claire, cela dépend de la télévision.

- Je suis désolée.args=[191755, "buy:0.02"], ici, ajouter des paramètres, faire plus en même temps peut faire de l'espace peut également omettre l'un des paramètres serait-il mieux?

Le petit rêvePour recevoir des demandes TV à l'aide de l'API étendue de FMZ, vous pouvez accéder au contenu de Body à l'adresse suivante: https://www.fmz.com/api# Direct authentification Aujourd'hui, les données du corps peuvent être reçues à partir de l'URL de la demande télévisée.

1131717062S'il vous plaît demander comment les alertes d'ouverture d'opérations sur tv, stratégique, webhook url

Le petit rêvePour recevoir des demandes TV à l'aide de l'API étendue de FMZ, vous pouvez accéder au contenu de Body à l'adresse suivante: https://www.fmz.com/api#%E7%9B%B4%E6%8E%A5%E9%AA%8C%E8%AF%81

La petite cuisine quantique https://www.fmz.com/strategy/221850,看到了,感谢大神!!

Le petit rêveIl y a un moyen simple d'accéder à l'information contenue dans le corps de la requête, en la recherchant dans le champ stratégique.

Le petit rêveIl a modifié sa stratégie pour que 50 soit divisé par le prix de l'époque.

Le petit rêveSi une commande est reçue, l'écran de l'état du robot s'allume, et le bouton de la dernière fois que la commande a été reçue s'allume. La première chose à faire est de vérifier s'il n'y a pas de configuration correcte.

lanbnLa configuration est le Bitcoin sur place, il n'y a pas d'indications sur le journal du robot, la télévision est le déclenchement des conditions et le webhook, c'est tout.

Le petit rêvePour répondre à une question spécifique, l'échange que vous avez configuré sur votre robot est-il à jour, à terme?

Le petit rêveIl est possible de télécharger le fichier /upload/asset/16afbca03eec23516d37.png Vous avez ajouté une erreur sur l'échange.

Le petit rêveMon frère, les captures d'écran API KEY doivent être codées, la sécurité d'abord.

À l'envers de Q.J'ai les droits d'API ouverts sur Binance, j'ai aussi un compte de contrat ouvert, mais je n'arrive pas à ajouter des échanges à terme pendant que la stratégie fonctionne, est-ce un problème de code?

Le petit rêveLe journal indique que Binance explique que l'objet de l'échange ajouté est Bitcoin Cash.

Le petit rêveIl est nécessaire de mettre en place une alerte dans Trading view et de remplir l'adresse du webhook dans les paramètres d'alerte.

Le petit rêveVous pouvez consulter la description de cette fonction. https://www.fmz.com/api#exchange.setcontracttype...

Le petit rêveLe lien est au début de cet article.

mélon23Quelle est la vidéo de la station B?

Le petit rêveLes futures sont utilisées de la même manière, mais les paramètres sont remplacés dans les liens. Var BUY = "acheter" ou "acheter" Var SELL = "vendre" Var LONG = "longue" Var SHORT = " court " Il y a une différence de taille entre les deux. Il y a une différence de taille entre les deux versions. long est un poste ouvert à plusieurs têtes, short est un poste ouvert à plusieurs têtes, cover_long est un poste ouvert à plusieurs têtes, cover_short est un poste ouvert à plusieurs têtes. Je ne sais pas. Il est également possible de télécharger des fichiers sur le serveur de téléchargement de l'application. Je ne sais pas. Le lien buy est remplacé par un autre.

Le petit rêveDeux alarmes sont ajoutées à la télévision. Une simple, une vide.

suc210Si c'est pour avoir plusieurs emplacements en même temps, c'est-à-dire que le signal est fixé à cover_long:10 et à short:10, mais que le téléviseur ne peut exécuter qu'un seul signal, cela n'est-il pas perdu?

Le petit rêveLes futures sont des ordres d'achat, pas de vente.

Le petit rêveLes contrats à terme sont configurés, et les paramètres stratégiques permettent d'utiliser les commandes long, cover_long et autres dans l'url du webhook configuré sur le téléviseur.

clé986C'est le code d'opération pour le produit en cours d'établissement, demandez-lui s'il doit réécrire le code.

Le petit rêveIl y a un tutoriel vidéo qui peut être visionné ici, sur la station B.