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

 

Foro sobre trading, sistemas de trading automatizados y comprobación de estrategias

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

Taras Slobodyanik, 2018.10.07 09:47

Lo escribo a modo de ejemplo)

si no necesita recordar el símbolo, puede que no lo recuerde

Si el nombre sólo será un identificador de gráfico, ¿cómo puedo eliminar las variables innecesarias?
(con el uso frecuente habrá muchas variables)

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


=Sólo escribo esto como ejemplo).

Si quieres ampliar la mente poco sofisticada, es un buen ejemplo para la educación :-)

=Sinombro sólo el id del gráfico, ¿cómo elimino las variables innecesarias?

¿Por qué eliminarlos? Si, por ejemplo, quiere almacenar sólo el punto, entonces nombre = prefijo+símbolo es suficiente. Si realizo una sola operación de cambio de cuadro en un gráfico, se acabará antes de pasar al siguiente gráfico y allí se vuelve a solicitar el periodo y se sobrescribe la GP. ¿Hay algún problema en este caso?

 
Taras Slobodyanik:

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

Así que lancé tu script en el gráfico y la lista de variables globales es 0.
 
inter78:
Así que lancé tu script en el gráfico y la lista de variables globales es 0.

¿quieres comprobarlo o quieres conducir?)
mirar la lista visualmente es mirar los bits largos, como los bits para el doblaje - hay abracadabra, o NaN

 
psyman:

¿Por qué eliminarlos? Si, por ejemplo, sólo necesita almacenar un punto, entonces nombre = prefijo + símbolo es suficiente. Si realizo una sola operación de cambio de cuadro en el gráfico, ésta termina antes de pasar al siguiente gráfico, y allí se vuelve a consultar el período y se sobrescribe el GP. ¿No hay trampas en este caso?

todo depende del objetivo

si el indicador (o lo que sea), funcionará en una instancia, en un símbolo, y nadie más hará las mismas variables, entonces por supuesto, no se puede molestar

 
Taras Slobodyanik:

¿quieres comprobarlo o conducirlo?)
mirar la lista visualmente es mirar los bits longo, como los bits para el doblaje - hay abracadabra, o NaN

Eso si ahora entiendo lo que me acaba de escribir no me molestaría con usted. Es que mis conocimientos de programación tienden a cero. Pero si pudiera meter ChartID en las variables globales sin distorsión sería feliz. Gracias.
 

Foro sobre trading, sistemas de trading automatizados y comprobación de estrategias

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

Taras Slobodyanik, 2018.10.06 21:47

      string name=prefix_gv+"Price_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].price);
      

¿Cómo consigo de forma tan inteligente que a la variable nombre se le asigne un valor de cadena de texto y que luegoLine_ALL[i].price se escriba ahí también, pero como GP?

En teoría el nombre debería sobrescribirlo.

UPD

Creo que lo tengo: necesito una variable simple para almacenar el nombre del GP. El nombre de la variable puede ser el mismo. ¿Verdad?

 
psyman:

Explica la parte complicada: a nombre se le asigna un valor de cadena de texto y luego se escribe allíLine_ALL[i].price, pero como GP?

En teoría, el nombre debería sobrescribirse.

UPD

Creo que lo tengo: necesito una variable simple para almacenar el nombre del GP. El nombre de la variable puede ser el mismo. ¿Verdad?

En lavariable se crea un nombre (textual), luego se crea una Variable Global con este nombre y se escribe un valor en esta GP.
es decir, se genera una lista de GPs y se almacena en ellos parte de la matriz

1

 
inter78:
Si entendiera lo que acabas de escribir, no te estaría molestando. Es que mis conocimientos de programación tienden a cero. Pero si pudiera meter ChartID en las variables globales sin distorsión sería feliz. Gracias.

mi código escribe el long-ChartID en una Variable Global temporal.

Visualmente, si se pulsa F3, allí aparece el cero (u otro valor diferente).
Esto sucede porque el terminal piensa que es un valor doble y trata de mostrarlo, pero nosotros lo hemos deslizado como un largo - que es un formato de número completamente diferente.

Si este valor se lee como un doble normal, será un desastre.
Si lo lee mi código, volverá a ser largo (el mismo que guardamos).
Si hace clic manualmente en esta variable en la ventana del terminal, se restablecerá porque el terminal detectará el intercambio.

 
Taras Slobodyanik:

Se crea un nombre en elnombre de la variable (textual), luego se crea una Variable Global con ese nombre y se escribe un valor en esa GP.
es decir, se genera una lista de GPs y se almacena en ellos parte de la matriz


Pero esta condición.

GlobalVariableCheck(name) || GlobalVariableTemp(name)

¿para qué?

La propia definición "GlobalVariableTemp intenta crear una variable global temporal" no me queda clara.

¿Por qué intentar crear cuando GlobalVariableSet lo hace?

UPD

Lo escribí en OnInit:

   string   GV_prefix="ZZ_";
   string   ctime=GV_prefix+_Symbol+"_"+ChartID();
   GlobalVariablesDeleteAll(NULL, 0);
    if (GlobalVariableCheck(ctime) || GlobalVariableTemp(ctime))
      GlobalVariableSet(ctime, Period());

Llamada en OnChartEvent:

if(GlobalVariableGet(ctime)!=Period()) 

La respuesta que obtengo es 'ctime' - identificador no declarado


 
psyman:

Pero esta condición.

¿Por qué?

GlobalVariableCheck()- comprueba si dicha variable ya existe, si no es así
GlobalVariableTemp()- crea una variable temporal, que será eliminada por sí misma en el siguiente lanzamiento.

psyman:

UPD

Lo escribí en OnInit:

Lo llamo en OnChartEvent:

En respuesta obtengo 'ctime' - identificador no declarado

la cadena necesita ser movida por encima de OnInit, a las variables globales del código.

o añadir aOnChartEvent

string   GV_prefix="ZZ_";
string   ctime=GV_prefix+_Symbol+"_"+ChartID();