Avec l'amélioration continue des stratégies de trading quantitatives, les utilisateurs ont des exigences de plus en plus élevées pour la poussée en temps réel des changements de position. Par exemple: les journaux Web en ligne, les applications mobiles et WeChat, etc. ont tous besoin des changements de positions de compte en temps réel, ce qui nécessite la poussée automatique des changements envoyés aux navigateurs et aux téléphones mobiles, etc. Pour cette raison, cet article vise FMZ Quant (FMZ.COM) Stratégie Mylanguage pour réaliser le transfert en temps réel des postes vers les applications mobiles et WeChat.
Pour voir le code source complet de l'article, veuillez cliquer sur le lien:https://www.fmz.com/strategy/305785, et je vous suggère d'écrire le code pour vous entraîner, car apprendre à lire le code ne suffit pas.
Pour faciliter la démonstration, cet article fera référence à la stratégie de trading précédente de Williams %R. L'adresse de lien de la stratégie est:https://www.fmz.com/strategy/283024. La logique de la stratégie est composée de la valeur de Williams et de la moyenne mobile. Pour la stratégie complète et la configuration de backtest, vous pouvez cliquer sur ce lien pour l'obtenir. Le code de cette stratégie est indiqué comme suit:
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;
Le Mylanguage sur FMZ Quant (FMZ.COMMylanguage a une syntaxe simple, qui peut gérer la logique de certaines stratégies simples; lorsqu'il s'agit de certaines stratégies compliquées, le langage présentera quelques problèmes. Par conséquent, FMZ Quant a promu la fonction d'amélioration du langage basée sur Mylanguage.
%%
// 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
Comme indiqué dans le code ci-dessus, la fonction d'amélioration du langage permet de mélanger la programmation de Mylanguage et JavaScript.https://www.fmz.com/doc/2569#语�%A8%80%E5%A2%9E%E5%BC%BA
Y compris:
1.Objet de portéeLa fonction anonyme référencée par cette propriété peut être appelée dans la partie de code de Mylanguage.
2.scope.get_locals (nom)La fonction peut obtenir les variables de Mylanguage, afin de réaliser l'interaction entre Mylanguage et JavaScript.
Dans une stratégie Mylanguage, la fonction BKVOL peut obtenir le lot de signal d'achat, c'est-à-dire la position longue actuelle. La fonction SKVOL peut obtenir le lot de signal de vente, c'est-à-dire la position courte actuelle. Ensuite, nous pouvons calculer l'état de changement de position actuel en soustrayant SKVOL de BKVOL. Comme indiqué dans le code ci-dessous:
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, '@');
}
%%
Dans le code ci-dessus, nous avons mis la stratégie de trading de William W%R
Ensuite, nous exécutons un bot pour vérifier cette fonction; créer un bot, sélectionner le spot OKEX, et définir la paire de devises sur LTC_USDT (les contrats à terme sur matières premières et les contrats à terme sur crypto-monnaie peuvent également utiliser cette fonction, et l'opération est la même).
1. signal déclenché, poussez vers les journaux web 2. signal déclenché, appuyez sur l'application de téléphone portable Le signal est déclenché, appuyez sur WeChat.
Ci-dessus, nous utilisons une stratégie de trading simple de Mylanguage William W%R et le module push de message développé par le module d'amélioration de la langue dans Mylanguage, afin de réaliser la stratégie pour pousser les changements de position vers les applications mobiles et WeChat en temps réel.