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.
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 KEY
pour votre propre compte FMZ d'abord:
La clé secrète deAPI KEY
est constitué de:access key
etsecret key
. API KEY
Il 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 KEY
sur FMZ, vous pouvez spécifier des autorisations.API KEY
autorisation d'accès auCommandRobot(RobotId, Cmd)
Pour cet exemple, pour des raisons de sécurité, veuillez ne donner que la version étendueAPI KEY
sur l'autorisation FMZ d'accéder à laCommandRobot(RobotId, Cmd)
interface.
Le mode d'accès direct signifie que leAPI KEY
est é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/v1
est l'adresse de l'interface,?
est suivie deQuery
, paramètreaccess_key
la 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_key
est représenté par yyyy (remplissez votre propre compte secret_key lorsque vous l'utilisez). Le paramètremethod
est le nom spécifique de l'interface API étendue à accéder, etargs
est le paramètre dumethod
interface à 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.
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.MACD
les 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
RéglageWebHook
À ce stade, nous pouvons exécuter le robot de signal de surveillance sur la plateforme de trading quantique FMZ en premier.
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 laGetCommand
Lorsque un message interactif est envoyé au programme de stratégie, leGetCommand
fonction 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 à laCommandRobot
l'interface de l'API étendue de la plateforme de négociation quantitative FMZ, le paramètre transporté estbuy:0.01
.
Retour dans le TradingView, nous remplissons l'URL du WebHook. remplir votre propre clé API pour les paramètresaccess_key
, secret_key
Lemethod
Nous n'avons qu'à accéder auCommandRobot
L'interface API étendue. Le paramètreargs
est 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:
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:
Attends le signal pour déclencher... Attends le signal pour déclencher... Attends le signal pour déclencher... - Je ne sais pas.
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