Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1933

 

Chers collègues, je suis perplexe. J'ai besoin d'aide.

J'ai un indicateur qui fonctionne normalement, je l'ai fait à partir de deux, mais ce n'est pas la question. Je veux masquer le premier bloc de variables externes, mais lorsque je supprime toute entrée dans ce bloc après la compilation, le terminal avec l'indicateur installé sur le graphique se bloque.

Le fragment de code de la ligne 76 à 86

input string     01 = "••  Channel:";   // ------------------------------------------------------------
input string     02 = "";       //  

input ENUM_TF_MINUTES   TMA_TimeFrame = TF_CURR;                        // Time Frame
input uint              TMA_Half_Length = 55;                                                                   // Averaging Period
input ENUM_APPLIED_PRICE        TMA_Price = PRICE_CLOSE;        // Applied _Price
input double    TMA_ATR_Multiplier = 3;                                                         // ATR Multiplier
input uint              TMA_ATR_Period = 100;                                                                   // ATR Period
input double    TMA_Band_Deviation_Percent = 50;                        // Band Deviation Percent
input bool              TMA_Interpolate = true;                                                         // Interpolate?
input uint Bars_Limit=1000;

Il se bloque également si je déplace tout ce bloc plus bas que les autres variables et même si je déplace les variables les plus extérieures vers le haut ou vers le bas :

Si je change l'ordre des variables dans le bloc, il se compile normalement. Le terminal n'est pas suspendu.

Je ne comprends pas ce qui se passe. Peut-être que je ne vois pas quelque chose d'évident, mon œil est brouillé ((( Je joins le code

P.S. Le problème a été résolu, le code a été supprimé.
 
Andrey Kaunov #:

Chers collègues, je suis perplexe. J'ai besoin d'aide.

J'ai un indicateur qui fonctionne normalement, je l'ai fait à partir de deux, mais ce n'est pas la question. Je veux masquer le premier bloc de variables externes, mais lorsque je supprime toute entrée dans ce bloc après la compilation, le terminal avec l'indicateur installé sur le graphique se bloque.

Le fragment de code de la ligne 76 à 86

Il se bloque également si je déplace tout ce bloc plus bas que les autres variables et même si je déplace les variables les plus extérieures vers le haut ou vers le bas :

Si je change l'ordre des variables dans le bloc, il se compile normalement. Le terminal ne se fige pas.

Je ne comprends pas ce qui se passe. Peut-être que je rate quelque chose d'évident, mon œil est flou (((( Je joins le code

Remplacer l'entrée par une const

et réjouissez-vous !

 
Maxim Kuznetsov #:

remplacer l'entrée par une constante

et réjouissez-vous !

Cela ne sert à rien, le terminal se bloque toujours lorsqu'on ajoute un indicateur au graphique.

 
Andrey Kaunov #:

Cela ne sert à rien, le terminal se bloque toujours lors de l'ajout d'un indicateur au graphique.

Est-ce qu'il compile ?

c'est-à-dire que si le paramètre a un attribut d'entrée, cela fonctionne, mais s'il est constant, cela se bloque ?

un tel miracle n'existe pas

 
Andrey Kaunov #:

C'est un shaitan, je ne comprends rien. Peut-être que je ne vois pas quelque chose d'évident, mon œil est brouillé (((( Je joins le code

À partir de la ligne 379, vous avez une récursion vers l'indicateur (appel lui-même). Il y a des paramètres ici et vous devez les faire correspondre aussi après avoir changé l'ordre des paramètres.

 
Nikolay Ivanov #:

À partir de la ligne 379, vous avez une récursion vers l'indicateur (qui s'appelle lui-même). Il y a des paramètres à cet endroit et vous devez les ajuster aussi après avoir changé l'ordre des paramètres.

Merci beaucoup, Nikolay.

Oui, j'aurais dû creuser davantage. Je suis coincé dans les paramètres.

 

Pouvez-vous me dire pourquoi la boucle interne ne fonctionne pas dans ce cycle ?

for (int Try=0; Try<1;) 

  {  Print("цикл 1");

      for (int Try2=0; Try2<1;) 

        {  Print("цикл 2"); Try=1; Try2=1;
...


Le "cycle 2" n'est pas imprimé. Seulement "cycle 1".

 
Qui sait comment fixer la taille de OBJ_RECTANGLE_LABEL pour qu'elle soit la même sur différents moniteurs ? J'ai créé un petit panneau de la taille du panneau OneClickTrading intégré (en pixels), mais sur différents moniteurs, le mien change de taille, mais pas le panneau intégré.
 
Ivan Butko #:

Pouvez-vous me dire pourquoi la boucle interne ne fonctionne pas dans ce cycle ?

for (int Try=0; Try<1;) 

  {  Print("цикл 1");

      for (int Try2=0; Try2<1;) 

        {  Print("цикл 2"); Try=1; Try2=1;
...


Le "cycle 2" n'est pas imprimé. Seulement "cycle 1"

Tout s'imprime, tout s'alerte.

void OnStart()
  {
//---
for (int Try=0; Try<1;) 

  { Alert("цикл 1");

      for (int Try2=0; Try2<1;) 

        {  Alert("цикл 2"); Try=1; Try2=1;
        }}
   
  }
//+------------------------------------------------------------------+

2022.03.20 10:28:29.373 Script qqq EURUSD,M1 : supprimé
2022.03.20 10:28:29.373 qqq EURUSD,M1 : uninit reason 0
2022.03.20 10:28:29.373 qqq EURUSD,M1 : Alerte : Cycle 2
2022.03.20 10:28:29.357 qqq EURUSD,M1 : Alerte : Cycle 1
2022.03.20 10:28:29.326 qqq EURUSD,M1 : initialisé

 
Valeriy Yastremskiy #:

tout imprime, alerte

2022.03.20 10:28:29.373 Script qqq EURUSD,M1 : supprimé
2022.03.20 10:28:29.373 qqq EURUSD,M1 : uninit reason 0
2022.03.20 10:28:29.373 qqq EURUSD,M1 : Alerte : Cycle 2
2022.03.20 10:28:29.357 qqq EURUSD,M1 : Alerte : Cycle 1
2022.03.20 10:28:29.326 qqq EURUSD,M1 : initialisé

Merci pour le chèque ! Je vais regarder