[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 490

 
splxgf:

Je crée généralement une variable LastBarAlert et j'y écris Time[0] lorsque l'alerte est déclenchée.

Et ensuite élémentaire, l'alerte est émise si LastBarAlert!=Time[0]


Merci. Cela fonctionne vraiment. Mais pourquoi l'indicateur sauvegarde-t-il la valeur de la variable LastBarAlert, mais pas la valeur d'une autre variable. Je l'ai fait de cette façon. C'est essentiellement la même chose, mais pour une raison quelconque, ça ne fonctionne pas.

if (Signal && AllowAlert = true){
Alert('Signal detected');
AllowAlert = false;
} 
 
sss2019:


Merci. Cela fonctionne vraiment. Mais pourquoi l'indicateur sauvegarde-t-il la valeur de la variable LastBarAlert, mais pas la valeur d'une autre variable. Je l'ai fait de cette façon. Ça semble fonctionner de la même façon, mais pour une raison quelconque, ça ne fonctionne pas.

Où dans votre code se trouve l'initialisation de la variable AllowAlert avec la valeur true ?

Si avant de vérifier le signal et l'état de cette variable dans la ligne...

if (Signal && AllowAlert = true)

... ...alors remettre le drapeau à faux ne fera rien. Après tout, il sera de nouveau initialisé avec true avant cette vérification...

 
sss2019:


Merci. Cela fonctionne vraiment. Mais pourquoi l'indicateur sauvegarde-t-il la valeur de la variable LastBarAlert, mais pas la valeur d'une autre variable. Je l'ai fait de cette façon. C'est essentiellement la même chose, mais pour une raison quelconque, ça ne fonctionne pas.

Le problème doit être dans la logique... Si vous utilisez une variable qui prend les valeurs 0 et 1, sa valeur doit être réinitialisée à chaque nouvelle barre, et il est fort probable que cela ne se produise pas. Soit la variable est décrite localement sans statique et sa valeur n'est pas sauvegardée entre les appels. Il est inutile de faire des suppositions sans code.
 

Спасибо. Это действительно работает. Но почему индикатор сохраняет значение переменной LastBarAlert, а значение какой нибудь другой переменной не сохраняет. Я делал так. По сути получается точно так же, но почему то не работает.

if (Signal && AllowAlert = true){
Alert('Signal detected');
AllowAlert = false;
} 

Vous avez réglé AllowAlert sur true au moment de la vérification. Cela devrait être comme ceci (double =) :

if (Signal && AllowAlert == true){
Alert('Signal detected'); 
AllowAlert = false;
}   

Ou mieux comme ça :

if (Signal && AllowAlert){
Alert('Signal detected');
AllowAlert = false; }   
 
leksiq:

Vous avez réglé AllowAlert sur true au moment de la vérification. Cela devrait être comme ceci (double =) :

Ou mieux comme ça :




En fait, la variable était déclarée statique, et était réinitialisée après quelques mesures. La condition était la suivante.

static bool AllowAlert = true;

if(Time[i] == Time[2] && AllowAlert == true)
  {
  Alert("sdfsdf");
  AllowAlert = false;
  }

if(Time[i] != Time[2])
  {
  AllowAlert = true;
  }
Idéalement, le signal devrait être émis une fois sur la barre actuelle, mais il a été déclenché sur chaque tick.
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool NewBar(){static int prevBar;
   if(prevBar!=Time[0]){
      prevBar =Time[0];
      return(true);
   }
   return(false);
}
//+------------------------------------------------------------------+
Pourquoi ne pas jeter un coup d'œil préliminaire ici :https://www.mql5.com/ru/forum/131853?
 
FAQ:
Pourquoi ne pas jeter un coup d'œil préliminaire ici :https://www.mql5.com/ru/forum/131853?

Ce qui m'intéresse, ce n'est pas comment faire, mais pourquoi mon code ne fonctionne pas. Plus précisément, pourquoi cela fonctionne dans l'EA mais pas dans l'indicateur.
 

Le plus probable, et cela m'a été suggéré ici (à défaut de votre code)

Vous avez plusieurs alertes, et vous appliquez la même variable d'état à toutes les alertes.

 

Bonjour.

Quelqu'un peut-il me le dire ?

comment faire fonctionner une gamme d'un EA ?

Tracez une ligne, renommez-la "buy_down".

dessinez une deuxième ligne, renommez-la "buy_up".

et laissez l'EA négocier uniquement entre ces lignes.

Je ne vois pas de différence entre eux.

 
TESKATLIPOKA:

Bonjour.

Quelqu'un peut-il me le dire ?

comment faire fonctionner une gamme d'un EA ?

Tracez une ligne, renommez-la "buy_down".

dessinez la deuxième ligne, renommez-la en "buy_up".

et laissez l'EA négocier uniquement entre ces lignes.

Je ne vois pas de différence entre eux.


Allez ici : https://www.mql5.com/ru/job