Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 649

 
Artyom Trishkin:

2. ¿Qué significa "más que cero"?

Significa que hay algún precio en el buffer, de lo contrario no hay ningún precio en el buffer.

Artyom Trishkin:

¿Qué se muestra en los valores del buffer de este indicador en la ventana de datos?

Precio o nada.
 
Ghabo:

Significa que hay algún precio en el buffer, de lo contrario no hay ningún precio en el buffer.

EMPTY_VALUE es un valor de búfer "vacío", que muchos indicadores utilizan por defecto, tiene un valor de DBL_MAX - y éste es muy superior a cero. Por eso pregunto.

Prueba a comprobar si(M_A > 0 && M_A < VALOR_VACÍO)

 
Artyom Trishkin:

El valor EMPTY_VALUE, el valor de la memoria intermedia "vacía" que muchos indicadores utilizan por defecto, tiene un valor de DBL_MAX - que es muy superior a cero. Por eso pregunto.

Intenta comprobar si(M_A > 0 && M_A < EMPTY_VALUE)

Las señales están ahí. ¿Esto es todo?

void OnInit() {
  time=Time[0];
}
//////////////////////////////
if(М_А>0 && M_A < EMPTY_VALUE)  
{
if(time!=Time[0])
   {
    time=Time[0]; 
    AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
   }
 }

¿Así que no habrá alerta en el arranque pero sí en la aparición de la señal en la barra durante la cual el indicador estaba conectado?

Lo dudo, en la inicializaciónel tiempo ya es igual al tiempo de apertura de la barra.

¿Cómo decidir?

 
Ghabo:

Las señales están ahí. ¿Eso es todo?

¿Así que no habrá alerta al inicio pero sí cuando la señal aparezca en la barra durante la cual el indicador estaba conectado?

Lo dudo, en la inicialización,el tiempo ya es igual al tiempo de apertura del bar.

¿Cómo resolverlo?

Eliminar el tiempo de inicialización en OnInit()

void OnCalculate()
  {
   static datetime time=0;
//---
   if(М_А>0 && M_A < EMPTY_VALUE)  
     {
      if(time!=Time[0])
        {
         time=Time[0]; 
         AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
        }
     }
  }
 
Taras Slobodyanik:

así que ya está todo preparado, sólo falta añadir la escritura/lectura

¿Funciona o debería funcionar este código? Tengo divergencia después de la recuperación de la variable global con ID real. Y si puede, un ejemplo en forma de indicador. Gracias.
 
inter78:
¿Funciona o debería funcionar este código? Tengo una divergencia después de recuperar de una variable global con un ID real. Y si es posible un ejemplo en forma de indicador. Gracias.

Mi código, me funciona, no puedo ver tu código.
por favor)

 

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Cualquier pregunta para los novatos en MQL4, ayuda y discusión sobre algoritmos y códigos

Taras Slobodyanik, 2018.10.05 11:01

Bueno, no hay nada complicado en las variables globales:
- el nombre de la variable será prefijo+símbolo+periodo, valor = ID del gráfico
- Al comenzar, busque las variables con su prefijo y compare las aidi
- Si un gráfico no es nuestro, comprobamos si existe tal gráfico; si no existe ya, borramos la variable
- Si un gráfico es nuestro, tomamos un símbolo y un punto del nombre y también borramos la variable (o la reescribimos)



Intento ayudar a mis lectores a entender el significado del prefijo variable y su uso. Por favor, dame un ejemplo de cómo crear dicha variable global.

Dice que los GPTs se almacenan durante 4 semanas, ¿es así aunque el terminal esté apagado?

 
psyman:

No encuentro nada en la ayuda sobre qué es un prefijo de variable o por qué es necesario. Por favor, dame un ejemplo de cómo crear dicha variable global.

Dice que los GPT se almacenan durante 4 semanas, incluso si el terminal está apagado?

Me refería al prefijo en el nombre para poder identificar dónde una variable es propia y dónde es ajena, y el prefijo puede borrar todas las variables a la vez:

int  GlobalVariablesDeleteAll( 
   string     prefix_name=NULL,     // все глобальные переменные, чьи имена начинаются с префикса 
   datetime   limit_data=0          // все глобальные переменные, которые изменялись ранее ранее указанной даты 
   );

por ejemplo:

string   GV_prefix="ZZ_";                                               //префикс имени для всех своих
string   prefix_gv=GV_prefix+_Symbol+"_"+TFtoStr(ind_period)+"_";       //префикс имени для конкретного символа и периода

GlobalVariablesDeleteAll(prefix_gv); //удалить все переменные со своим префиксом


   //создание и запись глобальных переменных в цикле
   int num=0;
   for(int i=lines_all-1;i>=end;i--)
      {
      string name=prefix_gv+"Price_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].price);
      
      name=prefix_gv+"TimeBeg_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].time_start);
      
      name=prefix_gv+"TimeEnd_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].time_end);
      
      name=prefix_gv+"Visible_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].visible);
      
      name=prefix_gv+"Direction_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].direct);
      
      num++;
      }


ps. también puede almacenar/extraer información en el nombre

 

Ahora sabemos de qué estamos hablando.

=nombre de la variable es prefijo+símbolo+periodo, valor = id del gráfico

¿Por qué tan complicado? Si sólo quieres almacenar el periodo, puedes nombrarlo conel id del gráfico.

 
psyman:

Ahora sabemos de qué estamos hablando.

=nombre de la variable es prefijo+símbolo+periodo, valor = id del gráfico

¿Por qué es tan complicado? Si desea almacenar sólo un período, puede nombrarun identificador de gráfico.

Sólo lo escribo como ejemplo)

si no necesitas recordar el símbolo, no necesitas recordarlo.

Si el nombre es sólo un identificador de gráfico, ¿cómo se eliminan las variables innecesarias?
(si se utiliza a menudo, habrá muchas variables)

si no hay prefijo - lo mismo, ¿cómo eliminar las variables innecesarias?

Razón de la queja: