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

 
Renat Akhtyamov:

Bueno, entonces el ciclo del indicador, en el que el número de barras es esta misma línea.

Me pregunto - lo que es claro (?), es decir, donde leer sobre las peculiaridades de MT5 en el modo fuera de línea, ¿podría decirme por favor?

El indicador rates_total - utilizado con éxito en lugar de Bars() en el bucle OnCalculate()
 
Artyom Trishkin:
En el indicador rates_total - se utiliza con éxito en lugar de Bars() en el bucle de OnCalculate()

De acuerdo. Sí, existe.

¿Habrá el mismo número de barras para diferentes instrumentos/marcos de tiempo, porque tengo un indicador multidivisa?

Aquí puedo cambiar los parámetros

Bars(_Symbol,_Period);

Pero, ¿qué pasa con rates_total para calcular el indicador para diferentes plazos y símbolos?

 
Renat Akhtyamov:

De acuerdo. Sí, existe.

¿Habrá el mismo número de barras para diferentes instrumentos/marcos de tiempo, porque tengo una herramienta multidivisa?

Para obtener el número de barras del historial de un marco temporal no actual o de un símbolo no actual en un indicador multidivisa/multiplaza, debemos utilizar Bars()
 
Artyom Trishkin:
Para obtener el número de barras del historial de un marco temporal no actual o de un símbolo no actual en el indicador multidivisa/multihorario, debe utilizar Bars()

Eso es exactamente lo que estoy escribiendo - que esta característica no funciona fuera de línea, aunque hay un historial de citas

Por lo tanto, el indicador no puede ser probado fuera de línea.

Resulta que la cotización en MT5 se envía personalmente a cada IP y puede ser diferente del historial de la cotización, que ya está dibujado en el gráfico? //así va la lógica...

 
Renat Akhtyamov:

y luego el indicador, en el que el número de barras es esta misma línea.

Me pregunto - lo que es claro (?), es decir, donde leer acerca de las peculiaridades de MT5 en el modo fuera de línea, ¿podría decir por favor?

Está claro que MT5. No está claro qué se hizo antes de llamar a Bars(). Este sencillo script funciona y no devuelve cero incluso cuando no hay conexión con el servidor o cuando no hay red en absoluto.

No lo he probado en indicadores, por eso he preguntado cómo se hace en tu caso. Lo más probable es que, cuando se vuelva a llamar al número real de barras, la primera llamada provoque la actualización de los datos en la caché.

void OnStart()
  {
        Print("Bars on chart - ",Bars(_Symbol,PERIOD_CURRENT));  
  }
 
Vitalie Postolache:

Está claro que MT5. No está claro qué se hizo antes de llamar a Bars(). Este sencillo script me funciona y no devuelve cero, incluso cuando no hay conexión con el servidor o cuando no hay red en absoluto.

No lo he probado en indicadores, por eso he preguntado cómo se hace en tu caso.

void OnStart()
  {
        Print("Bars on chart - ",Bars(_Symbol,PERIOD_CURRENT));  
  }
claramente
 

¿Cuál es la mejor manera sencilla de enlazar con el cierre de una vela para ejecutar el EA? ¿Para recalcular indicadores, eliminar/colocar órdenes, etc.?

¿Con un temporizador?

Pero, ¿cómo iniciar el temporizador en el momento adecuado para que se active cada hora a las HH:00:00? y no cada hora desde la activación del temporizador?

 
dimnik:

¿Cuál es la mejor manera sencilla de enlazar con el cierre de una vela para ejecutar el EA? ¿Para recalcular indicadores, eliminar/colocar órdenes, etc.?

¿Con un temporizador?

Pero, ¿cómo iniciar el temporizador en el momento adecuado para que se active cada hora a las HH:00:00? y no cada hora desde la activación del temporizador?

Compruebe la hora de apertura de la vela actual y compárela con la hora de apertura de la última comprobación. Si son iguales, significa que aún no se ha abierto una nueva barra y vuelve de OnTick(). Si no es igual - hemos identificado la apertura de una nueva barra - entonces ejecutamos todo lo que está escrito en el Asesor Experto y recordamos la nueva hora de apertura para la próxima comprobación.
 
Vitaly Muzichenko:

Pregunta gráfica:

Hay un diseño como este

for(long currChart = ChartFirst();currChart != -1; currChart=ChartNext(currChart)) {
 if(currChart == график тестера) continue; // Что сюда написать?
  ObjectSetInteger(currChart,"Sync",OBJPROP_BGCOLOR,clrGreen);
}

¿Cómo puedo saber que el gráfico no es el principal, sino que está abierto en modo tester y saltarlo?

Como sugerencia.

Cree una plantilla para el gráfico y ponga una etiqueta con el nombre, por ejemplo, "TesterChart" o cualquier otro objeto, puede utilizar coordenadas cero para que no sea visible. Nombre esta plantilla "Tester". Ahora todos los gráficos de las pruebas tendrán un objeto con este nombre. A continuación, pregunte si el gráfico tiene este objeto, si es así, es "Nuestro probador", omitirlo.

Hasta el final, pero no conozco otra forma.

 
Vasiliy Pushkaryov:
Como sugerencia.

Cree una plantilla para el gráfico y etiquételo con un nombre como "TesterChart" o cualquier otro objeto, posiblemente en coordenadas cero para que no sea visible. Nombre esta plantilla "Tester". Ahora todos los gráficos de las pruebas tendrán un objeto con este nombre. A continuación, pregunte si el gráfico tiene este objeto, si es así, es "Nuestro probador", omitirlo.

No sé cómo, pero no conozco otra forma.

Gracias, pero esta solución no es adecuada en el sentido de que estoy probando en más de una plantilla, pero eso es la mitad del problema, pero el hecho de que este indicador no sólo funciona para mí, la gente simplemente se cansan de llenar las etiquetas en el probador.

Resulta que no hay forma de determinar programáticamente que el gráfico se ejecute en el probador? ¿Dónde están los desarrolladores?

.