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

 
En MT4 en el probador de cómo trazar una pulsación de botón de parada para un indicador. No se llama a OnDeanit aunque la prueba haya terminado. O cómo cerrar los archivos abiertos cuando se pulsa el botón de parada en el probador.
 
Valeriy Yastremskiy:
En MT4 en el probador de cómo trazar una pulsación de botón de parada para un indicador. No se llama a OnDeinit aunque la prueba haya terminado. O cómo cerrar los archivos abiertos cuando se pulsa el botón de parada en el probador.

los archivos abiertos deberían cerrarse automáticamente de todos modos

si no, intente crear archivos con SB, hay CFile, CFileTxt como OOP - los objetos serán destruidos durante la desinicialización y los destructores cerrarán los archivos

https://www.mql5.com/ru/docs/standardlibrary/fileoperations


HH: ¿Por qué crees que no se llama a OnDeinit()? - intentar abrir y escribir un archivo en él

 
Igor Makanu:

los archivos abiertos deberían cerrarse automáticamente de todos modos

si no, intente crear archivos con SB, hay CFile, CFileTxt como OOP - los objetos serán destruidos durante la desinicialización y los destructores cerrarán los archivos

https://www.mql5.com/ru/docs/standardlibrary/fileoperations


HH: ¿Por qué crees que no se llama a OnDeinit()? - Intenta abrir y escribir un archivo en él.

Por experiencia. Yo mismo me sorprendí. Aunque, lógicamente es correcto, es un indicador y no debe descargarse como un Asesor Experto. Tengo que eliminar el indicador del gráfico de prueba manualmente o cerrar la ventana. Y sólo entonces veo las Alertas después de cerrar los archivos)))

Las pruebas son sencillas, no quiero utilizar biblios. Sí y creo que hay algo más que los eventos del ratón en el botón de parada en el probador de indicadores. Los cortes de búsqueda superficiales no dieron, por desgracia.

Zy, los archivos, si no se cierran, no hay acceso a ellos, y si OnDeinit() de repente no funciona, se cerrarán cerrando sólo el terminal.

Por experiencia, se olvidó de registrar el cierre de los archivos)))

 
Valeriy Yastremskiy:

Con experiencia. Yo mismo me sorprendí. Aunque lógicamente todo es correcto, es un indicador, y no debería descargarse como un Asesor Experto. Tengo que eliminar manualmente el indicador del gráfico de prueba o cerrar la ventana. Y sólo entonces veo las Alertas después de cerrar los archivos)))

Las pruebas son sencillas, no quiero utilizar biblios. Sí y creo que hay algo más que los eventos del ratón en el botón de parada en el probador de indicadores. Los cortes de búsqueda superficiales no dieron, por desgracia.

Zy, los archivos, si no se cierran, no hay acceso a ellos, y si OnDeinit() de repente no funciona, se cerrarán cerrando sólo el terminal.

Camino de la experiencia, se olvidó de registrar el cierre del archivo)))

No has descrito todo el proceso de prueba del indicador antes

por lo que he entendido se ejecuta el indicador en el tester de MT4 en modo visual, aunque se puede añadir el indicador..... en el visualizador de MT4

Nunca he probado un indicador en MT4, sólo lo compruebo en EA en el código TS


como alternativa, establezca la fecha en el indicador, cuando termine la prueba como una variable y después de alcanzar esta fecha, guarde el archivo y salga de OnCalculate() - el código es un par de líneas, pero definitivamente funcionará

 
Igor Makanu:

No has descrito todo el proceso de prueba del indicador antes

Por lo que he entendido, el indicador se ejecuta en el probador de MT4 en modo visual, pero también se puede llenar en MT4 en el visualizador con indicator.....

Nunca he probado un indicador en MT4, sólo lo compruebo en EA en el código TS


como alternativa, establezca la fecha en el indicador, cuando termine la prueba como una variable y después de alcanzar esta fecha, guarde el archivo y salga de OnCalculate() - el código es un par de líneas, pero definitivamente funcionará

Sí, a la ventana del comprobador no le importa si el indicador se está probando o si el indicador se superpone a la ventana del comprobador.

Gracias por esa muletilla no tan obvia)

boolIsTesting();

Tendré que probarlo, creo que se supone que vuelve por una mentira de parada)
 
Valeriy Yastremskiy:

Sí, a la ventana del comprobador no le importa si el indicador se está probando o si el indicador se superpone a la ventana del comprobador.

Gracias por esa muletilla no tan obvia)

boolIsTesting();

debería probarlo, parece que debería devolver false por parada)

No, no lo hizo.

Tengo una pregunta abierta, cómo rastrear el evento 2021.04.29 08:55:41.177 2020.10.01 08:23:13 Probador: botón de parada presionado

lo hizo)

int OnInit()
{
if(IsTesting()) FlagTest=true;
....
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

if(!IsTesting() && FlagTest) { Print("Окончание тестирования"); OnDeinit(1);}
....
}

 
Igor Makanu:

búsqueda de artículos de Metacquot :"Nube"

leí hace tiempo, si los agentes remotos descargan el historial de su PC o si están conectados al mismo corredor - toman ticks reales del corredor


pero puedo estar equivocado, no lo he usado.


uno de los artículos de Metacquot sobre este tema, tal vez haya información allíhttps://www.mql5.com/ru/articles/2612

Igor, gracias. Documentación, foro, artículos... aún no he encontrado una respuesta.

En el registro hay:

"REGRES_EURGBP: ticks sincronizados ya [57 bytes]".

Espero que esto sea lo que necesito.

 
Valeriy Yastremskiy:

No, no lo hizo.

De todos modos, la pregunta está abierta, cómo rastrear en el indicador de prueba el evento 2021.04.29 08:55:41.177 2020.10.01 08:23:13 Tester: botón de parada presionado

lo hizo)


tienes que escribir algo así:

datetime t_stop=D'20.04.2021'; 
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
if(time[0]>=t_stop)
{
        if(f_handle<0) return;
        FileClose(f_handle);
        f_handle = -1;
}
No puedo recordar MT4 permite probar el último día (hoy) - necesidad de recoger t_stop
 
HimOrik:

Igor, gracias. Documentación, foro, artículos... aún no he encontrado la respuesta.

En el registro hay:

"REGRES_EURGBP: ticks sincronizados ya [57 bytes]".

Espero que esto sea lo que necesito.

los moderadores son silenciosos, hay pocos usuarios activos

crea un tema con tu pregunta en la discusión general, creo que resolverás tu problema más rápido

 
Igor Makanu:

tienes que escribir algo así:

No recuerdo que MT4 me permite probar el último día (hoy) - Tengo que elegir t_stop

Entiendo esta idea, es útil, pero no me sirve en este caso. Necesito cronometrar el Tester: botón de parada pulsado en el indicador

Razón de la queja: