Scripts: sHistoryExport - script útil para exportar los datos del historial a formato de МetaТrader 4 - página 4

 

Hola,


¿Es posible cambiar el script para que el archivo .csv generado se haga del presente al pasado?

Agradecido por la atención.

Gracias

 
CarlosFa:

¿Es posible cambiar el script para que el archivo .csv generado se haga del presente al pasado?

Sí, basta con cambiar esta fila

for ( int i = copy_count-1; i > 0; i -- )

por la siguiente:

for ( int i = 1; i < copy_count; i ++ )
 
metatrader 5 gráfico personalizado convertir archivo. Ayuda por favor
 
Lvbey:

Muchas gracias. ¡Me funciona!

Pero me di cuenta de que hay una línea de código debe ser así(sobre la línea 125 en este script):

línea 125: for ( int i = copy_count-1; i >= 0; i -- )...

debido al i > 0(creo que debería ser i >= 0), no existe el primer registro.

^_^

si sustituyes > 0 por >= 0, recuperas también los datos de la última barra (es decir, la más reciente, la actual), que probablemente estén incompletos. Aunque este puede ser el comportamiento deseado, puede ser bastante engañoso.


¡Gracias Andrey Khatimlianskii !

 
Hola amigo, cuando ejecuto el script la última vela no aparece en los archivos .csv. Por ejemplo, en Brasil, el último día de negociaciones fue el pasado 4 de septiembre y en la exportación sólo aparece hasta el 3 de septiembre.
Exporté el .csv en la forma estándar de Metatrader 5 (Archivo> Guardar) y aparece la vela del 4 de septiembre. ¿Me podrían ayudar?
 
gscruzz:
Hola amigo, cuando ejecuto el script la última vela no aparece en los archivos .csv. Por ejemplo, en Brasil, el último día de negociaciones fue el pasado 4 de septiembre y la exportación sólo muestra hasta el 3 de septiembre.
Exporté el .csv en la forma estándar de Metatrader 5 (Archivo> Guardar) y aparece la vela del 4 de septiembre. ¿Me podrían ayudar?

¡Hola!

Sólo tienes que cambiar "i > 0" por "i >= 0" en esta fila:

for ( int i = copy_count-1; i >= 0; i -- )
 

Hola,

Creo que estoy haciendo algo mal. Después de terminar de ejecutar mi EA en el Probador de Estrategias, arrastro y suelto este script en el gráfico de salida pero sólo obtengo resultados vacíos. Hay algo muy básico que no estoy recibiendo. ¿Pueden ayudarme?

Gracias

The Fundamentals of Testing in MetaTrader 5
The Fundamentals of Testing in MetaTrader 5
  • www.mql5.com
What are the differences between the three modes of testing in MetaTrader 5, and what should be particularly looked for? How does the testing of an EA, trading simultaneously on multiple instruments, take place? When and how are the indicator values calculated during testing, and how are the events handled? How to synchronize the bars from different instruments during testing in an "open prices only" mode? This article aims to provide answers to these and many other questions.
 

2021.01.05 21:10:32.910 HistoryExport (Usa500,H1) Descargando historial y escribiendo archivos: 0.0% completo...


// no más de 100 intentos fallidos
if(++fail_cnt >= 100)
   return false;

No importa si son 100 o 1 millón de intentos, el siguiente bloque nunca tiene éxito:

//la copia de la siguiente parte fuerza la carga de datos
if (CopyTime(symbol,period,size-1,1,times)==1)
{
   return true;
}
También en CheckServerHistory:
//¿Suficientes datos en el servidor?
if (first_server_date>TimeCurrent()-size*PeriodSeconds(period))
   return false;

esta condición difícil *siempre* devuelve falso porque la fecha reconocida de first_server_date suele estar más cerca del presente de lo que la historia esperada alcanzaría en el pasado. Especialmente si asigna en la opción de gráficos "max bars in chart" a "unlimited" entonces TERMINAL_MAXBARS devolverá 1000000 y por lo tanto esta condición siempre considerará que nunca hay suficiente historia cargada.

 
El script ya no es tan largo, revísalo con el depurador para ver en qué línea el script 'se tuerce'.
 
Marcel Fitzner:

2021.01.05 21:10:32.910 HistoryExport (Usa500,H1) Descargando historial y escribiendo archivos: 0.0% completo...


No importa si son 100 o 1 millón de intentos, el siguiente bloque nunca tiene éxito:

También en CheckServerHistory:

esta condición difícil *siempre* devuelve falso porque la fecha reconocida de first_server_date suele estar más cerca del presente de lo que la historia esperada alcanzaría en el pasado. Especialmente si asigna en la opción de gráficos "max bars in chart" a "unlimited" entonces TERMINAL_MAXBARS devolverá 1000000 y por lo tanto esta condición siempre considerará que nunca hay suficiente historia cargada.

Tienes razón, simplemente copié este código de la biblioteca estándar.

Ya he reescrito estas funciones para adaptarlas a mis necesidades. Pero no estoy listo para actualizar la publicación en este momento.