Erreurs, bugs, questions - page 1492

 
Yuri Evseenkov:
Il serait bon de refléter cela dans la documentation.
Oui. Nous le ferons.
 
zaskok3:
Dans MQL4++, je ne peux pas me passer de l'extern lorsque j'ai besoin de modifier les paramètres d'entrée de manière programmatique. Par exemple, lors de la conversion d'un indicateur standard en un indicateur interactif, je dois remplacer input par extern. Le compilateur traite les variables d'entrée comme constantes et se plaint des tentatives de modification. Avec extern, il n'y aura pas de tels problèmes.

Utiliser des "doubleurs" de paramètres d'entrée

Nous avons un exemple dans MQL5\Indicators\Examples\ADX.mq5.

//--- input parameters
input int InpPeriodADX=14; // Period
//---- buffers
double    ExtADXBuffer[];
double    ExtPDIBuffer[];
double    ExtNDIBuffer[];
double    ExtPDBuffer[];
double    ExtNDBuffer[];
double    ExtTmpBuffer[];
//--- global variables
int       ExtADXPeriod;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- check for input parameters
   if(InpPeriodADX>=100 || InpPeriodADX<=0)
     {
      ExtADXPeriod=14;
      printf("Incorrect value for input variable Period_ADX=%d. Indicator will use value=%d for calculations.",InpPeriodADX,ExtADXPeriod);
     }
   else ExtADXPeriod=InpPeriodADX;
 
Camarades, quelqu'un obtient-il régulièrement "Internal compiler error" lors de la compilation ? Sans raison apparente, dans le cas d'une recompilation - hangs, dans le cas de la fermeture de l'éditeur, l'ouvrir à nouveau (avec les mêmes onglets, avec le même code) - la compilation est généralement normale. Rien ne change dans le code ! Mais parfois, cette erreur se produit plusieurs fois de suite et le premier redémarrage de l'éditeur n'y fait rien. Jusqu'à présent, à la suite du rechargement, tout a réussi à compiler. Mais j'ai peur que tôt ou tard, ça ne fonctionne plus. J'aimerais trouver quelqu'un d'autre qui a rencontré des bugs similaires, afin qu'ensemble nous puissions fournir à servicedesk des données sur les conditions de leur apparition.
 
Slawa:

Utiliser des "doubleurs" pour les paramètres d'entrée

Nous avons un exemple dans MQL5\Indicators\Examples\ADX.mq5

Maintenant, pour convertir un indicateur en variante interactive, il suffit d'ajouter une seule ligne au code source. Si vous faites les doubleurs, en plus de la chaîne supplémentaire pour la création du doubleur, vous devez faire des substitutions pour l'ensemble du texte. Pourquoi ce tracas quand vous pouvez simplement changer une ligne.

Qu'est-ce qui vous empêche de supprimer la prise en compte des constantes des variables d'entrée au moment de la compilation ?

 
zaskok3:

Pour convertir l'indicateur en une variante interactive, il suffit d'ajouter une ligne à la source. Si vous faites un double, alors en plus de la ligne supplémentaire pour créer un double, vous devrez remplacer tout le texte. Pourquoi ce tracas, alors que vous pouvez facilement changer une ligne.

Qu'est-ce qui vous empêche de supprimer la prise en compte des constantes des variables d'entrée au moment de la compilation ?

Edition de texte. "Ctrl" + "H" - recherche et remplacement. Rien de compliqué. Ne soyez pas paresseux.
 
zaskok3:

Qu'est-ce qui vous empêche de supprimer la prise en compte des constantes des variables d'entrée au moment de la compilation ?

Stockage global des indicateurs dans la base d'historique MT5. Pour eux, les paramètres d'entrée sont essentiels. Lorsque vous modifiez les paramètres d'entrée, l'indicateur avec les anciens paramètres est détruit, et le même indicateur avec les paramètres modifiés est créé à nouveau.

C'est-à-dire que la restriction est purement architecturale

Dans la quatrième version, nous avons pu supprimer la constance des instances, mais il y a alors une incompatibilité entre le nouveau MQL4 et le MQL5. Par conséquent, nous ne le ferons pas. Veuillez continuer à utiliser l'externalisation

 

Slawa:

C'est-à-dire que la limitation est purement architecturale.

Il est dommage que l'architecture soit si rigide qu'il n'y ait aucune possibilité de flexibilité, même simple. Il s'avère que l'interactivité dans MQL5 nécessitera une béquille. La question est de savoir où est l'avantage alors, si la langue limite les possibilités...
 
pako:
Fenêtre pour se détacher du terminal
comment ?
 
Joo Zepper:
comment ?
C'était sur un forum quelque part, une DLL
 
zaskok3:
Dans MQL4++, je ne peux pas me passer de l'extern lorsque j'ai besoin de modifier les paramètres d'entrée de manière programmatique. Par exemple, lors de la conversion d'un indicateur standard en un indicateur interactif, je dois remplacer input par extern. Le compilateur traite les variables d'entrée comme constantes et se plaint des tentatives de modification. Avec l'extern, il n'y a pas de tels problèmes.
Ils le font pour moi. J'ai également lu dans le manuel il y a longtemps que l'extern peut être modifié par programme. D'un pépin à l'autre, ça change de temps en temps et puis non, il semble qu'ils soient réinitialisés à l'arrivée. J'ai abandonné et fait des copies de extern vers global. Je ne lis et ne copie qu'une seule fois au début du programme et n'utilise global qu'à l'intérieur du programme. Immédiatement, tout a fonctionné comme sur des roulettes.