Die erweiterte API der FMZ Quant Trading Plattform wurde kürzlich aktualisiert, und das Upgrade unterstützt den direkten Zugriffsmodus, so dass das TradingView-Alarmsignal leicht an die Bots auf FMZ für den automatischen Handel gesendet werden kann.
Verknüpfung des zugehörigen Teils in der FMZ-API-Dokumentation
Die Hauptfunktion der erweiterten API besteht darin, Schnittstellen für verschiedene Funktionen auf der FMZ Quant-Handelsplattform bereitzustellen, für die programmatischen Operationen, wie z. B. Batchstart-Bots gleichzeitig, Timing-Bot-Start und -Stop, Lesen von Bot-Informationsdetails usw. Wir verwenden die erweiterte API von FMZ, um den TradingView-Alarmsignalhandel zu implementieren.CommandRobot(RobotId, Cmd)
Diese Schnittstelle kann interaktiven Befehle an den Bot mit der angegebenen ID senden, und der Bot kann die entsprechenden Operationen ausführen (z. B. eine Bestellung zum Kaufen oder Verkaufen etc.)
Um die erweiterte API zu verwenden, müssen Sie zuerst Ihr eigenes Konto erstellenAPI KEY
auf FMZ:
API KEY
besteht ausaccess key
undsecret key
; API KEY
ist der Schlüssel, um die FMZ Quant Trading Plattform programmatisch zu betreiben, also stellen Sie sicher, dass Sie es ordnungsgemäß aufbewahren und nicht offenlegen.API KEY
, können Sie die Berechtigungen angeben.API KEY
die Erlaubnis zum Zugriff aufCommandRobot(RobotId, Cmd)
In diesem Beispiel, aus Sicherheitsgründen, geben Sie bitte nur die Zugriffsberechtigung vonCommandRobot(RobotId, Cmd)
die Schnittstelle zur FMZ erweitertAPI KEY
.
Der direkte Zugangsmodus zeigt direktes Schreiben anAPI KEY
in der Abfrage von URL; zum Beispiel kann die URL, die auf die erweiterte API der FMZ Quant-Plattform zugreift, wie folgt geschrieben werden:
https://www.fmz.com/api/v1?access_key=xxx&secret_key=yyyy&method=CommandRobot&args=[186515,"ok12345"]
Unter ihnen:https://www.fmz.com/api/v1
ist die Schnittstellenadresse;?
wird durchQuery
Der Parameteraccess_key
wird beispielsweise durch xxx dargestellt (beim Benutzen der Funktion geben Sie den Access_key Ihres FMZ-Kontos ein); der Parametersecret_key
wird durch yyyy dargestellt (beim Benutzen füllen Sie secret_key aus); der Parametermethod
ist der spezifische Name der erweiterten API-Schnittstelle, auf die zugegriffen werden soll, undargs
ist der Parameter dermethod
Interface, die aufgerufen werden soll.
Wir verwenden TradingView als Signalquelle, um Handelsbefehle an die FMZ-Bots zu senden.CommandRobot
interface.
Zunächst einmal müssen Sie ein TradingView Pro-Konto haben. Die Basic-Ebene kann die WebHood-Funktion nicht in der Warnung verwenden.
Hier, zur Bequemlichkeit der Demonstration, verwenden wir die am häufigsten verwendetenMACD
Anschließend wird die K-Linienperiode auf 1 Minute gesetzt (um das Auslösen des Signals zu beschleunigen und die Demonstration zu erleichtern).
Klicken Sie mit der rechten Maustaste auf das Diagramm und wählen Sie im Popup-Menü
AusgestattetWebHook
In diesem Punkt müssen Sie sich nicht um die Einstellung kümmern. Lassen Sie uns zuerst den Bot ausführen, der die Signale auf der FMZ Quant-Handelsplattform überwacht.
Strategie-Quellcode:
// 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)
}
}
Der Code ist sehr einfach. Es erkennt den Rückgabewert derGetCommand
Wenn eine interaktive Nachricht an das Strategieprogramm gesendet wird,GetCommand
Die Strategie wird von einem Bot ausgestattet, der eine entsprechende Handelsoperation basierend auf dem Inhalt der Nachricht durchführt.WexApp
der FMZ Quant Handelsplattform.
Klicken Sie auf die Interaktionsschaltfläche, um die Bot-Kapazität zu testen, um einen Kaufbefehl zu erhalten.
Wir können sehen, dass die vom Bot empfangene Befehlszeile lautet:buy:0.01
.
Wir müssen nur die getragenen Parameter seinbuy:0.01
während des Zugriffs aufCommandRobot
die Schnittstelle der erweiterten API von FMZ Quant in der WebHook-Anfrage-URL, wenn die TradingView-Warnung ausgelöst wird.
Zurück zu TradingView, füllen wir die URL des WebHook.API KEY
in deraccess_key
undsecret_key
für diemethod
Wir müssen nur auf die erweiterte API zugreifen.CommandRobot
- dieargs
Parameter ist in Form von[robot ID, command string]
, können wir die Roboter-ID direkt über die Bot-Seite erhalten, wie in der Abbildung gezeigt:
Dieses Mal, wenn wir das Signal auslösen, kaufen Sie 0,02 Münze, und die Befehlszeile lautet:"buy:0.02"
Das ist die WebHook-URL.
https://www.fmz.com/api/v1?access_key=e3809e173e23004821a9bfb6a468e308&secret_key=45a811e0009d91ad21154e79d4074bc6&method=CommandRobot&args=[443999,"buy:0.02"]
Auf TradingView eingestellt:
Warten Sie, bis das Signal ausgelöst wird. Wenn der Bot das Signal empfängt, sehen Sie die Warnsignale oben rechts auf der Seite und die Triggerprotokolle unten rechts.
Der Bot hat das Signal empfangen:
Auf diese Weise können Sie die reichen Chartfunktionen und Indikator-Algorithmen auf TradingView verwenden, um mit dem Strategie-Bot von FMZ Quant zusammenzuarbeiten, um den von Ihnen gewünschten automatisierten Handel zu realisieren.
Der Strategie-Code von