Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1468

 
Novichokkk #:

¿Por qué no escribir Bars() en lugar de rates_total ?

Lo siento, por supuesto, por ser un cojo. Estoy escarbando en la documentación, varios libros sobre MKL5. No se explican todos los matices. En los libros también. Por separado sobre el lenguaje en los libros es clara. ¿Cómo se ensamblan las construcciones-caput, lo que a partir de dónde y para qué.... Me estoy poniendo a ello. Un montón de comprobaciones y dobles comprobaciones. Abrí un código mashki simple, y hay tantas líneas. Y parecía que lo único que hay que hacer es descargar un array (o acceder a él), calcular para un valor desde tal índice del array hasta tal otro, y pasar por una ventana deslizante con estos cálculos sobre el array indicando por índices desde dónde hasta dónde. Sí a mostrar la línea en la pantalla. Y no.

También puedes usar una construcción así. ¿Pero por qué? Cuando ya hay variables predefinidas en los parámetros del manejador...

Bars() debe usarse cuando realmente se necesita - cuando se obtiene el número de barras disponibles por otro símbolo/timestamp.

 
Artyom Trishkin #:

Usted también puede utilizar este diseño. ¿Pero por qué? Cuando ya hay variables predefinidas en los parámetros del manejador...

Bars() debe usarse cuando sea realmente necesario - cuando se obtiene el número de barras disponibles por otro símbolo/marco de tiempo.

Artyom, a veces cualquiera se cansa y comete errores. No lo consideres una crítica, pero rates_total - Bars() siempre será cero...

En general, es muy difícil de explicar a este personaje. Una víctima de la USE...

 
Alexey Viktorov #:

Artyom, a veces todo el mundo se cansa y comete errores. No lo consideres una crítica, pero rates_total - Bars() siempre será cero....

En general, es muy difícil de explicar a este personaje. Una víctima de la USE...

Sí, tienes razón. No pensé que alguien decidiera calcular así. Vi Bars en el cálculo por el rabillo del ojo y pensé que era en lugar de rates_total.

Suele pasar, gracias.

 
Artyom Trishkin #:
//--- Проверка и расчёт количества просчитываемых баров
   int limit=rates_total-prev_calculated;
   if(limit>1)
     {
      // Присваиваем limit значение количества доступных баров-1
      limit=rates_total-1;
      // Вот тут нужно инициализировать все буферы пустыми значениями
      ArrayInitialize(Buffer0,EMPTY_VALUE);
      ArrayInitialize(Buffer1,0);
      ArrayInitialize(Buffer2,clrNONE);
      // ... и т.д.
     }
//--- Экономный просчёт индикатора
   for(int i=limit;i>=0;i--)
     {
      Buffer0[i]=(/*что-то там*/);
     }

Entiendo que quisieras ayudar a la persona, pero al parecer por error sólo la confundiste.

El error de cálculo económico en este caso parece un poco diferente.

for(int i=limit;i<rates_total;i++)
 
Aleksandr Slavskii #:

Entiendo que quería ayudar a la persona, pero al parecer por error sólo confundido.

El error de cálculo económico en este caso se ve un poco diferente.

¿Qué cree que escribí mal? Justifícalo, por favor.

Cuál es el límite y de dónde saldrá el bucle en mi ejemplo y en el tuyo.

 
Novichokkk #:

¿Por qué no escribir Bars() en lugar de rates_total ?

En esencia rates_total y Bars () son la misma cosa, sólo queBars() es una función, por lo que su llamada costará más en términos de tiempo de ejecución que la lectura del valor de la variable rates_total.

 
Artyom Trishkin #:

¿Qué cree que he escrito mal? Justifíquelo, por favor.

Cuál es el límite y de dónde vendrá el bucle en mi ejemplo y en el tuyo.

Oops))))))

No lo vi bien

if(limit>1)

No vi bien lo que escribiste.

Te pido disculpas.

 
Alexey Viktorov #:

Artyom, a veces cualquiera se cansa y comete errores. No lo consideres una crítica, pero rates_total - Bars() siempre será cero....

En general, es muy difícil de explicar a este personaje. Una víctima de la USE...

rates_total es Bars()en la frase. Es decir, rates_total es Bars().

En el código siguiente

int limit=Bars()-prev_calculated;

tiene razón.

No tomé la USE. No existía entonces.
 
Novichokkk número de barras de que dispone el indicador para el cálculo y corresponde al número de barras disponibles en el gráfico.

Por ejemplo MA5, media de 5 barras, configurado para mostrar 100 barras. Entonces el indicador calculará desde la barra 104 a la 100 y empezará a dibujar la línea a partir de la barra 100. ¿Entonces rates_total=5, o 100, o 104?

   int limit = rates_total-100;

   if(prev_calculated <= 0)
     {
      // Вот тут нужно инициализировать все буферы пустыми значениями
      ArrayInitialize(Buffer0, EMPTY_VALUE);
      ArrayInitialize(Buffer1, 0);
      ArrayInitialize(Buffer2, clrNONE);
      // ... и т.д.
     }
   else
      limit = prev_calculated - 1;

//--- Экономный просчёт индикатора
   for(int i = limit; i < rates_total; i++)
     {
      Buffer0[i] = (/*что-то там*/);
     }

Entonces el cálculo se hará sobre las últimas 100 barras.

 
Aleksandr Slavskii #:

En esencia rates_total y Bar s () son la misma cosa, sólo queBars() es una función, por lo que llamarla costará más en términos de tiempo de ejecución que leer el valor de la variable rates_total.

Gracias, eso está muy claro.