Slava: Geben Sie Speicherplatz frei. Die Protokolle werden gelöscht, wenn der Speicherplatz weniger als 500 Megabyte beträgt.
Wie werden sie gereinigt? Wo kann ich mich über den Reinigungsalgorithmus informieren? Wo befindet sich die Meldung, dass die Protokolle bereinigt wurden?
Wie kann man mit dem Programm arbeiten, wenn es nicht das tut, was man von ihm erwartet? - Wir sprechen auch über MT5, nicht nur über Expert Advisor.
In meinem konkreten Beispiel können wir in den Protokollen sehen, dass die Häkchen übersprungen werden. Was soll ein Benutzer in diesem Fall denken? Welche hellen, reinen Gedanken können ungetrübt durch unflätige Sprache entstehen?
Im visuellen Modus des Prüfgeräts wird die Position des Geschwindigkeitsschiebers gespeichert. Ich habe ihn einmal auf Maximum gestellt. Dann lasse ich einen schweren EA laufen - der Visualizer bleibt hängen.
Ich muss einen Dummy-EA erstellen und ihn im Visualizer laufen lassen und den Schieberegler ein wenig zurückschieben. Ein schwerer EA bleibt danach nicht hängen.
Ist es möglich, die Position des Schiebereglers im Voraus festzulegen (wie in MT4)?
Während eines einzelnen Durchlaufs ohne Visualisierung führe ich einen Expert Advisor aus, der viele Trades durchführt und das Protokoll mit entsprechenden Meldungen verstopft (der Tester selbst gibt sie gerne aus). Nach dem Backtest (oder unmittelbar nach dem Drücken von Stop) wechsle ich zur Registerkarte Log und sehe, dass die Logs weiterhin angezeigt werden. Das ist der erste Unsinn, denn der Backtest ist vorbei, warum nicht das Ende der Protokolle anzeigen?
Ich interessiere mich nicht für die Protokolle und klicke auf "Protokolle löschen". Danach wird das Protokoll geleert und... füllt sich weiter mit alten Platten!
Wie werden sie gereinigt? Wo kann ich mich über den Reinigungsalgorithmus informieren? Wo befindet sich die Meldung, dass die Protokolle bereinigt wurden?
Wie kann man mit dem Programm arbeiten, wenn es nicht das tut, was man von ihm erwartet? - Wir sprechen auch über MT5, nicht nur über Expert Advisor.
In meinem speziellen Beispiel können Sie in den Protokollen sehen, dass Ticks übersprungen werden. Was soll ein Benutzer in diesem Fall denken? Welche hellen, reinen Gedanken können ungetrübt durch unflätige Sprache entstehen?
Sie haben sich die Protokolle des Prüfers noch nie angesehen.
Die Meldung über das Löschen der Protokolle ist die, die Sie selbst angezeigt haben.
Wenn Sie die Protokolle des Prüfers analysieren, gelten Sie a priori als erfahrener Benutzer. Ein Zauberer muss immer ein Auge auf sein Werkzeug haben. Windows Explorer zeigt ein Laufwerk mit wenig freiem Speicherplatz immer in rot an
Übrigens: Auch wenn Sie eine Reifendruckanzeige auf Ihrem Armaturenbrett haben, macht sie eine Sichtprüfung des Fahrzeugs vor der Fahrt keineswegs überflüssig.
Während eines einzelnen Durchlaufs ohne Visualisierung führe ich einen Expert Advisor aus, der viele Trades durchführt und das Protokoll mit entsprechenden Meldungen verstopft (der Tester selbst gibt sie gerne aus). Nach dem Backtest (oder unmittelbar nach dem Drücken von Stop) wechsle ich zur Registerkarte Log und sehe, dass die Logs weiterhin angezeigt werden. Das ist der erste Unsinn, denn der Backtest ist vorbei, warum nicht das Ende der Protokolle anzeigen?
Ich interessiere mich nicht für die Protokolle und klicke auf "Protokolle löschen". Danach wird das Protokoll geleert und... füllt sich weiter mit alten Platten!
Ja, es ist eine gute Idee, die Ausgabe in das Protokoll während eines Tests ohne Visualisierung zu deaktivieren. Meistens möchte man nur das Endergebnis sehen (Gewinn, Testzeit usw.), das ganz am Ende angezeigt wird.
Details während der Prüfung können im Visualisierungsmodus eingesehen werden. Es hat keinen Sinn, diesen "Haufen" reaktiv zu entsorgen, ohne ihn zu visualisieren.
Hier ist der Testcode, wenn Sie daran interessiert sind.
Ich glaube, ich habe die Ursache und eine vorübergehende Lösung für dieses Problem gefunden. Es fällt mir schwer zu erklären, wie das passiert, aber es scheint, dass der Farbpuffer alles durcheinander bringt.
Ich habe folgende Änderungen im Quellcode vorgenommen, und das Problem ist verschwunden
#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);
}
//+------------------------------------------------------------------+
Setzen Sie den Index DRAW_COLOR_HISTOGRAM "an das Ende", so dass INDICATOR_COLOR_INDEX der letzte war.
Wenn der Puffer nicht mit einem Wert gefüllt werden soll, muss er mit PLOT_EMPTY_VALUE gefüllt werden
1. Sie haben sich die Protokolle des Prüfers noch nie angesehen.
Die Meldung zum Löschen des Protokolls wurde von Ihnen selbst angezeigt.
2. Wenn Sie die Protokolle des Prüfers analysieren, gelten Sie a priori als erfahrener Benutzer. Ein Zauberer muss immer ein Auge auf sein Werkzeug haben. Windows Explorer zeigt ein Laufwerk mit wenig freiem Speicherplatz immer in rot an
Übrigens: Auch wenn Ihr Armaturenbrett eine Reifendruckanzeige hat, macht dies eine Sichtprüfung des Fahrzeugs vor der Fahrt keineswegs überflüssig.
1. Ich musste dies nie tun, weil es nicht notwendig war - die Testerprotokolle zeigten immer, was erwartet wurde.
2. Wen interessiert schon, was der Windows-Explorer anzeigt? Wir arbeiten mit MT5 und es muss dem Benutzer nur mitteilen, dass nicht genügend Speicher vorhanden ist (oder ein anderer Grund, der ein normales Arbeiten verhindert).
Ja, der Grund dafür war, dass der freie Speicherplatz weniger als 500 MB betrug und nicht nur die Protokolle vollständig und ohne Aussetzer gedruckt wurden, sondern auch die Verzögerungen während des Tests verschwanden (es ist unklar, warum überhaupt Verzögerungen auftreten, wenn die Protokolle unabhängig vom Test ohnehin gedruckt werden). Aber woher weiß der Benutzer, dass wir mindestens 500Mb benötigen? Warum nicht 2Mb, 100Mb, 100500Gb? - Der Agent/Tester sollte Meldungen über Probleme anzeigen, die den normalen Betrieb stören.
Und es muss einfach eine Auswahlmöglichkeit geben, was in das Protokoll ausgegeben werden soll.
Ich glaube, ich habe die Ursache und eine vorübergehende Lösung für dieses Problem gefunden. Es fällt mir schwer zu erklären, wie das passiert, aber es scheint, dass der Farbpuffer stört und alles durcheinander bringt.
Ich habe folgende Änderungen im Quellcode vorgenommen, und das Problem ist verschwunden
Setzen Sie den Index DRAW_COLOR_HISTOGRAM "an das Ende", so dass INDICATOR_COLOR_INDEX der letzte war.
Wenn der Puffer nicht mit einem Wert gefüllt werden soll, muss er mit PLOT_EMPTY_VALUE gefüllt werden
Es hat nicht funktioniert:) Ok, wir brauchen nicht zu raten, wir müssen eine Antwort vom SD bekommen. Solche Krücken sollten ohnehin nicht akzeptabel sein!
Das stimmt, es gibt sie, hier sind sie:
2017.09.05
2017.09.05 11:42:04:04 Logger-Protokoll wurde bereinigt
2017.09.05 2017.09.05 00:00:00.000 Server MetaTester 5 gestoppt
Es gibt nichts anderes da draußen.
Warum gibt es dann keine vollständigen Print()-Informationen in den Testerprotokollen?
Geben Sie Speicherplatz frei. Die Protokolle werden gelöscht, wenn der Speicherplatz weniger als 500 Megabyte beträgt.
Wie werden sie gereinigt? Wo kann ich mich über den Reinigungsalgorithmus informieren? Wo befindet sich die Meldung, dass die Protokolle bereinigt wurden?
Wie kann man mit dem Programm arbeiten, wenn es nicht das tut, was man von ihm erwartet? - Wir sprechen auch über MT5, nicht nur über Expert Advisor.
In meinem konkreten Beispiel können wir in den Protokollen sehen, dass die Häkchen übersprungen werden. Was soll ein Benutzer in diesem Fall denken? Welche hellen, reinen Gedanken können ungetrübt durch unflätige Sprache entstehen?
Im visuellen Modus des Prüfgeräts wird die Position des Geschwindigkeitsschiebers gespeichert. Ich habe ihn einmal auf Maximum gestellt. Dann lasse ich einen schweren EA laufen - der Visualizer bleibt hängen.
Ich muss einen Dummy-EA erstellen und ihn im Visualizer laufen lassen und den Schieberegler ein wenig zurückschieben. Ein schwerer EA bleibt danach nicht hängen.
Ist es möglich, die Position des Schiebereglers im Voraus festzulegen (wie in MT4)?
Während eines einzelnen Durchlaufs ohne Visualisierung führe ich einen Expert Advisor aus, der viele Trades durchführt und das Protokoll mit entsprechenden Meldungen verstopft (der Tester selbst gibt sie gerne aus). Nach dem Backtest (oder unmittelbar nach dem Drücken von Stop) wechsle ich zur Registerkarte Log und sehe, dass die Logs weiterhin angezeigt werden. Das ist der erste Unsinn, denn der Backtest ist vorbei, warum nicht das Ende der Protokolle anzeigen?
Ich interessiere mich nicht für die Protokolle und klicke auf "Protokolle löschen". Danach wird das Protokoll geleert und... füllt sich weiter mit alten Platten!
Wie werden sie gereinigt? Wo kann ich mich über den Reinigungsalgorithmus informieren? Wo befindet sich die Meldung, dass die Protokolle bereinigt wurden?
Wie kann man mit dem Programm arbeiten, wenn es nicht das tut, was man von ihm erwartet? - Wir sprechen auch über MT5, nicht nur über Expert Advisor.
In meinem speziellen Beispiel können Sie in den Protokollen sehen, dass Ticks übersprungen werden. Was soll ein Benutzer in diesem Fall denken? Welche hellen, reinen Gedanken können ungetrübt durch unflätige Sprache entstehen?
Sie haben sich die Protokolle des Prüfers noch nie angesehen.
Die Meldung über das Löschen der Protokolle ist die, die Sie selbst angezeigt haben.
Wenn Sie die Protokolle des Prüfers analysieren, gelten Sie a priori als erfahrener Benutzer. Ein Zauberer muss immer ein Auge auf sein Werkzeug haben. Windows Explorer zeigt ein Laufwerk mit wenig freiem Speicherplatz immer in rot an
Übrigens: Auch wenn Sie eine Reifendruckanzeige auf Ihrem Armaturenbrett haben, macht sie eine Sichtprüfung des Fahrzeugs vor der Fahrt keineswegs überflüssig.
Während eines einzelnen Durchlaufs ohne Visualisierung führe ich einen Expert Advisor aus, der viele Trades durchführt und das Protokoll mit entsprechenden Meldungen verstopft (der Tester selbst gibt sie gerne aus). Nach dem Backtest (oder unmittelbar nach dem Drücken von Stop) wechsle ich zur Registerkarte Log und sehe, dass die Logs weiterhin angezeigt werden. Das ist der erste Unsinn, denn der Backtest ist vorbei, warum nicht das Ende der Protokolle anzeigen?
Ich interessiere mich nicht für die Protokolle und klicke auf "Protokolle löschen". Danach wird das Protokoll geleert und... füllt sich weiter mit alten Platten!
Ja, es ist eine gute Idee, die Ausgabe in das Protokoll während eines Tests ohne Visualisierung zu deaktivieren. Meistens möchte man nur das Endergebnis sehen (Gewinn, Testzeit usw.), das ganz am Ende angezeigt wird.
Details während der Prüfung können im Visualisierungsmodus eingesehen werden. Es hat keinen Sinn, diesen "Haufen" reaktiv zu entsorgen, ohne ihn zu visualisieren.
Hier ist der Testcode, wenn Sie daran interessiert sind.
Ich glaube, ich habe die Ursache und eine vorübergehende Lösung für dieses Problem gefunden. Es fällt mir schwer zu erklären, wie das passiert, aber es scheint, dass der Farbpuffer alles durcheinander bringt.
Ich habe folgende Änderungen im Quellcode vorgenommen, und das Problem ist verschwunden
Warum tut der Prüfer das?
1. Sie haben sich die Protokolle des Prüfers noch nie angesehen.
Die Meldung zum Löschen des Protokolls wurde von Ihnen selbst angezeigt.
2. Wenn Sie die Protokolle des Prüfers analysieren, gelten Sie a priori als erfahrener Benutzer. Ein Zauberer muss immer ein Auge auf sein Werkzeug haben. Windows Explorer zeigt ein Laufwerk mit wenig freiem Speicherplatz immer in rot an
Übrigens: Auch wenn Ihr Armaturenbrett eine Reifendruckanzeige hat, macht dies eine Sichtprüfung des Fahrzeugs vor der Fahrt keineswegs überflüssig.
1. Ich musste dies nie tun, weil es nicht notwendig war - die Testerprotokolle zeigten immer, was erwartet wurde.
2. Wen interessiert schon, was der Windows-Explorer anzeigt? Wir arbeiten mit MT5 und es muss dem Benutzer nur mitteilen, dass nicht genügend Speicher vorhanden ist (oder ein anderer Grund, der ein normales Arbeiten verhindert).
Ja, der Grund dafür war, dass der freie Speicherplatz weniger als 500 MB betrug und nicht nur die Protokolle vollständig und ohne Aussetzer gedruckt wurden, sondern auch die Verzögerungen während des Tests verschwanden (es ist unklar, warum überhaupt Verzögerungen auftreten, wenn die Protokolle unabhängig vom Test ohnehin gedruckt werden). Aber woher weiß der Benutzer, dass wir mindestens 500Mb benötigen? Warum nicht 2Mb, 100Mb, 100500Gb? - Der Agent/Tester sollte Meldungen über Probleme anzeigen, die den normalen Betrieb stören.
Und es muss einfach eine Auswahlmöglichkeit geben, was in das Protokoll ausgegeben werden soll.
Ich glaube, ich habe die Ursache und eine vorübergehende Lösung für dieses Problem gefunden. Es fällt mir schwer zu erklären, wie das passiert, aber es scheint, dass der Farbpuffer stört und alles durcheinander bringt.
Ich habe folgende Änderungen im Quellcode vorgenommen, und das Problem ist verschwunden