Questions sur l'assistant MQL5 et la bibliothèque standard de classes de trading - page 6

 
uncleVic:
Maître et classes pour lui déplacé jusqu'à présent dans le "mode de maintenance". Pour la création des classes multivariantes les plus simples sont déjà adaptés (pas prêt maintenant, mais plus tard je vais mettre ici un exemple).

J'ai créé une classe multi-devises basée sur celle générée par l'assistant. Mais je devais corriger la classe des experts.

Au tout début, dans la méthode INIT(), il y a une vérification du symbole de travail et donc pas de multidevise. Le chèque a été retiré et tout s'est bien passé. Regardez l'époque - l'idée au moins que ?

if(symbol!=Symbol() || period!=Period()) 

на

 if(period!=Period())

Dossiers :
Master01_ML.mq5  14 kb
 

Bonjour Modérateur !

J'ai une telle question :

MQL5 Wizard dispose de 20 modules de signaux qui effectuent des analyses de divergence, de surachat, de survente, etc. Pourriez-vous nous dire s'il est possible d'emprunter un tel module de signaux à l'assistant MQL5 pour en effectuer l'analyse, mais à partir d'un indicateur personnalisé de votre propre conception et ce qu'il faut faire pour cela ? Faudra-t-il beaucoup retravailler (redesign) ou suffit-il de changer quelque chose dans le module (sa copie) par rapport à la livraison standard ?

Merci d'avance !

Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

ForexMoneyMaker:

Savez-vous s'il est possible d'emprunter un tel module de signaux à l'assistant MQL5 pour en effectuer l'analyse, mais à partir d'un indicateur personnalisé de votre propre conception, et ce qu'il faut faire pour cela ? Faudra-t-il beaucoup retravailler (modifier), ou suffira-t-il de changer quelque chose dans le module (sa copie) par rapport à la livraison standard ?

Bonne question ! Et voici pourquoi : il est vraiment possible de créer un nouveau module avec des modifications minimales des modules standard, simplement en insérant un autre indicateur au lieu d'un seul. Je ne sais pas quand nous serons en mesure d'écrire nous-mêmes un article sur ce sujet, alors je vous le propose :

Qui a connaissances et le désir d'écrire un article "Comment créer votre propre sur la base du module standard de signaux" - écrivez-moi dans le message personnel.

 
Erm955:

J'ai créé une classe multi-devises basée sur celle générée par l'assistant. Mais je devais corriger la classe des experts.

Au tout début, dans la méthode INIT(), il y a une vérification du symbole de travail et donc pas de multidevise. Le chèque a été retiré et tout s'est bien passé. Regardez l'époque - l'idée au moins que ?

if(symbol!=Symbol() || period!=Period()) 

на

 if(period!=Period())

L'idée est la même, mais :

1. Il n'est pas bon de changer la classe CExpert. Il est bon d'en hériter en surchargeant la méthode Init(...).

2) Il n'est pas nécessaire de modifier la classe CExpert. Vous devez l'écrire :

...
   if(!ExtExpert_EG.Init(Symbol(),PERIOD_M10,Expert_EveryTick,Expert_MagicNumber))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert_EG.Deinit();
      return(-1);
     }
   ExtExpert_EG.Symbol("NZDUSD");
...

Pour l'instant...

 
ForexMoneyMaker:

Bonjour Modérateur !

J'ai une telle question :

MQL5 Wizard dispose de 20 modules de signaux qui effectuent des analyses de divergence, de surachat, de survente, etc. Pourriez-vous nous dire s'il est possible d'emprunter un tel module de signaux à l'assistant MQL5 pour en effectuer l'analyse, mais à partir d'un indicateur personnalisé de votre propre conception et ce qu'il faut faire pour cela ? Faudra-t-il beaucoup retravailler (redesign) ou suffit-il de changer quelque chose dans le module (sa copie) par rapport à la livraison standard ?

Merci d'avance !


Jetez un coup d'œil au forum anglais ici
 
uncleVic:

L'idée est la même, mais :

1. il n'est pas bon de modifier la classe CExpert. Il est bon d'en hériter en surchargeant la méthode Init(...).

2. vous n'avez pas besoin de modifier la classe CExpert. Vous devez l'écrire :

Jusqu'à présent...

Vous devez redéfinir la méthode Init() et en exclure la vérification du symbole de travail. Mais la p. 2 ne convient pas, car la méthode Init(), entre autres, contient une vérification du nombre de chiffres Digits et si le symbole de travail contient 5 chiffres, et celui qui est testé contient 3 chiffres, il y aura une erreur avec les arrêts/profits. J'ai hérité et passé outre. Tout fonctionne maintenant.

Bien sûr, je ne suis pas un grand spécialiste de la POO, mais il s'avère que pour configurer le programme de manière flexible pour un nombre différent de symboles testés, il faut carrément remplir, par exemple, 21 morceaux de code (tous les symboles), puis par méthode de choix des paramètres d'entrée passer telle ou telle section de code. J'ai fait la même chose sans OOP, mais tous les handles et les valeurs des indicateurs dans l'init ont été écrits dans des tableaux dynamiques, et ensuite OnTick utilisait déjà ces tableaux. Donc, je n'ai pas encore vu d'avantages de la POO ?

P S. Je ne l'ai pas écrit correctement. Il y a peut-être un moyen de connecter dynamiquement les données (gestionnaires et valeurs des indicateurs) au cours du réglage du nombre de caractères travaillant simultanément. Le problème est que tout cela devrait être branché dans Init et utilisé dans OnTic/OnTimer.

Dossiers :
Master02_ML.mq5  20 kb
 
Erm955:

Il est nécessaire de redéfinir la méthode Init(), en excluant la vérification du symbole de travail. Et p.2 ne convient pas, parce que la méthode Init(), entre autres choses, vérifie le nombre de chiffres Digits, et si le symbole de travail a 5 chiffres, et celui qui est testé a 3 chiffres, il y aura une erreur avec les arrêts/profits. J'ai hérité et passé outre. Tout fonctionne maintenant.

Bien sûr, je ne suis pas un grand spécialiste de la POO, mais il s'avère que pour configurer de manière flexible le programme pour un nombre différent de symboles testés, il faut carrément remplir, par exemple, 21 morceaux de code (tous les symboles), puis par méthode de choix des paramètres d'entrée passer telle ou telle section de code. J'ai fait la même chose sans OOP, mais tous les handles et les valeurs des indicateurs dans l'init ont été écrits dans des tableaux dynamiques, et ensuite OnTick utilisait déjà ces tableaux. Donc, je n'ai pas encore vu d'avantages de la POO ?

P S. Je ne l'ai pas écrit correctement. Il y a peut-être un moyen de connecter dynamiquement les données (gestionnaires et valeurs des indicateurs) pendant le réglage du nombre de caractères travaillant simultanément. Le problème est que tout cela devrait être branché dans Init et utilisé dans OnTic/OnTimer.

C'est comme ça. Au fait, merci pour le conseil sur le point 2. Je vais ajouter le contrôle et modifier le nombre de caractères.
 
uncleVic:
C'est ainsi. Au fait, merci pour le conseil sur le point 2. Je vais ajouter un contrôle et un changement de chiffres.

Merde ! Je viens de tout installer et quand j'ai mis à jour la version 485, l'erreur est réapparue :

2011.08.08 17:13:04 Core 1 tester s'est arrêté car erreur critique OnInit
2011.08.08 17:13:04 Core 1 2010.01.01 00:00:00 OnInit : erreur d'initialisation des indicateurs
2011.08.08 17:13:04 Core 1 2010.01.01 00:00:00 CExpert::InitIndicators : erreur d'initialisation des indicateurs de l'objet argent
2011.08.08 17:13:04 Core 1 2010.01.01 00:00:00 CExpertBase::InitIndicators : les paramètres de réglage ne sont pas vérifiés
2011.08.08 17:13:04 Core 1 2010.01.01 00:00:00 CExpertBase::SetOtherSeries : le changement de série temporelle est interdit
2011.08.08 17:13:04 Core 1 2010.01.01 00:00:00 CExpertBase::SetPriceSeries : la modification des séries temporelles est interdite
2011.08.08 17:13:04 Core 1 EURUSD,H4 : l'historique commence à partir du 2009.01.02 04:00
2011.08.08 17:13:04 Core 1 EURUSD,H4 : cache de l'historique réservé pour une estimation de 4692 barres

Dossiers :
Master02_ML.mq5  20 kb
 
Erm955:

Merde ! Je viens de tout installer et quand j'ai mis à jour vers 485, l'erreur est réapparue :

Les agents ont-ils été mis à jour ? L'EA a-t-il été recompilé dans la nouvelle version ?
 
Rosh:
Les agents ont-ils été mis à jour ? L'EA a-t-il été recompilé dans la nouvelle version ?

C'est justement ça, j'ai recompilé !