Auf der Inventor Quantitative Trading PlattformStrategieplatzEs gibt viele interessante Strategien im Internet. Damals nutzten die meisten digitalen Währungsbörsenrest
Die API-Schnittstelle des Protokolls, viele Strategien basieren aufrest
Schnittstelle, manchmal sind die Marktaktualisierungen langsam. Darüber hinaus sind in letzter Zeit einige Börsen aufgetauchtrest
Ein Schnittstellenfehler führt dazu, dass die Richtlinie unbrauchbar wird. Wenn die Richtlinie geändert wird, fügen Sie hinzuwebsocket
Die Schnittstellenunterstützung erfordert bestimmte Änderungen am Strategiecode, was normalerweise problematisch ist (eine Änderung der Strategie ist viel schwieriger als ihr Neuschreiben).
Wie kann ich die gleiche Strategie verwenden, ohne sie zu ändern?websocket
Was ist mit der Marktschnittstelle?
Dies zeigt deutlich die enorme Flexibilität der Inventor Quantitative Trading Platform. Wir können:
exchange.GetTicker
Funktions-Hook-Operation zum Abrufen von Marktinformationen.Dies ermöglicht die Steuerung der Strategie durchwebsocket
Die über die Marktschnittstelle gesteuerten Daten werden ausgeführt.
Verwendete ProgrammierspracheJavaScript
Sprache.
Zum Beispiel wollen wir eine klassische alte Strategie “Icebreaker” modifizieren
Schauen wir uns zunächst den Strategiecode an und stellen fest, dass die Strategie von den Tick-Marktbedingungen bestimmt wird und hauptsächlichticker
In den DatenBuy
、Sell
、Last
Diese Eigenschaften,ticker
Die Daten werden über die API-Funktion der FMZ-Plattform bezogen:exchange.GetTicker
Erhalten. Damit ist das Ziel klar.exchange.GetTicker
FunktionHook
Der Vorgang (d. h. das Überschreiben durch eine andere Version und anschließende Ersetzen) ist alles, was erforderlich ist.
Wir können die Icebreaker-Strategie jedoch nicht umschreiben, da dies Auswirkungen auf die Strategie hätte. Was wir wollen, ist eine nahtlose Verbindung! !
Der nächste Protagonist muss also her.
init
FunktionskoordinationWir erstellen eine „Vorlagenbibliothek“ und nennen sie:SeamlessConnWS, löschen Sie den Anfangscode.
Dann geben SieSeamlessConnWSDie Vorlage legt 2 Parameter fest
Wird verwendet, um zu steuern, ob die Funktion aktiviert oder deaktiviert wird.websocket
Schnittstellenfunktion, Steuerung und Festlegung der Öffnung spezifischer Marktschnittstellen. In diesem Beispiel können aus Platzgründen nurexchange.GetTicker
Die Schnittstelle führt Hook-Operationen aus. Die Parameter werden also nur aktiviert,GetTicker
Die Schnittstelle ist der Steuerparameter des Websocket-Modus: Hook_GetTicker.
Sobald die Vorlage erstellt ist, können Sie die spezifische Börse, auf die zugegriffen werden soll, in die Vorlage schreiben.websocket
Schnittstelle, abonnieren Sie bestimmte Kurse und warten Sie dann, bis die Börse Daten überträgt. Der spezifische Code wird hier nicht wiederholt. Sie können auf den SeamlessConnWS-Code (öffentlich verfügbar) und die API-Dokumentation verweisen. Was Sie sich ansehen müssen, ist die Vorlageinit
Funktionen und globale Variablen_DictConnectCreater
、_ConnMap
:
Code:
var _DictConnectCreater = {
"Huobi" : WSConnecter_Huobi,
"Binance" : WSConnecter_Binance,
}
var _ConnMap = {}
function init () {
if (IsUsedWebSocket) {
var connectCreater = null
if (exchanges.length != 1) {
Log("切换为ws接口只针对 exchange 交易所对象(即第一个添加的交易所对象)")
}
var isFound = false
for (var name in _DictConnectCreater) {
if (exchange.GetName() == name) {
connectCreater = _DictConnectCreater[name]
isFound = true
}
}
if (!isFound) {
throw "没有找到实现"
}
if (Hook_GetTicker) {
var symbol = exchange.GetCurrency()
_ConnMap.GetTicker = connectCreater("GetTicker", symbol)
exchange.GetTicker = function () {
return _C(_ConnMap.GetTicker.Read)
}
}
// ...
}
}
Sie können sehen, dass diese Vorlage nur 2 Austausche implementiert.websocket
Die Marktschnittstellen sind Binance Spot und Huobi Spot.init
Die Funktion besteht darin, die „Icebreaker“-Strategie zu referenzierenSeamlessConnWSNachdem die Vorlage erstellt wurde, wird beim Ausführen der realen Festplatte als erstes Folgendes ausgeführt:init
Funktion, die automatischexchange.GetTicker
Ersetzen Sie den Funktionsinhalt durchwebsocket
Implementierung des Schnittstellencodes zur Erzielung einer nahtlosen Verbindungwebsocket
Zitate.
SeamlessConnWS-Vorlagenadresse
Es ist ganz einfach! BündelnSeamlessConnWSNachdem Sie die Vorlage in Ihre eigene Strategiebibliothek kopiert haben, müssen Sie sie nur noch in der „Icebreaker“-Strategie referenzieren, wie in der Abbildung gezeigt:
Prüfen, speichern, fertig.
Erstellen Sie einen Echtzeitroboter für die „Icebreaker“-Strategie und wählen Sie Binance als Börse .
OffenSeamlessConnWSKontrollieren Sie die Parameter auf der Vorlage.
Führen Sie es aus:
Um die Anzeige der gepushten Daten zu vereinfachen, habe ich in Zeile 157 einen Druckprotokollcode hinzugefügt, der die von der Börse gepushten Daten ausgibt.
Das Roboterprotokoll zeigt:
Auf diese Weise muss keine einzige Zeile Strategiecode geändert werden und es wird eine nahtlose Integration der WebSocket-Marktschnittstelle und der Strategie erreicht.
Dieses Beispiel dient nur zurexchange.GetTicker
Die Strategie der Marktschnittstellenfunktion wird erläutert. Andere Marktschnittstellen wieexchange.GetDepth
、exchange.GetTrades
、exchange.GetRecords
Es ist die gleiche Routine! Für die BeispielvorlageSeamlessConnWS, welches noch weiter ausgebaut werden kann.
Für bestimmte Links in Vorlagenwebsocket
Die Implementierung verwendetDial
Funktion (siehe API-Dokumentation Wählfunktion), welche je nach Bedarf angepasst werden kann. Sie können beispielsweiseread()
Funktion angegebene Parameter-2
, das heißt nur zurückgebenwebsocket
Die Verbindung empfängt die neuesten Daten in ihrem Puffer.
Vielen Dank fürs Lesen