[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 490

 
splxgf:

Suelo crear una variable LastBarAlert y escribir en ella Time[0] cuando se dispara la alerta.

Y luego elemental, la alerta se emite si LastBarAlert!=Time[0]


Gracias. Realmente funciona. Pero por qué el indicador guarda el valor de la variable LastBarAlert, pero no el valor de ninguna otra variable. Lo hice así. Es esencialmente lo mismo, pero por alguna razón no funciona.

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


Gracias. Realmente funciona. Pero por qué el indicador guarda el valor de la variable LastBarAlert, pero no el valor de ninguna otra variable. Lo hice así. Parece que funciona igual, pero por alguna razón no lo hace.

¿En qué parte de tu código está la inicialización de la variable AllowAlert con valor true?

Si antes de comprobar la señal y el estado de esta variable en la línea...

if (Signal && AllowAlert = true)

... ...entonces volver a poner la bandera en falso no hará nada. Después de todo, se inicializará con true de nuevo antes de esta comprobación...

 
sss2019:


Gracias. Realmente funciona. Pero por qué el indicador guarda el valor de la variable LastBarAlert, pero no el valor de ninguna otra variable. Lo hice así. Es esencialmente lo mismo, pero por alguna razón no funciona.

El problema debe estar en la lógica... Si se utiliza una variable que toma los valores 0 y 1, su valor debe restablecerse en cada nueva barra, y lo más probable es que esto no ocurra. O la variable se describe localmente sin estática y su valor no se guarda entre llamadas. Es inútil hacer conjeturas sin código.
 

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

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

Tiene AllowAlert establecido en true justo en el momento de la comprobación. Debería ser así (doble =):

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

O mejor así :

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

Tiene AllowAlert establecido en true justo en el momento de la comprobación. Debería ser así (doble =):

O mejor así :




Básicamente, la variable se declaraba estática y se reiniciaba después de unos compases. La condición era la siguiente.

static bool AllowAlert = true;

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

if(Time[i] != Time[2])
  {
  AllowAlert = true;
  }
Lo ideal sería que la señal fuera una vez en la barra actual, pero se activó en cada tick.
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool NewBar(){static int prevBar;
   if(prevBar!=Time[0]){
      prevBar =Time[0];
      return(true);
   }
   return(false);
}
//+------------------------------------------------------------------+
¿Por qué no echa un vistazo preliminar aquí :https://www.mql5.com/ru/forum/131853?
 
FAQ:
¿Por qué no echa un vistazo preliminar aquí :https://www.mql5.com/ru/forum/131853?

Me interesa más no cómo hacerlo, sino por qué mi código no funciona. Más precisamente, por qué funciona en el EA pero no funciona en el indicador.
 

Lo más probable, y esto me lo sugirieron aquí (a falta de su código)

Tienes varias alertas, y aplicas la misma variable estadística a todas ellas

 

Hola.

¿alguien me lo puede decir?

¿Cómo puedo hacer funcionar un rango de un EA?

dibujar una línea, renombrarla "buy_down".

dibuja la segunda línea, renómbrala "buy_up"

y dejar que el EA opere sólo entre estas líneas.

No veo ninguna diferencia entre ellos.

 
TESKATLIPOKA:

Hola.

¿alguien me lo puede decir?

¿Cómo puedo hacer funcionar un rango de un EA?

dibujar una línea, renombrarla "buy_down".

dibuja una segunda línea, renómbrala "buy_up"

y dejar que el EA opere sólo entre estas líneas.

No veo ninguna diferencia entre ellos.


Vaya aquí: https: //www.mql5.com/ru/job
Razón de la queja: