Verwenden Sie die erweiterte API auf FMZ Quant, um den Warnsignalhandel "TradingView" zu realisieren

Schriftsteller:- Ich bin ein Idiot., Erstellt: 2022-03-30 16:28:09, aktualisiert: 2022-03-31 17:32:25

Verwenden Sie die erweiterte API auf FMZ, um TradingView Alert Signal Trading zu realisieren

Video-Link auf Bilibili

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.

Erweiterte API der FMZ Quant-Plattform

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 KEYauf FMZ:img

API KEYbesteht ausaccess keyundsecret key; API KEYist 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 KEYdie 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.

Direktzugriffsmodus der erweiterten API

Der direkte Zugangsmodus zeigt direktes Schreiben anAPI KEYin 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/v1ist die Schnittstellenadresse;?wird durchQueryDer Parameteraccess_keywird beispielsweise durch xxx dargestellt (beim Benutzen der Funktion geben Sie den Access_key Ihres FMZ-Kontos ein); der Parametersecret_keywird durch yyyy dargestellt (beim Benutzen füllen Sie secret_key aus); der Parametermethodist 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 Handelsbefehle an die FMZ-Bots zu senden.CommandRobot interface.

Handelsansicht

Zunächst einmal müssen Sie ein TradingView Pro-Konto haben. Die Basic-Ebene kann die WebHood-Funktion nicht in der Warnung verwenden.

img

Hier, zur Bequemlichkeit der Demonstration, verwenden wir die am häufigsten verwendetenMACDAnschließend wird die K-Linienperiode auf 1 Minute gesetzt (um das Auslösen des Signals zu beschleunigen und die Demonstration zu erleichtern).

img

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

img

AusgestattetWebHookIn 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.

Bestellung von Monitoring-Signal-Bot

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

Strategie-Quellcode

Der Code ist sehr einfach. Es erkennt den Rückgabewert derGetCommandWenn eine interaktive Nachricht an das Strategieprogramm gesendet wird,GetCommandDie Strategie wird von einem Bot ausgestattet, der eine entsprechende Handelsoperation basierend auf dem Inhalt der Nachricht durchführt.WexAppder FMZ Quant Handelsplattform.

img

Klicken Sie auf die Interaktionsschaltfläche, um die Bot-Kapazität zu testen, um einen Kaufbefehl zu erhalten.

img

Wir können sehen, dass die vom Bot empfangene Befehlszeile lautet:buy:0.01.

Wir müssen nur die getragenen Parameter seinbuy:0.01während des Zugriffs aufCommandRobotdie Schnittstelle der erweiterten API von FMZ Quant in der WebHook-Anfrage-URL, wenn die TradingView-Warnung ausgelöst wird.

WebHook-Konfiguration von TradingView

Zurück zu TradingView, füllen wir die URL des WebHook.API KEYin deraccess_keyundsecret_keyfür diemethodWir müssen nur auf die erweiterte API zugreifen.CommandRobot- dieargsParameter 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:img

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:

img

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:img

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 Ordering Bot of Monitoring Signal ist nur für Studium und Forschung bestimmt. Er muss für den Einsatz von echten Bots optimiert und angepasst werden. Er unterstützt auch Futures. Wir empfehlen, ihn auf Market Order-Modus einzustellen. Weitere Informationen finden Sie in den Strategie-Code-Parametern. Wenn Sie Fragen oder Anregungen haben, hinterlassen Sie bitte eine Nachricht.


Mehr