Ouverture, fermeture dans le conseiller expert généré par l'assistant MQL5 - page 2

 
PeretsCHILI:

J'ai décidé de la formulation du problème :

ouverture longue : la MA rapide croise la MA lente de bas en haut, plus un filtre temporel.

fermer long : МА rapide croise la MA lente du haut vers le bas.

Open short : МА rapide croise la MA lente du dessus et plus le filtre de temps.

short rapproché : le МА rapide croise le MA lent de bas en haut.

Dans l'exemple mentionné précédemment, CheckOpenLong, CheckCloseLong, CheckOpenShort, CheckCloseShort ont été utilisés pour cela respectivement.

Si vous créez deux modules, l'un avec des signaux d'ouverture et l'autre de fermeture, je comprends que le premier utilise LongCondition et ShortCondition, comme dans la bibliothèque standard des modules. Qu'utiliser dans le deuxième module pour fermer ?


Et surtout, où ? Que signifie "... croise..." ? C'est là toute la beauté de la chose :)

 

Mec, je suis juste plus confus)) L'article"Créer un robot de trading en 6 étapes !" vient de présenter le premier module avec des signaux d'ouverture par croisement de deux MA.

https://www.mql5.com/ru/articles/367

Que voulez-vous dire par "crossover" ? Lorsque la différence entre la FastMA-SlowMA de la première barre est supérieure à zéro et celle de la deuxième barre est inférieure à zéro, la МА rapide croise la MA lente de bas en haut. On parle de descente lorsque la différence entre la première barre est inférieure à zéro et la deuxième barre est supérieure à zéro.

Vous avez dit que le problème peut être résolu en créant deux modules, avec des signaux d'ouverture et de fermeture. Puis-je utiliser le module de l'article comme base pour créer un module avec des signaux de fermeture ?

Создай торгового робота за 6 шагов!
Создай торгового робота за 6 шагов!
  • 2012.06.01
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы не знаете, как устроены торговые классы, и пугаетесь слов "Объектно-ориентированное программирование"? На самом деле вовсе не обязательно всё это знать, чтобы написать свой собственный модуль торговых сигналов - достаточно следовать простым правилам. Всё остальное сделает Мастер MQL5, и вы получите готовый торговый робот!
 
PeretsCHILI:

...

Que signifie "croix" ? Une MA rapide croise une MA lente de bas en haut lorsque la différence entre la MA rapide et la MA lente sur la première barre est supérieure à zéro et inférieure à zéro sur la deuxième barre. On parle de descente lorsque la première barre est inférieure à zéro et que la deuxième barre est supérieure à zéro.

...


C'est bien. Lorsque la tâche est précisée, elle est très bonne.


PeretsCHILI:

...

Vous avez dit que le problème peut être résolu en créant deux modules avec des signaux d'ouverture et de fermeture. Le module avec les signaux de fermeture peut-il être utilisé comme base pour le module de l'article ci-dessus ?

Je ne l'ai pas dit correctement. Le module de signaux de trading produit des signaux "Il est temps d'OUVRIR L'ACHAT" et "Il est temps d'OUVRIR LA VENTE". C'est-à-dire qu'ils donnent un signal pour OPEN. Et c'est CExpert qui décide du reste : fermer et inverser une position existante ou ouvrir une position.



Prenez le module de l'articleCréer un robot de trading en 6 étapes !- Quel est votre problème ?

 

Je veux donc écrire un module avec des signaux d'ouverture par croisement de deux MA avec un filtre temporel, et des fermetures survenues dans les cas suivants : arrivée du signal opposé ; arrivée de la SL ; arrivée du TP. Vous pouvez écrire un module (appelons-le Cross2MA) comme dans l'article et générer un Expert Advisor avec les modules Cross2MA et SignalITF, mais cela ne fonctionnera pas, car le filtre SignalITF sera également vérifié à la fermeture.

Par exemple : Nous avons 2MA et SignalITF a un trade uniquement le lundi. Un signal d'achat est reçu le lundi ; nous ouvrons une position d'achat et à l'expiration du temps le mardi, lorsque ni le Sl ni le TP ne sont atteints, un croisement inverse des 2MA se produit et la position d'achat devrait être fermée mais elle ne l'est pas car c'est déjà un autre jour de semaine.

Comment cela devrait être : mêmes conditions, 2MA, trade le lundi : lundi, il y a un signal d'achat, nous ouvrons une position d'achat, le mardi nous avons un signal de vente, mais parce que c'est mardi nous n'ouvrons pas une position de vente, nous fermons seulement une position d'achat.

Il semble qu'il y ait deux commandes dans LongCondition : l'ouverture de l'achat et la fermeture de la vente. Nous devons les séparer d'une manière ou d'une autre)

 

"Mouches séparées, escalopes séparées".


PeretsCHILI:

Donc, je veux écrire un module avec des signaux à ouvrir en croisant deux MAs avec un filtre temporel, et à fermer dans les cas suivants : arrivée du signal opposé ; arrivée de la SL ; arrivée du TP. ...

Lemodule de signaux de trading ne peut afficher que deux types de signaux : "Il est temps d'ouvrir l'ACHAT" et "Il est temps d'ouvrir la VENTE".

Nous ne contrôlerons pas le stop loss et le take profit - car si une position stop loss ou take profit est fermée, cela ne signifie qu'une chose : la position est fermée, et il est temps de voir ce que le module de signaux de trading génère (en d'autres termes, lorsque le nombre de positions est égal à zéro, nous commençons un cercle : l'attente d'un signal).

En outre, il s'agit d'une interprétation erronée du fonctionnement des modules, puisqu'il n'y a pas de "signal opposé" - cela peut être comme suit :

  1. nous avons une position BUY ouverte et nous recevons un signal"PAY TO open SELL" (payer pour ouvrir la vente)
  2. ou vous avez une position de VENTE ouverte et le signal"PAY to BUY" apparaît.
Dans les deux cas, la position actuelle sera fermée et une nouvelle position sera ouverte.


 
Andy:
LongCondition peut simplement ouvrir un achat et le maintenir indépendamment de toute condition, et le faire fermer au stop profit ou manuellement ?

La classe LongCondition CExpertSignal ne peut en principe pas "retenir" quoi que ce soit. CExpertSignal ne donne que deux signaux :"Time to OPEN BUY" et "Time to OPEN SELL".


Voulez-vous que votre conseiller expert construit par l'assistant ne se ferme jamais ? Ensuite, changez le paramètre d'entrée de l'Expert Advisor "// Valeur seuil du signal à la clôture [0...100]" - définissez la barre des échelles à la clôture à "100".

 
Andy:
Qu'est-ce qui les ferme alors ?

Objet de la classe CExpert - il interroge tous les modules de signaux, évalue leur poids et additionne le score résultant : poids du signal.




 

Je comprends l'interprétation des modules. Si je danse, c'est parce que je vais optimiser mon conseiller expert comme suit : 1. l'optimisation de deux MA (période, décalage, lissage), des arrêts et des reprises par zéro ; 2. 3. optimisation du suivi.

Le problème est le suivant : si je génère un Expert Advisor avec Cross2MA et le filtre SignalITF, il fonctionnera comme suit (mêmes conditions, zéro stop et takeaways)

Lundi, la FastMA croise la SlowMA de bas en haut, ouvre une position d'achat, la position est maintenue jusqu'au lundi suivant, le lundi suivant il pourrait y avoir 3 variantes :

1. le FastMA croise le SlowMA de haut en bas - la position actuelle est fermée, la position de vente est ouverte.

2. Aucun croisement n'est observé - la position est conservée.

3. FastMA croise SlowMA de bas en haut - la position est conservée.

Et ainsi de suite, jusqu'au lundi suivant. Beaucoup de choses peuvent se passer entre les lundis, 2 MAs peuvent être croisées plusieurs fois et le prix va baisser.

Pouvons-nous mettre en œuvre ce qui suit (mêmes conditions) : le mardi, la FastMA croise la SlowMA de haut en bas, et la position de vente n'est pas ouverte parce que c'est mardi et non lundi, mais la position actuelle est fermée.

 

Je pense avoir trouvé le moyen de le faire en appliquant un seuil.

Que Cross2MA renvoie 80 et SignalITF renvoie 40.

Seuil d'ouverture on met 50, seuil de fermeture on met 30.

Si les deux modules fournissent un signal, la moyenne arithmétique donnera 60 qui est supérieur au seuil de 50, alors la position est ouverte.

Si seul Cross2MA se déclenche, la moyenne arithmétique est de 40, supérieure à 30, la position actuelle est fermée ; si elle est inférieure à 50, une nouvelle position n'est pas ouverte.

N'est-ce pas ?

Sauf que SignalITF renvoie une valeur vide.

 
PeretsCHILI:

Je pense avoir trouvé le moyen de le faire en appliquant un seuil.

Que Cross2MA renvoie 80 et SignalITF renvoie 40.

Seuil d'ouverture on met 50, seuil de fermeture on met 30.

Si les deux modules fournissent un signal, la moyenne arithmétique donnera 60 qui est supérieur au seuil de 50, alors la position est ouverte.

Si seul Cross2MA se déclenche, la moyenne arithmétique est de 40, supérieure à 30, la position actuelle est fermée ; si elle est inférieure à 50, une nouvelle position n'est pas ouverte.

N'est-ce pas ?

Sauf que SignalITF renvoie une valeur vide.


Vous allez dans la bonne direction :) Tous les contrôles des seuils d'ouverture et de fermeture se font par le biais des paramètres d'entrée du conseiller expert généré par l'assistant MQL5.

Raison: