Comment écrire une stratégie de trading sur la plateforme FMZ Quant
Après avoir étudié les sections précédentes, nous sommes enfin prêts à écrire une stratégie de trading quantitative. Ce sera l'étape la plus importante dans votre entrée dans le trading quantitatif à partir du trading manuel. En fait, ce n'est pas si mystérieux. Écrire une stratégie n'est rien de plus que de réaliser vos idées avec du code. Cette section mettra en œuvre une stratégie de trading quantitative à partir de zéro, après l'étude, tout le monde sera familier avec la façon d'écrire des stratégies sur le système FMZ Quant.
Tout d'abord, ouvrez le site officiel de la FMZ Quant, connectez-vous à votre compte. cliquez sur
Dans le chapitre précédent, j'ai introduit une stratégie de moyenne mobile. c'est-à-dire: si le prix est supérieur au prix moyen des 10 derniers jours, ouvrir une position longue. si le prix est inférieur au prix moyen des 10 derniers jours, le raccourcir. Cependant, bien que le prix puisse refléter directement l'état du marché, il y aura encore de nombreux faux signaux de percée; par conséquent, nous devons améliorer et améliorer cette stratégie.
Tout d'abord, choisissez une moyenne mobile de plus grande période pour juger de la direction de la tendance. Au moins la moitié des faux signaux de rupture ont été filtrés. La moyenne mobile de grand cycle est lente, mais elle sera plus stable. Ensuite, afin d'augmenter le taux de réussite de la position d'ouverture, nous ajoutons une autre condition. Cette moyenne mobile de grand cycle est au moins à la hausse; enfin, la relation positionnelle relative entre le prix, la moyenne mobile à court terme et la moyenne mobile à long terme est utilisée pour former une stratégie de trading complète.
Avec les idées de stratégie ci-dessus, nous pouvons essayer de construire cette logique de stratégie. La logique ici n'est pas de vous laisser calculer la loi du mouvement céleste, ce n'est pas si compliqué. Ce n'est rien de plus que d'exprimer les idées de stratégie précédentes en mots.
Position longue ouverte: si aucune position n'existe actuellement et que le prix de clôture est supérieur à la moyenne mobile à court terme, que le prix de clôture est supérieur à la moyenne mobile à long terme et que la moyenne mobile à court terme est supérieure à la moyenne mobile à long terme et que la moyenne mobile à long terme est en hausse.
Position courte ouverte: si aucune position n'existe actuellement et que le prix de clôture est inférieur à la moyenne mobile à court terme, que le prix de clôture est inférieur à la moyenne mobile à long terme et que la moyenne mobile à court terme est inférieure à la moyenne mobile à long terme et que la moyenne mobile à long terme est en baisse.
Fermer une position longue: si vous détenez actuellement une position longue et que le prix de clôture est inférieur à la moyenne mobile à long terme, ou que la moyenne mobile à court terme est inférieure à la moyenne mobile à long terme, ou que la moyenne mobile à long terme est en baisse.
Fermeture de position courte: si la position courte est maintenue en cours et que le prix de clôture est supérieur à la moyenne mobile à long terme, ou que la moyenne mobile à court terme est supérieure à la moyenne mobile à long terme, ou que la moyenne mobile à long terme est en hausse.
Ce qui précède est la logique de l'ensemble de la stratégie, si nous convertissons la version textuelle de cette stratégie en code, elle comprendra: l'acquisition de la cotation du marché, le calcul des indicateurs, la mise en ordre d'ouverture et de fermeture de position, ces trois étapes.
La première chose à faire est d'obtenir la cotation du marché. Dans cette stratégie, nous avons seulement besoin d'obtenir le prix de clôture. Dans le langage M, l'API pour obtenir le prix de clôture est: CLOSE, ce qui signifie que vous avez seulement besoin d'écrire CLOSE dans la zone de codage pour obtenir le dernier prix de clôture de la ligne K.
La prochaine étape est de calculer l'indicateur. Dans cette stratégie, nous utiliserons deux indicateurs, à savoir: moyenne mobile à court terme et moyenne mobile à long terme. Nous supposons que la moyenne mobile à court terme est la moyenne mobile à 10 périodes et la moyenne mobile à long terme est la moyenne mobile à 50 périodes. Comment utiliser le code pour représenter ces deux?
MA10:=MA(CLOSE,10); // Get the 10-cycle moving average of the latest K-line and save the result in variable MA10
MA50:=MA(CLOSE,50); // Get the 50-cycle moving average of the latest K-line and save the result in variable MA50
Dans le trading manuel, nous pouvons voir en un coup d'œil si la moyenne mobile de 50 périodes est en hausse ou en baisse, mais comment l'exprimer en code? Pensez bien, en jugeant si la moyenne mobile est en hausse ou non, est-ce que la moyenne mobile actuelle de la ligne K est plus grande que la moyenne mobile de la ligne K précédente? ou est-ce qu'elle est plus élevée que deux lignes K précédentes? Si la réponse est oui, alors nous pouvons dire que la moyenne mobile est en hausse. Nous pouvons également juger la baisse par la même méthode.
MA10:=MA(CLOSE,10); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10
MA50:=MA(CLOSE,50); //Get the 50-cycle moving average of the latest K line and save the result to variable MA10
MA10_1:=REF(MA10,1); //Get the 10-cycle moving average of the pervious K line and save the result to variable MA10_1
MA50_1:=REF(MA50,1); //Get the 50-cycle moving average of the pervious K line and save the result to variable MA50_1
MA10_2:=REF(MA10,2); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10_2
MA50_2:=REF(MA50,2); //Get the 50-cycle moving average of the latest K line and save the result to variable MA50_2
MA50_ISUP:=MA50>MA50_1 AND MA50_1>MA50_2; //Determine whether the current 50-line moving average of the K line is rising
MA50_ISDOWN:=MA50<MA50_1 AND MA50_1<MA50_2; //Determine whether the current 50-line moving average of the K line is falling
Notez que sur les lignes 8 et 9 du code ci-dessus, le mot
L'étape finale consiste à passer des ordres, vous n'avez qu'à appeler l'API d'ordre de FMZ Quant
MA10:=MA(CLOSE,10); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10
MA50:=MA(CLOSE,50); //Get the 50-cycle moving average of the latest K line and save the result to variable MA10
MA10_1:=REF(MA10,1); //Get the 10-cycle moving average of the pervious K line and save the result to variable MA10_1
MA50_1:=REF(MA50,1); //Get the 50-cycle moving average of the pervious K line and save the result to variable MA50_1
MA10_2:=REF(MA10,2); //Get the 10-cycle moving average of the latest K line and save the result to variable MA10_2
MA50_2:=REF(MA50,2); //Get the 50-cycle moving average of the latest K line and save the result to variable MA50_2
MA50_ISUP:=MA50>MA50_1 AND MA50_1>MA50_2; //Determine whether the current 50-line moving average of the K line is rising
MA50_ISDOWN:=MA50<MA50_1 AND MA50_1<MA50_2; //Determine whether the current 50-line moving average of the K line is falling
CLOSE>MA10 AND CLOSE>MA50 AND MA10>MA50 AND MA50_ISUP,BK; //open long position
CLOSE<MA10 AND CLOSE<MA50 AND MA10<MA50 AND MA50_ISUP,SK; //open short position
CLOSE<MA50 OR MA10<MA50,SP;//close long position
CLOSE>MA50 OR MA10>MA50,BP;//close short position
Notez que les lignes 13 et 14 ci-dessus, le mot
Veuillez noter que
Ce qui précède est l'ensemble du processus d'écriture d'une stratégie de trading sur la plate-forme FMZ Quant en utilisant le langage de programmation M. Il y a trois étapes au total: d'avoir une idée de stratégie, à la pensée de stratégie et à l'utilisation de texte pour décrire la logique, et enfin à la mise en œuvre d'une stratégie de trading complète avec du code. Bien qu'il s'agisse d'une stratégie simple, le processus de mise en œuvre spécifique est similaire à la stratégie complexe, sauf que la stratégie et la structure de données de la stratégie sont différentes. Par conséquent, tant que vous comprenez le processus de stratégie quantitative dans cette section, vous pouvez mener des recherches et des pratiques de stratégie quantitative sur la plate-forme FMZ Quant.
Essayez de mettre en œuvre les stratégies de cette section par vous-même.
En fonction de la stratégie de cette section, ajouter la fonction stop-loss et take-profit.
Dans le développement de stratégies de trading quantitatives, les langages de programmation sont comme des armes, un bon langage de programmation peut vous aider à obtenir deux fois le résultat avec la moitié de l'effort. Par exemple, il existe plus d'une douzaine des langages les plus couramment utilisés Python, C++, Java, C#, EasyLanguage et M dans le monde du trading quantitatif. Quelle arme devriez-vous choisir pour vous battre sur le champ de bataille?