Souhaits pour le MQL5 - page 39

 
ds2:
// Эти свойства задались уже при создании переменной.
// Менять их в программе, в принципе, особого смысла нет.
// Так что можно их (некоторые из них) сделать read-only
AvgType.DataType = int; 
AvgType.Value    = 0;
AvgType.Comment  = "Тип скользящей средней";

Serait-il judicieux de procéder de cette manière ?

class ExternParam
{
    <template typename T>
    property T Value ...;
    property String Comment ...;
}
 
SK. писал (а):
ds2:
SK. a écrit (a) :

J'aimerais aussi que l'on arrête d'utiliser la fonction if().

Je n'ai pas vu quelque chose comme ça dans les langages de programmation populaires...

О. C'est ça, en plein dans le mille.

L'affirmation positive dans cette déclaration est que si ce n'est pas dans d'autres langues, c'est mauvais, cela signifie que c'est quelque chose d'étranger et d'inutile.

À mon avis, ce n'est pas du tout vrai.

Je suis d'accord. Mais il faut aussi considérer la situation d'un point de vue plus opportuniste. La priorité de MQ, et la nôtre aussi ( !), est d'améliorer MQL en tant que langage de trading automatisé, et de développer ses possibilités de trading et d'analyse. Et MQ a encore de nombreux problèmes non résolus dans cette direction.


Et la mise en œuvre de structures de programmation non standard sans rapport avec le commerce - ce n'est pas pour cela que MQL a été créé. Si les développeurs avaient voulu se démarquer d'une manière ou d'une autre des autres langages, ils auraient utilisé Prolog, par exemple, et non C++. :) (Bien que, personnellement, en tant que fan de Prolog, il aurait été intéressant de le voir. :) )


Je pense que peu importe combien de programmeurs ici demandent un breakif, il est peu probable que MQ perde du temps à le faire. Et, à mon avis, ils feront ce qu'il faut. Et je suggère à tout le monde de ne pas déranger MQ avec des demandes qui les distraient de tâches plus urgentes d'amélioration de MQL en tant que langage de trading automatisé.

SK. a écrit (a) :

Les constructions complexes ne sont pas seulement formées à partir de boucles et de listes. Ils sont également formés sur la base de "si". Une transition contrôlée vers un support de fermeture externe serait donc utile.

Je suis pour le goto. :)


La logique d'un tel programme serait plus transparente. Après tout, breakif est une sortie précoce d'une construction if. Comme toute sortie anticipée, elle doit être effectuée par une condition, c'est-à-dire à l'intérieur d'un autre if. Ainsi, nous parlons de breakif comme d'un opérateur de sortie non pas pour un mais pour deux ( !) if, ce qui complique la compréhension de la logique d'un programme et rompt également avec le concept général des breaks(breakfor, breakwhile, etc.) comme opérateurs de sortie pour une seule construction. C'est peut-être pour cela que les développeurs d'autres langages n'ont toujours pas introduit un opérateur aussi douteux...

 
ds2 писал (а):
Et je suggère à tout le monde de ne pas importuner MQ avec des demandes qui le distraient de tâches plus urgentes d'amélioration de MQL en tant que langage de trading automatisé.


Je suis tout à fait d'accord. :) La logique d'un tel programme sera plus transparente.

Chers développeurs ! S'il vous plaît, ne vous laissez pas distraire "des tâches plus urgentes d'amélioration de MQL en tant que langage de trading automatisé".

Nous ne vous dérangerons plus.

La seule chose que vous devez encore faire est de prendre en compte l'opinion de ds2.

 

Inspiré par l'article de Skeptic Filozov - ah, entrez le profit moyen et la perte en pips et les trades max et min dans le rapport de test aussi.

 

Demande de lecture seule


Entrer des fonctions ou autoriser les fonctions en cours à accéder à tous les sous-dossiers du terminal

là où il y a des matériaux à traiter : par exemple, des grumes

mode "lecture seule".


Prévoir un autre dossier \experts\services

Où toutes sortes d'informations de DM seraient écrites de manière centralisée.

Par exemple, un fichier calendrier formaté et mis à jour automatiquement, des nouvelles "en chiffres", etc...


Si vous devez préciser l'objet de la demande, aucun problème. ;)

 

Dans le graphique, il serait bien d'avoir
1. hairline, car les lignes d'épaisseur 1 ont l'air grossières.

2. il serait bien d'avoir des lignes affichées avec l'arrondi chiffres+2.

Actuellement, les lignes sont arrondies aux chiffres de l'outil, ce qui conduit à un tremplin.

-Dans l'environnement des produits graphiques modernes, cela est frappant et n'est plus pratique en pratique.

 
Comme le conseiller peut se mettre au service de l'emploi du temps du client, les "tics technologiques" sont très nécessaires.
par exemple sous la forme de
int servis() 
{
return(0);
}

Qui reçoit/démarre également comme Start, mais pas depuis un serveur, mais depuis un timer local du terminal.
La période nécessaire pour que les tiques technologiques ne nuisent à personne : de 1 à 3 secondes.
Ce changement peut être introduit directement dans MQL-4 sans attendre la 5e version. Pour ainsi dire, pour le bien des tests et pour le bien des affaires.
 
Korey:

ERREUR dans METALANG

extern double  Lot=0.2;
int start()
{ double   Lot; }

L'initiation de la double variable passe par la compilation sans erreur ni avertissement.


extern double  Lot=0.2;
double   Lot;   //а так ошибку - дает
int start()
{ }

Une variable locale masque une variable globale. Il n'y a pas d'erreur.

 

Korey, zéro précisément parce que la variable externe est masquée :

double Lot;

- il s'agit d'une déclaration non initialisée d'une variable locale à l'intérieur de la fonction start(). Par défaut, il est initialisé à zéro. Toutes les fonctions qui sont appelées dans start() et qui ont le paramètre d'entrée Lot reçoivent la valeur d'une variable locale, et non d'une variable externe. La seule exception concerne les fonctions de init() qui sont exécutées avant start(). Là, le paramètre Lot (s'il n'est pas masqué de la même manière) doit recevoir la valeur d'une variable externe, c'est-à-dire 0,2.


Vous avez cité le mauvais code ou un code incomplet. D'où appelez-vous mon_funck() ?

 
Korey:

S'il s'agissait d'un masquage, alors pourquoi les autres fonctions obtiennent-elles 0 et non 0.2. comme prescrit dans l'extern ?


Vous devez vérifier les déclarations vous-même. Voici un script simple :

//+------------------------------------------------------------------+
//|                                                CheckVariable.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
 
extern double Var = 0.0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
   {
   Print("Функция init():Внешняя переменная на глобальном уровне Var=",Var);
   }
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void MyFunc()
   {
   Var = -100;
   Print("Функция MyFunc(): Переменная Var=",Var);
   }
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
   {
   Print("Функция deinit():Внешняя переменная на глобальном уровне Var=",Var);
   }
 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   double Var = 15;
   Print("Локальная переменная на локальном уровне функции start() Var=",Var);
   MyFunc();
   Print("Локальная переменная на локальном уровне после выполнения функции MyFunc() Var=",Var);
 
   Print("Функция start() завершена");
 
//----
   return(0);
  }
//+------------------------------------------------------------------+


et les résultats du script.