Slava: Libera espacio en el disco. Los registros se borran si el espacio en disco es inferior a 500 megas
¿Cómo se limpian? ¿Dónde puedo encontrar información sobre el algoritmo de limpieza? ¿Dónde está el mensaje de que se han limpiado los registros?
¿Cómo trabajar con el programa si no hace lo que se espera de él? - Estamos hablando de MT5 también, no sólo de Expert Advisor.
En mi ejemplo concreto podemos ver en los registros que los ticks se saltan. ¿Qué debe pensar un usuario en este caso? ¿Qué pensamientos puros y brillantes pueden surgir sin que el lenguaje soez los empañe?
En el modo visual del comprobador, se memoriza la posición del deslizador de velocidad. Una vez lo puse al máximo. Entonces ejecuto un EA pesado - el visualizador se cuelga.
Tengo que hacer un EA ficticio y ejecutarlo en el visualizador y mover el deslizador un poco hacia atrás. Un EA pesado no se cuelga después de eso.
¿Es posible fijar la posición del deslizador por adelantado (como en MT4)?
Durante una única ejecución sin visualización, ejecuto un Asesor Experto que realiza muchas operaciones, obstruyendo el registro con los mensajes correspondientes (al propio probador le gusta emitirlos). Después de la prueba retrospectiva (o inmediatamente después de pulsar Stop) cambio a la pestaña Log y veo que los registros siguen apareciendo. Esta es la primera tontería, ya que el backtest ha terminado, ¿por qué no mostrar el final de los registros?
No me interesan los registros y hago clic en "Eliminar registros". Después de lo cual el registro se borra y... ¡sigue llenándose de discos viejos!
¿Cómo se limpian? ¿Dónde puedo encontrar información sobre el algoritmo de limpieza? ¿Dónde está el mensaje de que se han limpiado los registros?
¿Cómo trabajar con el programa si no hace lo que se espera de él? - Estamos hablando de MT5 también, no sólo de Expert Advisor.
En mi ejemplo particular, se puede ver en los registros que los ticks se saltan. ¿Qué debe pensar un usuario en este caso? ¿Qué pensamientos puros y brillantes pueden surgir sin que el lenguaje soez los empañe?
Nunca has mirado los registros del agente probador.
El mensaje sobre la limpieza de los registros es el que tú mismo has mostrado.
Si analiza los registros del probador, entonces se le considera a priori un usuario experto. Un mago debe vigilar siempre su herramienta. El Explorador de Windows siempre muestra en rojo una unidad con poco espacio libre
Por cierto, aunque tenga un indicador de la presión de los neumáticos en el salpicadero, esto no anula en absoluto la inspección visual del vehículo antes de conducir.
Durante una única ejecución sin visualización, ejecuto el Asesor Experto, que realiza muchas operaciones, llenando el registro con los mensajes apropiados (al propio probador le gusta emitirlos). Después de la prueba retrospectiva (o inmediatamente después de pulsar Stop) cambio a la pestaña Log y veo que los registros siguen apareciendo. Esta es la primera tontería, ya que el backtest ha terminado, ¿por qué no mostrar el final de los registros?
No me interesan los registros y hago clic en "Eliminar registros". Después de lo cual el registro se borra y... ¡sigue llenándose de discos viejos!
Sí, es una buena idea desactivar la salida al registro durante una prueba sin visualización. Lo más frecuente es que sólo quiera ver el resultado final (beneficio, tiempo de prueba, etc.), que se muestra al final.
Los detalles durante la prueba se pueden ver en el modo de visualización. No tiene sentido verter esta "pila" de forma reactiva sin visualizarla.
Creo que he encontrado la causa y una solución temporal a este problema. Me resulta difícil explicar cómo ocurre, pero parece que el buffer de color interfiere y lo desordena todo.
Esto es lo que cambié en el código fuente y el problema desapareció
#property indicator_separate_window#property indicator_plots3#property indicator_buffers4//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+inputbool inpUseArrows=false;
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+double bufGisto[];
double bufGistoColor[];
double bufArrowUp[];
double bufArrowDn[];
//---constdoubleEMPTY=EMPTY_VALUE;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- Размечаем массив цветовcolor colors[2];
colors[ 0 ]= clrLime;
colors[ 1 ] = clrRed;
//--- Устанавливаем параметры графических серий// SetPlotParametersColorHistogram(0,0,bufGisto,bufGistoColor,false,"test gisto",colors,EMPTY,2);
SetPlotParametersColorHistogram(2,2,bufGisto,bufGistoColor,false,"test gisto",colors,EMPTY,2);//--- Проверяем, нужно ли отображать объемы// if(inpUseArrows) // Если отображать нужно
// {// SetPlotParametersArrow(1,2,bufArrowUp,false,"test up",EMPTY,clrLime,233,10);// SetPlotParametersArrow(2,3,bufArrowDn,false,"test dn",EMPTY,clrRed,234,-10);
SetPlotParametersArrow(0,0,bufArrowUp,false,"test up",EMPTY,clrLime,233,10);
SetPlotParametersArrow(1,1,bufArrowDn,false,"test dn",EMPTY,clrRed,234,-10);// }//---IndicatorSetInteger(INDICATOR_DIGITS,0);
//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
if(inpUseArrows)
{
ArrayInitialize(bufArrowUp,EMPTY);
ArrayInitialize(bufArrowDn,EMPTY);
}
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---if(prev_calculated==0)
{
ArrayInitialize(bufGisto,EMPTY);
//---if(inpUseArrows)
{
ArrayInitialize(bufArrowUp,EMPTY);
ArrayInitialize(bufArrowDn,EMPTY);
}
//---for(int i=0; i<rates_total; i++)
{
bufGisto[i]=(open[i]-close[i])/_Point;
bufGistoColor[i]=(bufGisto[i]<0) ? 1 : 0;
//---/* if(inpUseArrows)
{
if(bufGisto[i]>20)
bufArrowDn[i]=bufGisto[i];
else if(bufGisto[i]<-20)
bufArrowUp[i]=bufGisto[i];
}
*/if(inpUseArrows)
{
if(bufGisto[i]>20)
bufArrowDn[i]=bufGisto[i];
else bufArrowDn[i] = EMPTY;
if(bufGisto[i]<-20)
bufArrowUp[i]=bufGisto[i];
else bufArrowUp[i] = EMPTY;
}
}
}
elseif(rates_total>prev_calculated)
{
bufGisto[rates_total-1]=EMPTY;
//---if(inpUseArrows)
{
bufArrowUp[ rates_total-1 ] = EMPTY;
bufArrowDn[ rates_total-1 ] = EMPTY;
}
}
//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+//| Параметры графического построения: цветная гист-а от 0 линии |//+------------------------------------------------------------------+void SetPlotParametersColorHistogram(constint plotIndex,// Индекс графической серииconstint bufferNum,// Номер первого буфера серииdouble& value[], // Буфер значенийdouble& clr[], // Буфер цветовconstbool asSeries, // Флаг нумерации как в таймсерииconststring label, // Имя серииconstcolor& colors[], // Цвета линииconstdouble emptyValue = EMPTY_VALUE, // Пустые значения серииconstint width = 0, // Толщина линииconstENUM_LINE_STYLE style = STYLE_SOLID, // Стиль линииconstint drawBegin = 0, // Количество баров без отрисовкиconstint shift=0// Сдвиг построения в барах
)
{
//--- Привязываем буферыSetIndexBuffer(bufferNum,value,INDICATOR_DATA);
SetIndexBuffer(bufferNum+1,clr,INDICATOR_COLOR_INDEX);
//--- Устанавливаем порядок нумерации в массивах-буферахArraySetAsSeries(value,asSeries);
ArraySetAsSeries(clr,asSeries);
//--- Устанавливаем тип графического построенияPlotIndexSetInteger(plotIndex,PLOT_DRAW_TYPE,DRAW_COLOR_HISTOGRAM);
//--- Устанавливаем имя графической серииPlotIndexSetString(plotIndex,PLOT_LABEL,label);
//--- Устанавливаем пустые значения в буферахPlotIndexSetDouble(plotIndex,PLOT_EMPTY_VALUE,emptyValue);
//--- Устанавливаем количество цветов индикатораconstint size=ArraySize(colors);
PlotIndexSetInteger(plotIndex,PLOT_COLOR_INDEXES,size);
//--- Устанавливаем цвета индикатораfor(int i=0; i<size; i++)
PlotIndexSetInteger(plotIndex,PLOT_LINE_COLOR,i,colors[i]);
//--- Устанавливаем толщину линииPlotIndexSetInteger(plotIndex,PLOT_LINE_WIDTH,width);
//--- Устанавливаем стиль линииPlotIndexSetInteger(plotIndex,PLOT_LINE_STYLE,style);
//--- Устанавливаем количество баров без отрисовки и значений в DataWindowPlotIndexSetInteger(plotIndex,PLOT_DRAW_BEGIN,drawBegin);
//--- Устанавливаем сдвиг графического построения по оси времени в барахPlotIndexSetInteger(plotIndex,PLOT_SHIFT,shift);
}
//+------------------------------------------------------------------+//| Параметры графического построения: стрелки |//+------------------------------------------------------------------+void SetPlotParametersArrow(constint plotIndex,// Индекс графической серииconstint bufferNum,// Номер первого буфера серииdouble &value[],// Буфер значенийconstbool asSeries,// Флаг нумерации как в таймсерииconststring label,// Имя серииconstdouble emptyValue=EMPTY_VALUE,// Пустые значения серииconstcolor clr=clrRed,// Цвет стрелокconstint arrowCode= 159,// Код стрелокconstint arrowShift = 0,// Сдвиг стрелок по вертикалиconstint width=0,// Толщина стрелокconstint drawBegin=0,// Количество баров без отрисовкиconstint shift=0// Сдвиг построения в барах
)
{
//--- Привязываем буферыSetIndexBuffer(bufferNum,value,INDICATOR_DATA);
//--- Устанавливаем порядок нумерации в массивах-буферахArraySetAsSeries(value,asSeries);
//--- Устанавливаем тип графического построенияPlotIndexSetInteger(plotIndex,PLOT_DRAW_TYPE,DRAW_ARROW);
//--- Устанавливаем имя графической серииPlotIndexSetString(plotIndex,PLOT_LABEL,label);
//--- Устанавливаем пустые значения в буферахPlotIndexSetDouble(plotIndex,PLOT_EMPTY_VALUE,emptyValue);
//--- Устанавливаем цвет индикатораPlotIndexSetInteger(plotIndex,PLOT_LINE_COLOR,0,clr);
//--- Устанавливаем код стрелокPlotIndexSetInteger(plotIndex,PLOT_ARROW,arrowCode);
//--- Устанавливаем смещение стрелок по вертикалиPlotIndexSetInteger(plotIndex,PLOT_ARROW_SHIFT,arrowShift);
//--- Устанавливаем толщину стрелокPlotIndexSetInteger(plotIndex,PLOT_LINE_WIDTH,width);
//--- Устанавливаем количество баров без отрисовки и значений в DataWindowPlotIndexSetInteger(plotIndex,PLOT_DRAW_BEGIN,drawBegin);
//--- Устанавливаем сдвиг графического построения по оси времени в барахPlotIndexSetInteger(plotIndex,PLOT_SHIFT,shift);
}
//+------------------------------------------------------------------+
Poner el índice DRAW_COLOR_HISTOGRAM "al final" para que INDICATOR_COLOR_INDEX sea el último.
Si el búfer no se va a rellenar con un valor, debe rellenarse con PLOT_EMPTY_VALUE
1. Nunca ha mirado los registros del agente de pruebas.
El mensaje sobre el borrado del registro es el que tú mismo has mostrado.
2. Si está analizando los registros del probador, a priori se le considera un usuario experto. Un mago debe vigilar siempre su herramienta. El Explorador de Windows siempre muestra en rojo una unidad con poco espacio libre
Por cierto, aunque el salpicadero tenga un indicador de la presión de los neumáticos, esto no anula en absoluto la inspección visual del vehículo antes de conducirlo.
1. Nunca he tenido que hacerlo porque no era necesario: los registros de los probadores siempre mostraban lo que se esperaba.
2. ¿A quién le importa lo que muestra el explorador de Windows? Trabajamos en MT5 y sólo tiene que decirle al usuario que no hay suficiente memoria (o cualquier otra razón que no permita trabajar normalmente).
Sí, la razón fue que el espacio libre era inferior a 500 mb y no sólo los registros se imprimieron completamente sin saltos, sino que los lags desaparecieron durante la prueba (no está claro por qué se producen lags si los registros se imprimen de todos modos independientemente de la prueba). Pero, ¿cómo sabe el usuario que necesitamos al menos 500Mb? ¿Por qué no 2Mb, 100Mb, 100500Gb? - El agente/probador debe mostrar mensajes sobre los problemas que interfieren con el funcionamiento normal.
Y, sólo tiene que haber una opción de lo que la salida al registro.
Creo que he encontrado la causa y una solución temporal a este problema. Me resulta difícil explicar cómo sucede esto, pero parece que el buffer de color está interfiriendo y desordenando todo.
Esto es lo que cambié en el código fuente y el problema desapareció
Poner el índice DRAW_COLOR_HISTOGRAM "al final" para que INDICATOR_COLOR_INDEX sea el último.
Si el búfer no se va a rellenar con un valor, debe rellenarse con PLOT_EMPTY_VALUE
No funcionó:) Ok, no es necesario adivinar, tenemos que obtener una respuesta de la SD. De todos modos, ¡esas muletas no deberían ser aceptables!
Así es, hay, aquí están:
2017.09.05
2017.09.05 11:42:04:04 Se ha limpiado el registro del registrador
2017.09.05 2017.09.05 00:00:00.000 Servidor MetaTester 5 detenido
No hay nada más allá.
Entonces, ¿por qué no hay información completa de Print() en los registros del probador?
Libera espacio en el disco. Los registros se borran si el espacio en disco es inferior a 500 megas
¿Cómo se limpian? ¿Dónde puedo encontrar información sobre el algoritmo de limpieza? ¿Dónde está el mensaje de que se han limpiado los registros?
¿Cómo trabajar con el programa si no hace lo que se espera de él? - Estamos hablando de MT5 también, no sólo de Expert Advisor.
En mi ejemplo concreto podemos ver en los registros que los ticks se saltan. ¿Qué debe pensar un usuario en este caso? ¿Qué pensamientos puros y brillantes pueden surgir sin que el lenguaje soez los empañe?
En el modo visual del comprobador, se memoriza la posición del deslizador de velocidad. Una vez lo puse al máximo. Entonces ejecuto un EA pesado - el visualizador se cuelga.
Tengo que hacer un EA ficticio y ejecutarlo en el visualizador y mover el deslizador un poco hacia atrás. Un EA pesado no se cuelga después de eso.
¿Es posible fijar la posición del deslizador por adelantado (como en MT4)?
Durante una única ejecución sin visualización, ejecuto un Asesor Experto que realiza muchas operaciones, obstruyendo el registro con los mensajes correspondientes (al propio probador le gusta emitirlos). Después de la prueba retrospectiva (o inmediatamente después de pulsar Stop) cambio a la pestaña Log y veo que los registros siguen apareciendo. Esta es la primera tontería, ya que el backtest ha terminado, ¿por qué no mostrar el final de los registros?
No me interesan los registros y hago clic en "Eliminar registros". Después de lo cual el registro se borra y... ¡sigue llenándose de discos viejos!
¿Cómo se limpian? ¿Dónde puedo encontrar información sobre el algoritmo de limpieza? ¿Dónde está el mensaje de que se han limpiado los registros?
¿Cómo trabajar con el programa si no hace lo que se espera de él? - Estamos hablando de MT5 también, no sólo de Expert Advisor.
En mi ejemplo particular, se puede ver en los registros que los ticks se saltan. ¿Qué debe pensar un usuario en este caso? ¿Qué pensamientos puros y brillantes pueden surgir sin que el lenguaje soez los empañe?
Nunca has mirado los registros del agente probador.
El mensaje sobre la limpieza de los registros es el que tú mismo has mostrado.
Si analiza los registros del probador, entonces se le considera a priori un usuario experto. Un mago debe vigilar siempre su herramienta. El Explorador de Windows siempre muestra en rojo una unidad con poco espacio libre
Por cierto, aunque tenga un indicador de la presión de los neumáticos en el salpicadero, esto no anula en absoluto la inspección visual del vehículo antes de conducir.
Durante una única ejecución sin visualización, ejecuto el Asesor Experto, que realiza muchas operaciones, llenando el registro con los mensajes apropiados (al propio probador le gusta emitirlos). Después de la prueba retrospectiva (o inmediatamente después de pulsar Stop) cambio a la pestaña Log y veo que los registros siguen apareciendo. Esta es la primera tontería, ya que el backtest ha terminado, ¿por qué no mostrar el final de los registros?
No me interesan los registros y hago clic en "Eliminar registros". Después de lo cual el registro se borra y... ¡sigue llenándose de discos viejos!
Sí, es una buena idea desactivar la salida al registro durante una prueba sin visualización. Lo más frecuente es que sólo quiera ver el resultado final (beneficio, tiempo de prueba, etc.), que se muestra al final.
Los detalles durante la prueba se pueden ver en el modo de visualización. No tiene sentido verter esta "pila" de forma reactiva sin visualizarla.
Aquí está el código de prueba si te interesa.
Creo que he encontrado la causa y una solución temporal a este problema. Me resulta difícil explicar cómo ocurre, pero parece que el buffer de color interfiere y lo desordena todo.
Esto es lo que cambié en el código fuente y el problema desapareció
¿Por qué hace esto el probador?
1. Nunca ha mirado los registros del agente de pruebas.
El mensaje sobre el borrado del registro es el que tú mismo has mostrado.
2. Si está analizando los registros del probador, a priori se le considera un usuario experto. Un mago debe vigilar siempre su herramienta. El Explorador de Windows siempre muestra en rojo una unidad con poco espacio libre
Por cierto, aunque el salpicadero tenga un indicador de la presión de los neumáticos, esto no anula en absoluto la inspección visual del vehículo antes de conducirlo.
1. Nunca he tenido que hacerlo porque no era necesario: los registros de los probadores siempre mostraban lo que se esperaba.
2. ¿A quién le importa lo que muestra el explorador de Windows? Trabajamos en MT5 y sólo tiene que decirle al usuario que no hay suficiente memoria (o cualquier otra razón que no permita trabajar normalmente).
Sí, la razón fue que el espacio libre era inferior a 500 mb y no sólo los registros se imprimieron completamente sin saltos, sino que los lags desaparecieron durante la prueba (no está claro por qué se producen lags si los registros se imprimen de todos modos independientemente de la prueba). Pero, ¿cómo sabe el usuario que necesitamos al menos 500Mb? ¿Por qué no 2Mb, 100Mb, 100500Gb? - El agente/probador debe mostrar mensajes sobre los problemas que interfieren con el funcionamiento normal.
Y, sólo tiene que haber una opción de lo que la salida al registro.
Creo que he encontrado la causa y una solución temporal a este problema. Me resulta difícil explicar cómo sucede esto, pero parece que el buffer de color está interfiriendo y desordenando todo.
Esto es lo que cambié en el código fuente y el problema desapareció