avatar of 发明者量化-小小梦 发明者量化-小小梦
konzentrieren Sie sich auf Private Nachricht
4
konzentrieren Sie sich auf
1271
Anhänger

Verwenden Sie die Inventor Quantitative Trading Platform Extension API, um den Handel mit TradingView-Alarmsignalen zu implementieren (empfohlen)

Erstellt in: 2020-04-29 17:08:27, aktualisiert am: 2025-05-16 16:29:48
comments   104
hits   12185

Verwenden Sie die Inventor Quantitative Trading Platform Extension API, um den Handel mit TradingView-Alarmsignalen zu implementieren (empfohlen)

Verwenden Sie die Inventor Quantitative Trading Platform Extension API, um den Handel mit TradingView-Alarmsignalen zu implementieren

Videoverbindung zur Station B

Die Erweiterungs-API der Inventor Quantitative Trading Platform wurde kürzlich aktualisiert und unterstützt nun den Direktzugriffsmodus. Dadurch können problemlos TradingView-Alarmsignale an den Roboter der Inventor Quantitative Trading Platform gesendet werden, um automatischen Handel zu ermöglichen. Wenn Sie immer noch nicht wissen, was die Erweiterungs-API ist, lassen Sie es mich genauer erklären.

Inventor-API zur Erweiterung der quantitativen Handelsplattform

Zugehörige Links zur Inventor-API-Dokumentation

Die Hauptfunktion der erweiterten API besteht darin, eine Schnittstelle für verschiedene Funktionen auf der quantitativen Handelsplattform des Erfinders programmgesteuerter Operationen bereitzustellen, z. B. das gleichzeitige Starten von Robotern in Stapeln, das Starten und Stoppen von Robotern zu festgelegten Zeiten, das Lesen detaillierter Roboterinformationen usw. Wir verwenden die Inventor Quantitative Trading Platform Extension API, um den Handel mit TradingView-Alarmsignalen zu implementieren. Diese Anforderung erfordert lediglich die Erweiterung der API.CommandRobot(RobotId, Cmd)Die Schnittstelle kann interaktive Anweisungen mit der angegebenen ID an den Roboter senden. Der Roboter kann nach Erhalt der Anweisungen entsprechende Vorgänge ausführen (z. B. Kauf- oder Verkaufsaufträge erteilen).

Um die Erweiterungs-API nutzen zu können, müssen Sie zunächst Ihr eigenes Erfinderkonto erstellenAPI KEY: Verwenden Sie die Inventor Quantitative Trading Platform Extension API, um den Handel mit TradingView-Alarmsignalen zu implementieren (empfohlen) API KEYDer Schlüssel istaccess keyUndsecret keyZusammensetzung,API KEYDies ist der Schlüssel zur quantitativen Handelsplattform, die durch programmierte Operationen entwickelt wurde. Er muss daher sorgfältig aufbewahrt und darf niemals preisgegeben werden. Erstellen einer FMZ-ErweiterungAPI KEYSie können Berechtigungen festlegen, wenn SieAPI KEYZugriff gewährenCommandRobot(RobotId, Cmd)Erteilen Sie für dieses Beispiel aus Sicherheitsgründen nur Berechtigungen für FMZ-Erweiterungen.API KEYSchenkenCommandRobot(RobotId, Cmd)Zugriffsberechtigungen für die Schnittstelle.

Direktzugriffsmodus für die Erweiterungs-API

Der Direktzugriffsmodus bedeutetAPI KEYSchreiben Sie es direkt in die Abfrage der URL. Die URL für den Zugriff auf die Inventor Quantitative Trading Platform-Erweiterungs-API kann beispielsweise wie folgt geschrieben werden:

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

In,https://www.fmz.com/api/v1ist die Schnittstellenadresse,?DanachQuery,Parameteraccess_keyDas Schlüsselbeispiel wird durch xxx dargestellt (geben Sie bei Verwendung Ihren eigenen FMZ-Konto-Zugangsschlüssel ein), Parametersecret_keyDer geheime Schlüssel wird durch yyyy dargestellt (geben Sie bei Verwendung den geheimen Schlüssel Ihres eigenen Kontos ein), der ParametermethodIst der spezifische Name der erweiterten API-Schnittstelle, auf die zugegriffen werden soll.argsAngerufen werdenmethodParameter der Schnittstelle.

Wir verwenden TradingView als Signalquelle, um Handelsbefehle an den quantitativen Handelsplattformroboter des Erfinders zu senden.CommandRobotDiese Schnittstelle.

TradingView

Zunächst benötigen Sie ein TradingView Pro-Konto. Die WebHood-Funktion im Alarm ist auf der Basisebene nicht verfügbar. Wir gehen zum Chart auf TradingView.

Verwenden Sie die Inventor Quantitative Trading Platform Extension API, um den Handel mit TradingView-Alarmsignalen zu implementieren (empfohlen)

Fügt dem Diagramm einen Indikator, aber auch andere Skriptalgorithmen hinzu. Hier verwenden wir die am häufigsten verwendetenMACDIndikator, und stellen Sie dann die K-Linienperiode auf 1 Minute ein (um das Signal schneller auszulösen und die Demonstration zu erleichtern).

Verwenden Sie die Inventor Quantitative Trading Platform Extension API, um den Handel mit TradingView-Alarmsignalen zu implementieren (empfohlen)

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

Verwenden Sie die Inventor Quantitative Trading Platform Extension API, um den Handel mit TradingView-Alarmsignalen zu implementieren (empfohlen)

Im Popup-Fenster „Alarm“ einstellenWebHookBei diesem Schritt müssen Sie sich nicht beeilen, ihn einzurichten. Lassen Sie uns zunächst den Roboter ausführen, der Signale auf der Quantitative Trading Platform des Erfinders überwacht.

Überwachungssignal-Bestellroboter

Quellcode der Strategie:

// 全局变量
var BUY = "buy"     // 注意:现货用的命令
var SELL = "sell"   //      现货用的命令
var LONG = "long"   // 期货用的命令
var SHORT = "short" // 期货用的命令
var COVER_LONG = "cover_long"   // 期货用的命令
var COVER_SHORT = "cover_short" // 期货用的命令

function main() {
    // 清空日志,如不需要,可以删除
    LogReset(1)

    // 设置精度
    exchange.SetPrecision(QuotePrecision, BasePrecision)

    // 识别期货还是现货
    var eType = 0
    var eName = exchange.GetName()
    var patt = /Futures_/
    if (patt.test(eName)) {
        Log("添加的交易所为期货交易所:", eName, "#FF0000")
        eType = 1
        if (Ct == "") {
            throw "Ct 合约设置为空"
        } else {
            Log(exchange.SetContractType(Ct), "设置合约:", Ct, "#FF0000")
        }
    } else {
        Log("添加的交易所为现货交易所:", eName, "#32CD32")
    }
    
    var lastMsg = ""
    var acc = _C(exchange.GetAccount)
    while(true) {
        var cmd = GetCommand()
        if (cmd) {
            // 检测交互命令
            lastMsg = "命令:" + cmd + "时间:" + _D()
            var arr = cmd.split(":")
            if (arr.length != 2) {
                Log("cmd信息有误:", 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("现货交易所不支持!", "#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("期货交易所不支持!", "#FF0000")
                }
                if (tradeInfo) {
                    Log("tradeInfo:", tradeInfo)
                }
            } else {
                throw "eType error, eType:" + eType
            }
            acc = _C(exchange.GetAccount)
        }
        var tbl = {
            type : "table", 
            title : "状态信息", 
            cols : ["数据"], 
            rows : []
        }
        // tbl.rows.push([JSON.stringify(acc)])   // 测试时使用
        LogStatus(_D(), eName, "上次接收到的命令:", lastMsg, "\n", "`" + JSON.stringify(tbl) + "`")
        Sleep(1000)
    }
}

Strategie-Quellcode

Der Strategiecode ist sehr einfach, ErkennungGetCommandDer Rückgabewert der Funktion, wenn eine interaktive Nachricht an das Richtlinienprogramm gesendet wird,GetCommandDie Funktion gibt diese Nachricht zurück und das Strategieprogramm führt dann basierend auf dem Inhalt der Nachricht entsprechende Handelsoperationen durch. Für diese Strategie wurde die interaktive Schaltfläche eingerichtet, mit der die interaktive Funktion getestet werden kann. Führen Sie beispielsweise diese Strategie aus und konfigurieren Sie den Roboter mit einem simulierten Austausch der Inventor Quantitative Trading Platform.WexApp

Verwenden Sie die Inventor Quantitative Trading Platform Extension API, um den Handel mit TradingView-Alarmsignalen zu implementieren (empfohlen)

Klicken Sie auf die Interaktionsschaltfläche, um die Fähigkeit des Roboters zu testen, Kaufbefehle zu empfangen.

Verwenden Sie die Inventor Quantitative Trading Platform Extension API, um den Handel mit TradingView-Alarmsignalen zu implementieren (empfohlen)

Sie können sehen, dass die vom Roboter empfangene Befehlszeichenfolge lautet:buy:0.01

Wir müssen lediglich dafür sorgen, dass die WebHook-Anforderungs-URL auf die Inventor Quantitative Trading Platform Extension API zugreift, wenn der TradingView-Alarm ausgelöst wird.CommandRobotBei Verwendung der Schnittstelle werden folgende Parameter übertragen:buy:0.01Das ist es.

Einrichten des WebHooks von TradingView

Zurück in TradingView geben wir die URL des WebHooks ein. Gebenaccess_keysecret_keyGeben Sie Ihre eigenen Parameter einAPI KEYmethodBehoben, wir müssen nur zugreifenCommandRobotDiese erweiterte API-Schnittstelle,argsDie Parameter sind[机器人ID,命令字符串]In dieser Form können wir die Roboter-ID direkt über die Roboterseite abrufen, wie in der Abbildung dargestellt: Verwenden Sie die Inventor Quantitative Trading Platform Extension API, um den Handel mit TradingView-Alarmsignalen zu implementieren (empfohlen) Dieses Mal lassen wir das Signal auslösen und kaufen 0,02 Münzen. Die Befehlszeichenfolge lautet:"buy:0.02". Damit ist die WebHook-URL vervollständigt. Diese Methode unterstützt nur das Schreiben des Signals in die URL. Wenn Sie den Inhalt der Warnmeldung erhalten möchten, die von der TV-Strategie selbst ausgegeben werden kann, lesen Sie https://www.fmz.com/api#%E7%9B %B4%E6 %8E%A5%E9%AA%8C%E8%AF%81.

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

Einrichten auf TradingView:

Verwenden Sie die Inventor Quantitative Trading Platform Extension API, um den Handel mit TradingView-Alarmsignalen zu implementieren (empfohlen)

Warten auf das Auslösesignal… Warten auf das Auslösesignal. Warten auf die Auslösung des Signals.

Verwenden Sie die Inventor Quantitative Trading Platform Extension API, um den Handel mit TradingView-Alarmsignalen zu implementieren (empfohlen)

Der Roboter hat das Signal empfangen:

Verwenden Sie die Inventor Quantitative Trading Platform Extension API, um den Handel mit TradingView-Alarmsignalen zu implementieren (empfohlen)

Auf diese Weise können Sie die umfangreichen Diagrammfunktionen und Indikatoralgorithmen von TradingView in Verbindung mit den Strategierobotern der Inventor Quantitative Trading Platform nutzen, um den gewünschten automatisierten Handel zu erreichen. Im Vergleich zur Portierung der Strategien von TradingView in JavaScript- und Python-Sprachen ist die Der Schwierigkeitsgrad wird erheblich reduziert.

Der Strategiecode des „Monitoring Signal Order Placing Robot“ dient nur zu Lern- und Forschungszwecken. Er muss für den tatsächlichen Einsatz von Ihnen selbst optimiert und angepasst werden. Er unterstützt Futures und es wird empfohlen, ihn auf den Marktauftragsmodus einzustellen. Siehe die Strategie Codeparameter für Details. Dies ist nur ein Ausgangspunkt. Wenn Sie Fragen oder Anregungen haben, hinterlassen Sie bitte eine Nachricht.