MetaTrader 4 Build 529 beta publié avec un nouveau compilateur - page 37

 
Renat:
C'est-à-dire que vous n'avez personnellement aucun problème avec l'opérabilité du logiciel et que vous posez des questions générales.

J'ai lu vos questions plusieurs fois et je ne les comprends pas. Nous discutons des détails ici.

Il n'y a aucun problème de compilation. Il y a des problèmes d'opérabilité, et si je comprends bien, ils sont liés au mélange de la logique MQL5 avec la logique MQL4. Cependant, les problèmes que nous abordons ici ne sont pas suffisants pour toutes les occasions. Tout ceci est un cas particulier. Les règles sont nécessaires. Si vous avez publié un guide préliminaire ou au moins l'aperçu des traductions des fonctionnalités et règles de MQL5 en MQL4, cela nous aiderait non seulement nous mais aussi vous à comprendre les problèmes qui se posent. Et imaginez, il y aura 500 pages ou plus. Comment puis-je le relire ?

 
ForexMoneyMaker:

Il n'y a aucun problème de compilation. Il y a des problèmes d'opérabilité, et si je comprends bien, ils sont liés au mélange de la logique MQL5 avec la logique MQL4. Cependant, les problèmes que nous abordons ici ne sont pas suffisants pour toutes les occasions. Tout ceci est un cas particulier. Les règles sont nécessaires. Si vous avez publié un guide préliminaire ou au moins l'aperçu des traductions des fonctionnalités et des règles de MQL5 en MQL4, cela nous aiderait non seulement nous mais aussi vous à comprendre les problèmes qui se posent. Et imaginez, il y aura 500 pages ou plus. Comment pouvez-vous tout lire ?

premièrement, quelque chose d'autre peut changer (y compris des choses qui affectent la compatibilité). deuxièmement, maintenant toutes les "ressources descriptives" sont consacrées à la préparation d'une aide. pourquoi s'embêter à surcharger un système qui fonctionne déjà à plein régime ? pour que le nombre de bogues augmente ?
 

MT4 build 536, ME build 872.

L'indicateur utilise un paramètre d'entrée pour une fenêtre séparée : extern string Currency_Name = "EURUSD" ;

Si l'indicateur est lancé sans modifier le paramètre d'entrée, l'indicateur est dessiné et fonctionne sans erreur. Mais dès que je change le symbole après la première exécution, par exemple "GBPUSD", l'indicateur n'accepte pas le nouveau nom de symbole. Le nom court de l'indicateur reste le même, mais l'indicateur n'est pas dessiné du tout (champ vide). Si vous changez le nom du symbole lors du premier appel, l'indicateur sera dessiné par le nom initial, écrit dans le programme.

Quant à la modification des valeurs numériques des données initiales de l'indicateur, elles sont modifiées dans tous les cas et l'indicateur est dessiné sans erreur.

 
Renat:

Il n'est pas bon d'avoir des centaines de variables globales dans un programme.

La POO et les classes résolvent complètement et radicalement le problème en masquant les scopes et en fournissant un accès protégé aux données.

Peut-être que ce n'est pas assez bien. Mais j'ai écrit là pourquoi c'est le cas. Il était impossible de mettre en œuvre ce qui était prévu différemment dans MT4. Ça n'a pas fonctionné autrement avec les graphiques. Seules les variables externes permettent de définir le style des éléments graphiques. Si nous avons beaucoup d'éléments graphiques différents, nous aurons beaucoup de variables externes. Outre le style, il existe un grand nombre de propriétés des éléments graphiques, qui peuvent également être modifiées UNIQUEMENT AVEC DES VARIABLES EXTERNES. Les graphiques sont bons dans l'enseigne. Mais dans MT4, c'est un véritable gâchis. C'est pourquoi il existe des centaines de variables externes. Nous ne savons pas encore ce qui se passera avec la nouvelle version de MT4. Nous verrons bien.
 
nen:
Ce n'est peut-être pas suffisant. Mais j'ai écrit là pourquoi c'est le cas. Il était impossible de mettre en œuvre ce qui était prévu différemment dans MT4. Ça n'a pas fonctionné autrement avec les graphiques. Seules les variables externes permettent de définir le style des éléments graphiques. S'il y a beaucoup d'éléments graphiques différents, il y aura aussi beaucoup de variables externes. Outre le style, il y a beaucoup de propriétés des éléments graphiques qui ne peuvent être modifiées QUE PAR DES VARIABLES EXTERNES. Les graphiques de l' enseigne sont très bien. Mais dans MT4, c'est un véritable gâchis. C'est pourquoi il y a des centaines de variables externes. On ne sait pas comment cela sera dans la nouvelle version de MT4. Nous verrons bien.

Nous parlons donc de variables et non de graphiques. En outre, les graphismes sont excellents dans MT5 - vous pouvez faire n'importe quoi, jusqu'aux jeux d'ordinateur. Mt4 est sur le point de s'intensifier aussi.

Comment transmettre dans un programme quelconque une centaine de paramètres qu'un utilisateur doit modifier lui-même à tout moment ? Uniquement avec un tableau des paramètres d'entrée. Cela ne dépend pas du type de programme.

De toute façon, des centaines de paramètres, c'est le chemin du programmeur qui ne mène nulle part. Nous devons appliquer des méthodes de contrôle automatique intelligentes pour réduire le nombre de paramètres d'un facteur dix. Dès que vous commencez à y penser, les solutions viennent immédiatement.

 
nen:

S'il y a plusieurs centaines de variables externes dans l'indicateur et que quelques dizaines doivent être modifiées lors de l'installation, alors...

Avant la réinstallation, vous devrez vous rappeler quelles variables doivent être sauvegardées à partir des valeurs qui ont été modifiées lors de l'installation précédente de l'indicateur.

Sans entrer dans l'impossibilité de se débarrasser de 100 paramètres...

Pour éviter de devoir se souvenir de ce qui a déjà été modifié, il existe un bouton "Reset".

Et le nouveau comportement (sauvegarde des valeurs entrées des variables après recompilation) rend le travail plus pratique - vous n'avez pas besoin de reconfigurer toutes les copies de l'indicateur, si vous changez quelque chose dans celui-ci.

 

Renat, Stringo, Unicode restera-t-il pour de bon ?

 
input datetime  Date_From = D'08.10.2013';      // Начало периода
input datetime  Date_To = D'08.11.2013';        // Окончание периода
input bool      Column_Headers = true;          // Создавать заголовки колонок?

Il s'agit d'un script, au démarrage le champ Date_From est toujours la date/heure locale actuelle, le champ Date_To est correct. Modification de l'ordre des paramètres - si une variable de type datetime n'est pas la première de la liste, ce défaut n'existe pas.

---

Dans l'aide, PRICE_CLOSE a le type ENUM_APPLIED_PRICE, mais le compilateur ne le sait pas - 'ENUM_APPLIED_PRICE' - déclaration sans type. L'aide ou le compilateur vont-ils le corriger ?

---

Et en général pour cet éditeur/compilateur - merci !

 

J'apporte des modifications à l'indicateur déjà compilé qui se trouve sur le graphique de la paire de devises. Je le recompile. Pour que les modifications soient prises en compte, il est nécessaire de redémarrer l'ensemble du terminal. Le fait de retirer l'indicateur du graphique et de le redémarrer n'aide pas, le changement de cadre temporel n'aide pas non plus. Seul le redémarrage du terminal lui-même permet de voir les modifications apportées.

S'il vous plaît, réparez-le.

 
ObjectSetInteger(0,"Name",OBJPROP_CORNER,CORNER_RIGHT_LOWER);
ObjectSetInteger(0,"Name",OBJPROP_ANCHOR,ANCHOR_RIGHT_LOWER);

CORNER_RIGHT_LOWER et ANCHOR_RIGHT_LOWER ne sont pas détectés.

Mqh-file, erreur "undeclared identifier" dans les logs


StringConcatenate fonctionne bizarrement

Cela fonctionne de la manière suivante

StringConcatenate("Text 1 ","Text 2");
StringConcatenate("Text 1 ",10);
StringConcatenate(10," Text 2");
StringConcatenate(10,11);
StringConcatenate("Copyright ",CharToString(169));

Mais cela ne fonctionne pas comme ça (seul "©" est affiché).

StringConcatenate(CharToString(169)," Copyright");




Raison: