Erreurs, bugs, questions - page 676

 

Costy_,

essayer de réinitialiser après une initialisation ratée et se retrouver dans une boucle infinie ?

Dans Oninite, j'initialise les variables (j'attribue des valeurs aux variables) relatives au niveau global du programme. Le fait de pouvoir utiliser un code de retour non nul me permet d'imprimer la cause de l'échec et d'arrêter le programme d'une manière décente (c'est-à-dire l'arrêter via OnDeinit). C'est tout à fait satisfaisant.

 

Non perpétuel, jusqu'à l'achèvement réussi de l'initio. poiticovo (comme indicateur) avertissement dans l'aide.

Vérifiez-vous les variables glob. après l'initialisation pour voir si elles sont initialisées correctement ?

Voulez-vous essayer de les initialiser plusieurs fois si l'initialisation échoue?

 

Merci à ceux qui ont répondu. Ce code s'est avéré être une coupe de l'EA multidevise - il a été constaté que le testeur ne veut pas le manger.

Nouveaux détails : la baisse a lieu uniquement les 7 et 8 mars 2011, uniquement sur Alpha forex.

 

Costy_

 Не вечный, до удачного завершения иниц. потиково (т.к. индикатор) предупредив в справке.

Apparemment, je ne comprends pas votre intention, à savoir que je ne comprends pas ce qu'est "initialisation dans Oninit() po-tikovo", et ce qu'est" initialisationréussie dans Oninit() po-tikovo".

Vérifiez-vous les variables globales après l'initialisation pour vous assurer qu'elles sont initialisées correctement ?

Un autre concept qui est nouveau pour moi : "vérifier les variables globales d'un programme après l'initialisation pour la cohérence avec l'initialisation".

Mais je peux répondre à la question. La vérification de la réussite de l'affectation de valeurs aux variables globales d'un programme (par exemple, les handles) se fait dans la fonction Oninit(). En cas d'échec, j'y exécute la boucle finale (dans Oninit) si nécessaire. Dans le cas d'un échec final lors de l'affectation des valeurs à la variable dans Oninit(), j'envoie un message à l'imprimante. Ensuite, soit je trouve mon erreur dans le code, soit je la signale sur le forum.

Je ne vérifie pas le type "correspondance d'initialisation" après la terminaison de la fonction Oninit(), car cela n'a aucun sens lorsque la fonction Oninit() se termine avec succès.

Qu'en est-il de votre exemple : une variable locale bool err est déclarée à cet endroit. Prévoyez-vous d'initialiser la variable locale de la fonction Oninit() d'une manière ou d'une autre ?

Voulez-vous essayer de les initialiser quelques fois de plus s'ils échouent?

Je le fais tout le temps dans la fonction Oninit(), jusqu'à ce qu'elle se termine.

Permettez-moi d'ajouter. Par "initialisation" dans ce fil, j'entends l'attribution de valeurs aux variables globales dans la fonction Oninit (c'est-à-dire en utilisant l'argot). Je l'ajoute car le terminal client lance son propre processus d'initialisation des variables globales avant d'envoyer l'événement Init.

 

ilunga

En effet, de meilleures conditions de code et de test sont au programme.

 

Dans la fonctiontrali_vali_for_indicator() synchronisation de plusieursMqlRates EURUSD[],AUDUSD[],GBPUSD[],NZDUSD[],USDCAD[],USDCHF[],USDJPY[];

iln'y a aucun moyen de le faire du premier coup, en théorie une fois synchronisé il y a des structures exemplaires avec xxxxxx[0].time == yyyyy[0].time== ..... zzzzzzzz [0] plus de synchronisation par le temps > xxxxxxxx [0].time.

J'ai créé ma fonction init(), mais il s'agit deOnInit() !

SiOnInit() échoue alors aucun démarrage ne se produira (s'il ne démarre pas à partir du démarreur >> tourner le vilebrequin à la main), alors l'utilisateur doit soit

  • liste des indicateurs >> redémarrer l'ind.
  • enlever ind. >> connecter ind.
  • Appel à l'assistance >>
  • autre

Sur le ticko, c'est >> " on unsuccessful completion of f.".OnInit()génère un événementDeinit avec le code de causeREASON_INITFAILED"+ avec une réinitialisation ultérieure au prochain tick jusqu'à ce que la réinitialisation réussisse. +

(Pourquoi faire interrupt - deinit si l'indicateur montrera des hérissons de toute façon).

Il s'agit plutôt d'une question pour les développeurs...

 
abolk:
Qu'en est-il du problème de l'impossibilité d'utiliser le bouton "Répondre" sur le forum ? Vont-ils le réparer ? Une sorte de silence du support. Au moins une réassurance comme "faire/non faire".
Corrigé, merci à tous ceux qui ont fait attention.
 

costy_:

Je vois de quoi il s'agit, mais j'évite moi-même le problème de la synchronisation, donc je ne peux rien vous conseiller. Mais le problème lui-même a été discuté sur le forum à de nombreuses reprises. Faites une recherche par mot-clé.

 
Yedelkin:

Je vois de quoi il s'agit, mais j'évite moi-même le problème de la synchronisation, donc je ne peux rien vous conseiller. Mais le problème lui-même a été discuté sur le forum à de nombreuses reprises. Recherchez le mot-clé.

Merci, je vais regarder à nouveau.

 

Bonjour, pourriez-vous me conseiller ?

J'essaie d'ajouter un indicateur ADX pour le module de négociation. J'essaie de faire un signal de deux moyennes mobiles avec confirmation de l'ADX. J'ai copié ce code depuis un autre module, dans la version originale tout fonctionne naturellement, je l'ai téléchargé depuis ce site et le code lui-même ne devrait pas donner d'erreurs.

//+------------------------------------------------------------------+
//| Create ADX indicator.                                            |
//| INPUT:  indicators -pointer of indicator collection.             |
//| OUTPUT: true-if successful, false otherwise.                     |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
bool CSignalMY_MA_ADX::InitADX(CIndicators* indicators)
  {
//--- create ADX indicator
   if(m_ADX==NULL)
      if((m_ADX=new CiADX)==NULL)
        {
         printf(__FUNCTION__+": error creating object of the ADX");
         return(false);
        }
//--- add ADX indicator to collection
   if(!indicators.Add(m_ADX))
     {
      printf(__FUNCTION__+": error adding object of the ADX");
      delete m_ADX;
      return(false);
     }
//--- initialize ADX indicator
   if(!m_ADX.Create(m_symbol.Name(),m_period,m_period_ADX))
     {
      printf(__FUNCTION__+": error initializing object of the ADX");
      return(false);
     }
//--- ok
   return(true);
  }

Mais j'ai dû faire quelque chose de mal et obtenir des erreurs comme celles-ci :

'==' - utilisation d'une opération illégale SignalADX-MA.mqh 183 12

CiADX' - incompatibilité de type SignalADX-MA.mqh 184 21

'=' - utilisation d'une opération illégale SignalADX-MA.mqh 184 16

m_ADX' - conversion de paramètre non autorisée SignalADX-MA.mqh 190 23

m_ADX' - pointeur d'objet attendu SignalADX-MA.mqh 193 14

Veuillez m'aider, je vous en serai très reconnaissant. Je peux joindre le fichier ici si vous en avez besoin, ne vous inquiétez pas, c'est un peu le bazar, j'apprends juste et tout le processus a consisté à couper et coller quelques modules de trading différents pour l'EA.