Verwenden Sie die erweiterte API auf der FMZ Quant Trading Platform, um den TradingView-Alarmsignalhandel zu realisieren

Schriftsteller:Lydia., Erstellt: 2022-12-14 13:42:41, Aktualisiert: 2023-09-20 10:17:53

img

Verwenden Sie die erweiterte API auf der FMZ Quant Trading Platform, um den TradingView-Alarmsignalhandel zu realisieren

Die erweiterte API auf der FMZ Quant Trading Platform wurde kürzlich aktualisiert, um den direkten Zugriff zu unterstützen, so dass sie das TradingView-Alarmsignal leicht an den FMZ Quant Trading Platform-Roboter für den automatischen Handel senden kann.

Die erweiterte API auf der FMZ Quant Trading Platform

Einige Links zur API-Dokumentation über FMZ (https://www.fmz.com/api)

Die Hauptfunktion der erweiterten API besteht darin, Schnittstellen für verschiedene Funktionen auf der FMZ Quant Trading Platform für programmatische Operationen bereitzustellen, z. B. Roboter gleichzeitig in Chargen zu starten, Roboter gleichzeitig zu starten und zu stoppen, Roboterinformationsdetails zu lesen usw. Wir verwenden die erweiterte API auf der FMZ Quant Trading Platform, um den Bedarfsplan des TradingView-Alarmsignals zu realisieren, der nur dieCommandRobot(RobotId, Cmd)Diese Schnittstelle kann dem Roboter interaktive Anweisungen mit einer spezifizierten ID senden und der Roboter kann nach Erhalt der Anweisungen entsprechende Operationen ausführen (z. B. eine Bestellung zum Kaufen, Verkaufen usw.). Um die erweiterte API zu verwenden, müssen Sie eineAPI KEYfür Ihr eigenes FMZ-Konto zuerst:

img

Der geheime Schlüssel vonAPI KEYbesteht ausaccess keyundsecret key. API KEYDer Schlüssel zur Quantifizierung der FMZ Quant Trading Plattform des programmatischen Betriebs ist, so dass sie ordnungsgemäß aufbewahrt und nicht offengelegt werden muss.API KEYAuf FMZ können Sie Berechtigungen angeben.API KEYZugriff auf dieCommandRobot(RobotId, Cmd)Für dieses Beispiel, basierend auf Sicherheitsüberlegungen, geben Sie bitte nur die erweiterteAPI KEYAuf FMZ-Zulassung für den Zugang zuCommandRobot(RobotId, Cmd) interface.

Direktzugriffsmodus der erweiterten API

Der direkte Zugangsmodus bedeutet, dass dieAPI KEYwird direkt in der URL-Abfrage geschrieben. Zum Beispiel kann die URL für den Zugriff auf die erweiterte API auf der FMZ Quant Trading Platform wie folgt geschrieben werden:

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

Wo ist er?https://www.fmz.com/api/v1ist die Schnittstellenadresse,?wird durchQuery, Parameteraccess_keyDer geheime Schlüssel wird beispielsweise durch xxx dargestellt (ausfüllen Sie den Access_key Ihres eigenen FMZ-Kontos, wenn Sie ihn verwenden).secret_keywird durch yyyy (füllen Sie in Ihrem eigenen Konto secret_key, wenn Sie es verwenden) dargestellt.methodist der spezifische Name der erweiterten API-Schnittstelle, auf die zugegriffen werden soll, undargsist der Parameter dermethodInterface, die aufgerufen werden soll.

Wir verwenden TradingView als Signalquelle, um Transaktionsbefehle an den FMZ Quant Trading Platform Roboter zu senden.CommandRobot interface.

Handelsansicht

Die WebHood-Funktion in der Warnung kann nicht auf der Basisebene verwendet werden.

In der TradingView-Diagramm, können Sie einen Indikator zum Diagramm oder andere Skript-Algorithmen hinzufügen.MACDWir setzen die K-Linienperiode auf 1 Minute (für schnellere Signal-Auslösung und einfache Demonstration).

Klicken Sie mit der rechten Maustaste auf das Diagramm und wählen Sie im Popup-Menü Alarm hinzufügen aus.

AusgestattetWebHookIn diesem Punkt können wir den Überwachungssignalroboter auf der FMZ Quant Trading Plattform starten.img

Überwachungssignal-Befehlsroboter

Strategie-Quellcode:

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

Strategie-Quellcode (https://www.fmz.com/strategy/203063)

Der Strategie-Code ist sehr einfach.GetCommandWenn eine interaktive Nachricht an das Strategieprogramm gesendet wird,GetCommandFunktion gibt die Nachricht zurück, und das Strategieprogramm führt den entsprechenden Transaktionsvorgang nach dem Nachrichteninhalt durch. Die interaktive Schaltfläche wurde auf diese Strategie gesetzt, um die interaktive Funktion zu testen. Zum Beispiel, führen Sie diese Strategie aus und konfigurieren Sie den Roboter mitWexApp, eine Simulationsbörse der FMZ Quant Trading Platform.

Wir klicken auf die interaktive Schaltfläche, um die Funktion des Roboters zu testen, die Bestellung zu kaufen zu empfangen, dann können wir sehen, dass die Befehlszeile, die der Roboter empfängt, lautet:buy:0.01.

Wir müssen nur die WebHook-Anfrage-URL, wenn die TradingView-Warnung ausgelöst wird, um auf dieCommandRobotdie Interface der erweiterten API der FMZ Quant Trading Platform, der übertragene Parameter istbuy:0.01.

Setzen Sie WebHook von TradingView

Zurück in der TradingView, füllen wir die URL des WebHook. Füllen Sie Ihren eigenen API-Key für die Parameteraccess_key, secret_key. DiemethodWir müssen nur auf dieCommandRobotdie erweiterte API-Schnittstelle.argsist in Form von[Robot ID, Command String]Wir können die Roboter-ID direkt über die Roboter-Seite erhalten, wie in der Abbildung gezeigt:

img

Diesmal lassen wir das Signal auslösen, kaufen 0,02 Münzen, und die Befehlszeile lautet:buy:0.02. Dann ist die WebHook-URL abgeschlossen. Diese Methode unterstützt nur das Schreiben des Signals in der URL. Wenn Sie den Inhalt der Warnmeldung erhalten möchten, die von der TV-Strategie selbst gesendet werden kann, wenden Sie sich anhttps://www.fmz.com/api#direkte Überprüfung.

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

Auf der TradingView eingestellt:

img

Warten Sie, bis das Signal ausgelöst wird... Warten Sie, bis das Signal ausgelöst wird... Warten Sie, bis das Signal ausgelöst wird... Ich...

img

Dann erhält der Roboter das Signal, auf diese Weise können wir die verschiedenen Chartfunktionen und Indikator-Algorithmen auf TradingView verwenden, um mit dem Strategie-Roboter der FMZ Quant Trading Platform zusammenzuarbeiten, um den gewünschten automatischen Handel zu erzielen.

Der Strategie-Code von robot für das Platzieren von Aufträgen durch Überwachung von Signalen dient nur zum Lernen und zur Forschung. Die Verwendung auf einem echten Bot muss selbst optimiert und angepasst werden, um Futures zu unterstützen. Es wird empfohlen, ihn auf den Marktpreis-Ordermodus einzustellen. Siehe die Strategie-Code-Parameter für Details. Wenn Sie Fragen oder Anregungen haben, lassen Sie bitte eine Nachricht.


Verwandt

Mehr