Questions d'un "mannequin - page 117

 
meneo:

Comment est-ce possible ? (voir le calcul de la variable k et les valeurs de toutes les variables en mode débogage)

C'est très simple. lparam est un type long (integer), wdpix est un type int (integer). lparam/wdpix est un type long privé (integer). Puisque lparam < wdpix, lparam/wdpix ==0.

Voir Référence MQL5 / Notions de base du langage / Types de données / Conversion de type

 
meneo:

Comment tenez-vous compte des écarts entre les barres adjacentes sur le graphique ?

Si vous le voyez, veuillez contacter le Service Desk et les informer de l'erreur.
 
Merci à tous ! )
 
Pouvez-vous dire quel expert est en cours d'exécution dans une autre fenêtre ?
 
meneo:
Pouvez-vous dire quel conseiller expert est en cours d'exécution dans une autre fenêtre ?
Cela semble impossible (si je n'ai rien oublié), mais il est possible de "distinguer" les siens des "autres". S'il y a plusieurs programmes dans le projet, vous pouvez spécifier leur protocole d'échange de courtoisies par des messages personnalisés. Ils doivent dire bonjour, enlever leur chapeau, sortir leurs poches, etc.
 

Est-il également possible de faire une énumération par énumération ?

comme ça ?

for (int i = PERIOD_M1;i<=PERIOD_D;i++)

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Периоды графиков - Документация по MQL5
 
meneo:

Est-il également possible d'effectuer une énumération par énumération ?

comme ça ?

for (int i = PERIOD_M1;i<=PERIOD_D;i++)

Cela ne fonctionnera pas.

A propos de ça - je devrais essayer.

for (ENUM_TIMEFRAMES i = PERIOD_M1;i<=PERIOD_D;i++) {}

D'une manière ou d'une autre, je soupçonne que cela ne fonctionnera pas, même si "théoriquement" il y a une chance. :)

 

Eh bien, j'ai essayé.

void OnStart()
  {
//---
   for (ENUM_TIMEFRAMES i = PERIOD_M1;i<=PERIOD_D;i++) { Print(EnumToString(i));}
  }
//+------------------------------------------------------------------+

Il ne veut même pas compiler.

ForEnum.mq5' ForEnum.mq5 1 1
'i' - jeton inattendu ForEnum.mq5 15 25
'i' - identificateur non déclaré ForEnum.mq5 15 25
'PERIOD_D' - identificateur non déclaré ForEnum.mq5 15 42
'i' - le paramètre pour EnumToString doit être une énumération ForEnum.mq5 15 77
4 erreur(s), 0 avertissement(s) 5 1

Mais il semble qu'il n'y ait rien d'illégal à cela.

 
MetaDriver:

J'ai essayé.

Le programmeur ne veut même pas compiler.

Et il semble qu'il n'y ait rien d'illégal à cela.


Pour travailler avec les enum, vous devriez probablement ajouter au moins des fonctions telles que

enum::GetName et enum::GetValue

et pour chaque construction linguistique

Ensuite, l'énumération sera automatisée par MQL.

 

Cela fonctionne, bien sûr.

#property script_show_inputs

input  ENUM_TIMEFRAMES P = PERIOD_D1;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   for (int i = PERIOD_M1;i<=P;i++)  // { Print(EnumToString(ENUM_TIMEFRAMES(i)));}
    {
      string S=EnumToString(ENUM_TIMEFRAMES(i));
      if (StringGetCharacter(S,0)=='P')   

        {{{{ Print(S);  }}}}

    }

  }

Et ce qui est génial, c'est qu'il ne dit pas que P est un jeton inattendu ou un identifiant non déclaré.

Et au contraire, en tant que client régulier, il offre toutes les commodités



Étrange ..... ;)

Raison: