Slava: Libertar espaço em disco. Os registos são apagados se o espaço em disco for inferior a 500 megabytes
Como são limpas? Onde posso obter informações sobre o algoritmo de limpeza? Onde está a mensagem de que os registos foram limpos?
Como trabalhar com o programa se ele não faz o que se espera dele? - Estamos também a falar de MT5, e não apenas de Expert Advisor.
No meu exemplo específico, podemos ver nos registos que as carraças são ignoradas. O que é que um utilizador deve pensar neste caso? Que pensamentos puros e brilhantes podem surgir sem ser encobertos por uma linguagem grosseira?
No modo visual do testador, a posição do controlo de velocidade é memorizada. Uma vez, fixei-o no máximo. Depois, tenho um EA pesado - o visualizador fica pendurado.
Tenho de fazer um EA fictício e pô-lo a funcionar no visualizador e mover o selector um pouco para trás. Uma pesada EA não é pendurada depois disso.
É possível definir a posição do cursor com antecedência (como é no MT4)?
Durante uma única execução sem visualização, eu dirijo o Expert Advisor, que executa muitas operações, preenchendo o registo com mensagens apropriadas (o próprio testador gosta de as emitir). Após o backtest (ou imediatamente após premir Parar), mudo para o separador Registo e vejo os registos continuarem a ser exibidos. Este é o primeiro disparate, uma vez que o backtest acabou, porque não mostrar o fim dos troncos?
Não estou interessado nos registos e clicar em "Eliminar registos". Depois disso, o tronco é limpo e... continua a encher-se de registos antigos!
Como são limpas? Onde posso obter informações sobre o algoritmo de limpeza? Onde está a mensagem de que os registos foram limpos?
Como trabalhar com o programa se ele não faz o que se espera dele? - Estamos também a falar de MT5, e não apenas de Expert Advisor.
No meu exemplo particular, é possível ver nos registos que os carrapatos são saltados. O que é que um utilizador deve pensar neste caso? Que pensamentos puros e brilhantes podem surgir sem ser encobertos por uma linguagem grosseira?
Nunca tinha olhado para os registos do agente testador antes.
A mensagem sobre a limpeza do registo que você mesmo mostrou.
Se analisar os registos do testador, então é a priori considerado um utilizador experiente. Um feiticeiro deve estar sempre de olho na sua ferramenta. O Windows Explorer mostra sempre uma unidade com pouco espaço livre a vermelho
BTW mesmo que tenha um indicador de pressão dos pneus no painel de instrumentos, este não cancela de forma alguma uma inspecção visual do veículo antes de conduzir
Durante uma única execução sem visualização, dirijo um Expert Advisor que executa muitas operações, entupindo o registo com mensagens apropriadas (o próprio testador gosta de as emitir). Após o backtest (ou imediatamente após premir Parar), mudo para o separador Registo e vejo os registos continuarem a ser exibidos. Este é o primeiro disparate, uma vez que o backtest acabou, porque não mostrar o fim dos troncos?
Não estou interessado nos registos e clicar em "Eliminar registos". Depois disso, o tronco é limpo e... continua a encher-se de registos antigos!
Sim, é uma boa ideia desactivar a saída para o registo durante um teste sem visualização. Mais frequentemente só se quer ver o resultado final (lucro, tempo de teste, etc.), que é exibido logo no final.
Os detalhes durante o teste podem ser visualizados no modo de visualização. Não vale a pena despejar reactivamente esta "pilha" sem visualização.
Aqui está o código de teste, se estiver interessado.
Penso ter encontrado a causa e uma solução temporária para este problema. É difícil para mim explicar como acontece, mas parece que o tampão de cor interfere e estraga tudo.
Eis o que eu mudei no código fonte e o problema desapareceu
#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);
}
//+------------------------------------------------------------------+
Colocar índice DRAW_COLOR_HISTOGRAM "no fim" para que INDICADOR_COLOR_INDEX fosse o último.
Se o tampão não deve ser preenchido com um valor, deve ser preenchido com PLOT_EMPTY_VALUE
1. Nunca tinha olhado para os registos do agente testador antes.
A mensagem sobre a limpeza do registo foi mostrada por si mesmo.
2. Se estiver a analisar os registos do testador, é, a priori, considerado um utilizador qualificado. Um feiticeiro deve estar sempre de olho na sua ferramenta. O Windows Explorer mostra sempre uma unidade com pouco espaço livre a vermelho
BTW mesmo que o seu painel de instrumentos tenha um indicador de pressão dos pneus, não cancela de forma alguma uma inspecção visual do veículo antes de conduzir
1. Nunca tive de fazer isto porque não era necessário - os registos dos testadores mostravam sempre o que era esperado.
2. Quem se importa com o que o explorador de janelas mostra? Trabalhamos em MT5 e só tem de dizer ao utilizador que não há memória suficiente (ou qualquer outra razão que não permita trabalhar normalmente).
Sim, a razão era que o espaço livre era inferior a 500mb e não só os troncos apareciam sem saltos, mas também não apareciam atrasos durante os testes (não admira que os atrasos apareçam de todo se os troncos aparecem de qualquer forma, independentemente do teste). Mas como é que o utilizador sabe que precisamos de pelo menos 500Mb? Porque não 2Mb, 100Mb, 100500Gb? - O agente/teste deve exibir mensagens sobre problemas que interferem com o funcionamento normal.
E, só precisa de haver uma escolha do que produzir para o diário de bordo.
Penso ter encontrado a causa e uma solução temporária para este problema. É difícil para mim explicar como isto acontece, mas parece que o tampão de cor está a interferir e a estragar tudo.
Eis o que eu mudei no código fonte e o problema desapareceu
Colocar índice DRAW_COLOR_HISTOGRAM "no fim" para que INDICADOR_COLOR_INDEX fosse o último.
Se o tampão não deve ser preenchido com um valor, deve ser preenchido com PLOT_EMPTY_VALUE
Não funcionou:) Ok, não há necessidade de adivinhar, precisamos de obter uma resposta do SD. Tais muletas não deveriam ser aceitáveis de qualquer forma!
É verdade, há, aqui estão eles:
2017.09.05
2017.09.05 11:42:04:04 O diário de bordo foi limpo
2017.09.05 2017.09.05 00:00:00.000 Server MetaTester 5 parado
Não há mais nada lá fora.
Então porque não existe informação completa de impressão() nos registos do testador?
Libertar espaço em disco. Os registos são apagados se o espaço em disco for inferior a 500 megabytes
Como são limpas? Onde posso obter informações sobre o algoritmo de limpeza? Onde está a mensagem de que os registos foram limpos?
Como trabalhar com o programa se ele não faz o que se espera dele? - Estamos também a falar de MT5, e não apenas de Expert Advisor.
No meu exemplo específico, podemos ver nos registos que as carraças são ignoradas. O que é que um utilizador deve pensar neste caso? Que pensamentos puros e brilhantes podem surgir sem ser encobertos por uma linguagem grosseira?
No modo visual do testador, a posição do controlo de velocidade é memorizada. Uma vez, fixei-o no máximo. Depois, tenho um EA pesado - o visualizador fica pendurado.
Tenho de fazer um EA fictício e pô-lo a funcionar no visualizador e mover o selector um pouco para trás. Uma pesada EA não é pendurada depois disso.
É possível definir a posição do cursor com antecedência (como é no MT4)?
Durante uma única execução sem visualização, eu dirijo o Expert Advisor, que executa muitas operações, preenchendo o registo com mensagens apropriadas (o próprio testador gosta de as emitir). Após o backtest (ou imediatamente após premir Parar), mudo para o separador Registo e vejo os registos continuarem a ser exibidos. Este é o primeiro disparate, uma vez que o backtest acabou, porque não mostrar o fim dos troncos?
Não estou interessado nos registos e clicar em "Eliminar registos". Depois disso, o tronco é limpo e... continua a encher-se de registos antigos!
Como são limpas? Onde posso obter informações sobre o algoritmo de limpeza? Onde está a mensagem de que os registos foram limpos?
Como trabalhar com o programa se ele não faz o que se espera dele? - Estamos também a falar de MT5, e não apenas de Expert Advisor.
No meu exemplo particular, é possível ver nos registos que os carrapatos são saltados. O que é que um utilizador deve pensar neste caso? Que pensamentos puros e brilhantes podem surgir sem ser encobertos por uma linguagem grosseira?
Nunca tinha olhado para os registos do agente testador antes.
A mensagem sobre a limpeza do registo que você mesmo mostrou.
Se analisar os registos do testador, então é a priori considerado um utilizador experiente. Um feiticeiro deve estar sempre de olho na sua ferramenta. O Windows Explorer mostra sempre uma unidade com pouco espaço livre a vermelho
BTW mesmo que tenha um indicador de pressão dos pneus no painel de instrumentos, este não cancela de forma alguma uma inspecção visual do veículo antes de conduzir
Durante uma única execução sem visualização, dirijo um Expert Advisor que executa muitas operações, entupindo o registo com mensagens apropriadas (o próprio testador gosta de as emitir). Após o backtest (ou imediatamente após premir Parar), mudo para o separador Registo e vejo os registos continuarem a ser exibidos. Este é o primeiro disparate, uma vez que o backtest acabou, porque não mostrar o fim dos troncos?
Não estou interessado nos registos e clicar em "Eliminar registos". Depois disso, o tronco é limpo e... continua a encher-se de registos antigos!
Sim, é uma boa ideia desactivar a saída para o registo durante um teste sem visualização. Mais frequentemente só se quer ver o resultado final (lucro, tempo de teste, etc.), que é exibido logo no final.
Os detalhes durante o teste podem ser visualizados no modo de visualização. Não vale a pena despejar reactivamente esta "pilha" sem visualização.
Aqui está o código de teste, se estiver interessado.
Penso ter encontrado a causa e uma solução temporária para este problema. É difícil para mim explicar como acontece, mas parece que o tampão de cor interfere e estraga tudo.
Eis o que eu mudei no código fonte e o problema desapareceu
Porque é que o provador faz isto?
1. Nunca tinha olhado para os registos do agente testador antes.
A mensagem sobre a limpeza do registo foi mostrada por si mesmo.
2. Se estiver a analisar os registos do testador, é, a priori, considerado um utilizador qualificado. Um feiticeiro deve estar sempre de olho na sua ferramenta. O Windows Explorer mostra sempre uma unidade com pouco espaço livre a vermelho
BTW mesmo que o seu painel de instrumentos tenha um indicador de pressão dos pneus, não cancela de forma alguma uma inspecção visual do veículo antes de conduzir
1. Nunca tive de fazer isto porque não era necessário - os registos dos testadores mostravam sempre o que era esperado.
2. Quem se importa com o que o explorador de janelas mostra? Trabalhamos em MT5 e só tem de dizer ao utilizador que não há memória suficiente (ou qualquer outra razão que não permita trabalhar normalmente).
Sim, a razão era que o espaço livre era inferior a 500mb e não só os troncos apareciam sem saltos, mas também não apareciam atrasos durante os testes (não admira que os atrasos apareçam de todo se os troncos aparecem de qualquer forma, independentemente do teste). Mas como é que o utilizador sabe que precisamos de pelo menos 500Mb? Porque não 2Mb, 100Mb, 100500Gb? - O agente/teste deve exibir mensagens sobre problemas que interferem com o funcionamento normal.
E, só precisa de haver uma escolha do que produzir para o diário de bordo.
Penso ter encontrado a causa e uma solução temporária para este problema. É difícil para mim explicar como isto acontece, mas parece que o tampão de cor está a interferir e a estragar tudo.
Eis o que eu mudei no código fonte e o problema desapareceu