Mit der kontinuierlichen Verbesserung der quantitativen Handelsstrategien haben die Benutzer immer höhere Anforderungen an den Echtzeit-Push von Positionsänderungen. Zum Beispiel: Web-Online-Logs, mobile Apps und WeChat usw. benötigen alle die Änderungen der Kontopositionen in Echtzeit, was automatisches Push der Änderungen erfordert, die an Browser und Mobiltelefone usw. gesendet werden. Aus diesem Grund zielt dieser Artikel auf FMZ Quant (FMZ.COM) Mylanguage-Strategie zur Realzeit-Verlagerung von Positionen auf mobile App und WeChat.
Um den vollständigen Quellcode im Artikel zu sehen, klicken Sie bitte auf den Link:https://www.fmz.com/strategy/305785, und ich schlage vor, dass Sie den Code schreiben, um zu üben, denn nur aus dem Lesen des Codes zu lernen, ist nicht genug.
Um es bequem zu demonstrieren, wird dieser Artikel auf die vorherige Williams %R Handelsstrategie verweisen.https://www.fmz.com/strategy/283024. Die Strategie Logik besteht aus dem Williams-Wert und dem gleitenden Durchschnitt. Für die komplette Strategie und die Backtest-Konfiguration können Sie diesen Link klicken, um ihn zu erhalten. Der Code dieser Strategie wird wie folgt angezeigt:
HC := HHV(HIGH, 14) - CLOSE;
HL := HHV(HIGH, 14) - LLV(LOW, 14);
WR := -100 * HC / HL;
MA20 : EMA2(C, 14);
C1 := WR < -60 && C > MA20;
C2 := WR > -15 && C < MA20;
C1, BPK;
C2, SPK;
Die Mylanguage auf FMZ Quant (FMZ.COMMylanguage hat eine einfache Syntax, die mit der Logik einiger einfacher Strategien umgehen kann; wenn es um einige komplizierte Strategien geht, wird die Sprache einige Probleme zeigen. Daher hat FMZ Quant die Sprachenverbesserungsfunktion auf Basis von Mylanguage gefördert. Wie das folgende Codebeispiel:
%%
// here we can call any API of FMZ Quant
scope.TEST = function(obj) {
return obj.val * 100;
}
%%
close price:C;
Zoom 100 times of close price:TEST(C);
Zoom 100 times of last close price:TEST(REF(C, 1)); // move the mouse to the backtested K-line, and the variable value will prompt
Wie im obigen Code gezeigt, ermöglicht die Sprachenverbesserungsfunktion die Mischung von Mylanguage und JavaScript.https://www.fmz.com/doc/2569#语�%A8%80%E5%A2%9E%E5%BC%BA
Dazu gehören:
1.Gegenstand des AnwendungsbereichsDie anonyme Funktion, auf die sich diese Eigenschaft bezieht, kann im Codeteil von Mylanguage aufgerufen werden.
2. scope.get_locals (Name)Die Funktion kann die Variablen von Mylanguage erhalten, um die Interaktion zwischen Mylanguage und JavaScript zu erkennen.
In einer Mylanguage-Strategie kann die Funktion BKVOL das Kaufsignal-Lot, also die aktuelle Long-Position, erhalten. Die Funktion SKVOL kann das Verkaufssignal-Lot, also die aktuelle Short-Position, erhalten. Dann können wir den Status der aktuellen Positionsänderung berechnen, indem wir SKVOL von BKVOL subtrahieren. Wie im folgenden Code gezeigt:
HC := HHV(HIGH, 14) - CLOSE;
HL := HHV(HIGH, 14) - LLV(LOW, 14);
WR := -100 * HC / HL;
MA20 : EMA2(C, 14);
C1 := WR < -60 && C > MA20;
C2 := WR > -15 && C < MA20;
C1, BPK;
C2, SPK;
%%
// adding the following code in any Mylanguage strategy can realize the push of position changes to mobile phone App and WeChat
if (typeof(scope._tmp) !== 'number') {
scope._tmp = 0;
}
var pos = scope.get_locals('BKVOL') - scope.get_locals('SKVOL');
if (pos != scope._tmp) {
scope._tmp = pos;
Log('Push position changes:', scope.symbol, pos, '@');
}
%%
In dem obigen Code haben wir William W%R
Als nächstes führen wir einen Bot aus, um diese Funktion zu überprüfen; erstellen Sie einen Bot, wählen Sie den OKEX-Spot aus und setzen Sie das Währungspaar auf LTC_USDT (Futures für Rohstoffe und Futures für Kryptowährungen können diese Funktion auch verwenden, und die Operation ist die gleiche).
1.Signal ausgelöst, zu Weblogs geschoben 2.Signal ausgelöst, drücken Sie auf Mobiltelefon App 3. Signal ausgelöst, drücken Sie auf WeChat Nachricht drücken
Wir verwenden eine einfache Mylanguage William W%R Handelsstrategie und das von dem Sprachverbesserungsmodul in Mylanguage entwickelte Nachrichten-Push-Modul, um die Strategie zu realisieren, um Positionsänderungen in mobilen Apps und WeChat in Echtzeit zu verschieben.