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

 
¿Puede decirme cómo resumir todos los valores en el texto?
void Hmin(){datetime   h = iBars(NULL,PERIOD_H1); 
       ObjectCreate(0,"Hmin"+h,OBJ_TEXT,1,TimeCurrent(),0);     
       double Hmin=ObjectDescription("Hmin"+h);     
       ObjectSetText("Hmin"+h,MathMin(Hmin,AccountEquity()-AccountBalance()),15,"Arial",clrWhite);
       ObjectSetInteger(0,"Hmin"+h,OBJPROP_ANCHOR,ANCHOR_RIGHT);  
           }
Este código sólo los crea
 
Дмитрий:

Buenas tardes, por favor ayúdenme a entender...

MathMax devuelve el máximo de dos valores numéricos, es decir, devuelve el máximo valor numérico de dos matrices idénticas high[rates_total] con una diferencia de -1 y -2 barras?

En palabras sencillas: En la primera matriz 12345 y en la segunda 1234, ¿esta función devolverá 5?

No. La función devolverá 12345.

 
Дмитрий:

Buenas tardes, por favor ayúdenme a entender...

MathMax devuelve el máximo de dos valores numéricos, es decir, devuelve el máximo valor numérico de dos matrices idénticas high[rates_total] con una diferencia de -1 y -2 barras?

En palabras sencillas: la primera matriz tiene 12345 y la segunda tiene 1234, ¿esta función devolverá 5?

Devolverá el valor máximo de los dos, que son alto[rates_total-1] y alto[rates_total-2].

Si la dirección high[rates_total-1] contiene el valor 12345, y la dirección high[rates_total-2] contiene el valor 1234, ¿cuál de estos dos valores es mayor?

12345 es claramente mayor que 1234 por un orden de magnitud. Se devolverá el valor 12345 de high[rates_total-1].

 
Artyom Trishkin:

Se devolverá el valor máximo de los dos en high[rates_total-1] y high[rates_total-2].

Si la dirección alta[rates_total-1] contiene el valor 12345, y la dirección alta[rates_total-2] contiene el valor 1234, ¿cuál de estos dos valores es mayor?

12345 es claramente mayor que 1234 por un orden de magnitud. Se devolverá el valor 12345 de high[rates_total-1].

Gracias... Pero hay una duda sobre la racionalidad de la cadena si high[rates_total-1] ya es una barra mayor que high[rates_total-2]

¿O hay un significado diferente aquí?

Gracias.

 
Дмитрий:

Gracias... pero esto plantea una duda sobre la racionalidad de la cadena si high[rates_total-1] ya es una barra más que high[rates_total-2]

¿O hay algo más que tenga sentido aquí?

Gracias.

¿Qué tienen que ver los bares?

Está comparando valores altos en dos barras de la misma matriz. Las tasas_total-1 y tasas_total-2 indican qué valores de las dos barras se están comparando.

Está comparando los valores altos de las barras situadas en rates_total-1 y rates_total-2, no los valores de los índices.

Lo que está pensando se vería así: MathMax(rates_total-1, rates_total-2) - aquí se devolverá siempre rates_total-1.

 
Rustam Bikbulatov:
¿Puedes decirme cómo sumar todos los valores en el texto? Este código sólo crea

¿quieres obtener el saldo menos los valores de la equidad?

 
Artyom Trishkin:

¿Qué tienen que ver los bares?

Estás comparando los valores de Alto, que están en...

Gracias... Para la aclaración)
 

¡Buenos días a todos!

En MT4, en el modelo ALL TIKES, en velas de minutos, pruebo el Asesor Experto. Mi tarea es hacer que el programa pase el menor tiempo posible en la ejecución del código. ¡¡¡¡Pero lo que me sorprendió !!!!

En este código, el programa comprueba cada tick y dedica 6 segundos a la ejecución del código. 375 milisegundos.

void OnTick()
{
Tick++;
if (Tick!=x3)
{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick);
x3=Tick;
}
}

Me pareció que el programa debería comprobar no cada tick, sino sólo el primer tick de cada vela de minuto y gastar mucho menos tiempo en la ejecución del código.

 
void OnTick()
{
Tick++;

if (Minute()!=x3)//&&Seconds()==0

{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick, "  Bid  ",   Bid, "  LoY  ",   LoY);
x3=Minute();
}
}



Pero el programa pasó 6 seg. 219 mseg. A partir de esto llegué a la conclusión de que aunque el código le dice al programa que compruebe la expresión entre paréntesis sólo una vez cada 60 segundos, sigue comprobando esta expresión en cada tick y gasta casi tanto tiempo de ejecución como en el código anterior.
Luego cambié el modelo a VALORES VALIOSOS y ejecuté la segunda variante. Pero el programa tardó los mismos6 segundos en ejecutarse.219 milisegundos.


PREGUNTA . ¿Es posible hacer el programa en MT4 en el modelo ALL TICK, comprobar no cada tick, y sólo el primer tick de una nueva vela minuto, que pasaría mucho menos tiempo para la ejecución del código. Si es posible, ¿qué función o construcción lingüística puede utilizarse?
Gracias.

 
datetime current, last;

void OnTick()
   {
   current=iTime(symbol,frame,0);
   if(last==current) return;
   last=current;

   } 
 
Aleksei Stepanenko:

He cambiado mi código para que coincida con el tuyo

datetime current, last;
void OnTick()
{
Tick++;
current=iTime( NULL,0,0);
if(last==current) return;
last=current;
{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick);
}
}


Tiempo que tarda el programa en ejecutar el código.... 6 , 235, es decir, menos que con mi código (6,375), pero no varias veces menos
. Me parece que debería ser varias veces menos, porque el programa sólo tiene que comprobar el valor del tick una vez en la apertura de cada vela de un minuto.

Cuál de los dos se equivoca..... me parece a mí.


Razón de la queja: