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.
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 KEY
sur la FMZ:
### Direct Access Mode of Extended API
The direct access mode indicates directly writing ```API KEY``` in the Query of URL; for example, the URL accessing the extended API of FMZ Quant platform can be written as:
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,“ok12345”]
Among them, ```https://www.fmz.com/api/v1``` is the interface address; ```?``` is followed by ```Query```; the parameter ```access_key``` is, for example, represented by xxx (when using, fill in the access_key of your own FMZ account); the parameter ```secret_key``` is represented by yyyy (when using, fill in your own account secret_key); the parameter ```method``` is the specific name of the extended API interface to be accessed, and ```args``` is the parameter of the ```method``` interface to be called.
We use TradingView as a signal source to send trading commands to the FMZ bots. In fact, we only use the ```CommandRobot``` interface.
### TradingView
First of all, you need to have a TradingView Pro account. The Basic level cannot use the WebHood function in the alert. We enter the Chart of TradingView.
![Use the extended API on FMZ Quant to realize "TradingView" alert signal trading](/upload/asset/269159723a8d53f907d86.png)
Add an indicator to the chart, and other script algorithms can also be used. Here, for the convenience of demonstration, we use the most commonly used ```MACD``` indicator, and then set the K-line period to 1 minute (in order to make the signal trigger faster and facilitate the demonstration).
![Use the extended API on FMZ Quant to realize "TradingView" alert signal trading](/upload/asset/26980a2ff4858e1ed81e6.png)
Right-click on the chart and select "Add Alert" from the pop-up menu.
![Use the extended API on FMZ Quant to realize "TradingView" alert signal trading](/upload/asset/2689e1efab8e133c43188.png)
Set ```WebHook``` in the "Alert" pop-up window. At this point, you don't have to worry about setting it. Let's first run the bot that monitors the signals on FMZ Quant trading platform.
### Ordering Bot of Monitoring Signal
Strategy source code:
```js
// 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)
}
}
Le code est très simple. Il détecte la valeur de retour de laGetCommand
Quand il y a un message interactif envoyé au programme de stratégie,GetCommand
le 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éeWexApp
de la plateforme de négociation FMZ Quant.
Cliquez sur le bouton d'interaction pour tester la capacité du bot à recevoir une commande d'achat.
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.01
au cours de l'accès auCommandRobot
l'interface de l'API étendue FMZ Quant dans l'URL de demande WebHook, lorsque l'alerte TradingView est déclenchée.
Retour à TradingView, nous remplissons l'URL du WebHook.API KEY
dans leaccess_key
etsecret_key
Paramètresmethod
est fixé, nous avons seulement besoin d'accéder à l'API étendueCommandRobot
; leargs
le 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:
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:
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:
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