Errores, fallos, preguntas - página 2586

 
Slava:

Empiece por leer el artículo https://www.mql5.com/ru/articles/239

Léalo. Pero no he visto ninguna respuesta, por qué CopyTime(_Symbol,PERIOD_M15,D'2015.01.01',100000,time); lee 30k barras en lugar de 100k barras en el probador. Al mismo tiempo en el terminal se lee todo correctamente.
 
elibrarius:
Lee. Sin embargo, no he recibido una respuesta, por qué el probador de CopyTime ha calculado 30 bares en lugar de 100 000 bares. Al mismo tiempo, en el terminal, se lee todo correctamente.

El historial de los instrumentos utilizados es descargado por el probador desde el terminal del cliente (¡no desde el servidor de operaciones!) automáticamente al acceder por primera vez a este instrumento.

El agente de pruebas descarga sólo el historial que falta con un pequeño margen para proporcionar los datos necesarios sobre el historial para calcular los indicadores al inicio de las pruebas. La cantidad mínima de historial que debe descargarse del servidor de operaciones para los plazos D1 y menores es de un año. Así, si usted comienza a probar en el intervalo 2010.11.01-2010.12.01 (probando en el intervalo de un mes) con el período M15 (cada barra es de 15 minutos), el terminal solicitará el historial de todo el año 2010. Para el marco temporal semanal, solicitaremos el historial de 100 barras, lo que equivale a unos dos años (hay 52 semanas en un año). Para las pruebas en el marco temporal mensual, el agente solicitará el historial de 8 años (12 meses * 8 años = 96 meses).


Resumen

En la configuración de las pruebas, establezca el plazo mensual

 
Slava:

El historial de los símbolos utilizados es descargado por el probador automáticamente desde el terminal del cliente (¡no desde el servidor comercial!) la primera vez que accede a este símbolo.

El agente de pruebas descarga sólo el historial que falta con un pequeño margen, a fin de proporcionar los datos necesarios sobre el historial para calcular los indicadores en el momento de la prueba. La cantidad mínima de historial que debe descargarse del servidor de operaciones para los plazos D1 y menores es de un año. Así, si usted comienza a probar en el intervalo 2010.11.01-2010.12.01 (probando en el intervalo de un mes) con el período M15 (cada barra es de 15 minutos), el terminal solicitará el historial de todo el año 2010. Para el marco temporal semanal, solicitaremos el historial de 100 barras, lo que equivale a unos dos años (hay 52 semanas en un año). Para las pruebas en el marco temporal mensual, el agente solicitará el historial de 8 años (12 meses * 8 años = 96 meses).


Resumen

En la configuración de las pruebas, establezca el plazo mensual

Está claro: ahorra recursos.

¿Y si quiero hacer pruebas en M15, pero necesito varios años de datos (para entrenar una red neuronal)? ¿Debemos guardar las barras en nuestros propios archivos?

 
Roman:

memcpy utilizado como se muestra en elartículo de ejemplode Renate.
El uso de otras funciones de copia provoca los mismos problemas.
El comportamiento con estas funciones se describe en este post y en este
Se han probado todas las funciones de copia posibles.

¿Qué sabes de compartir datos de varios hilos?

 
Ilyas:

¿Qué sabes de la compartición de datos multihilo?

El código utiliza lock_guard
Pero si se comenta, no hay ningún cambio
.

recursive_mutex mtx;
const wchar_t* data;
bool success ;
                
while (condition)
{
        
   if (DataAvailable())
   {
      lock_guard<recursive_mutex> locker(mtx);
      success = ReadData();
   }
        
   if (success)
   {
      lock_guard<recursive_mutex> locker(mtx);
      data = getData();
                
      memcpy(out, data, wcslen(data) * (sizeof(char)*3));
   }
        
   Sleep(1);
}
Todavía comenzó a filtrarse, pero es comprensible por qué, debido al tamaño incorrecto de
Archivos adjuntos:
222.PNG  13 kb
 
elibrarius:

Ya veo: ahorro de recursos.

¿Y si necesito hacer pruebas en M15, pero necesito datos de varios años (para entrenar una red neuronal)? ¿Necesita almacenar las barras en sus archivos?

Sólo tenemos que esperar:

input int InpBars = 100000;

void OnTick()
{  int bars = Bars(_Symbol, _Period);
   if(bars < InpBars) return;

}
 
elibrarius:

Ya veo: ahorro de recursos.

Pero, ¿qué hacer si tengo que probar en M15, pero necesito datos de varios años (para entrenar una red neuronal)? ¿Debemos guardar las barras en nuestros propios archivos?

¿Cuál es el problema? Puede acceder a los datos de cualquier periodo de tiempo.
 
Slava:
¿Cuál es el problema? Puede acceder a los datos de cualquier periodo de tiempo.

Si ejecuto la prueba en M15, porque la operación en el probador será en M15, no podré contar 100000 barras del historial. Pero tenemos que probar el comercio en M15.

Si lo ejecuto en Мonthew para tener un historial durante 8 años, no podré comerciar más que una vez al mes.

 
elibrarius:

Si ejecuto la prueba en M15, porque la operación en el probador será en M15, no podré contar 100.000 barras del historial. Y tengo que probar el comercio en M15.

Si lo ejecuto en Мonthew para tener un historial durante 8 años, entonces no podré comerciar más que una vez al mes.

¿Por qué no?

 
Alexey Viktorov:

¿Por qué?

Se están probando los precios de apertura. La garrapata vendrá una vez al mes.
Si se ejecuta en todos los ticks reales, se puede con un fuerte rediseño y complicación del código. También desperdiciará recursos. Creo que sería más fácil leer las barras de los archivos.
Razón de la queja: