Fehler, Irrtümer, Fragen - Seite 2586

 
Slava:

Lesen Sie zunächst den Artikel https://www.mql5.com/ru/articles/239

Lesen Sie es. Aber ich habe keine Antwort darauf gefunden, warum CopyTime(_Symbol,PERIOD_M15,D'2015.01.01',100000,time); im Tester 30k Balken anstelle von 100k Balken anzeigt. Gleichzeitig liest er im Terminal alles richtig.
 
elibrarius:
Lesen. Ich habe jedoch keine Antwort darauf erhalten, warum der Tester von CopyTime 30 statt 100 kbars berechnet hat. Gleichzeitig wird im Terminal alles richtig gelesen.

Die Historie für die verwendeten Instrumente wird vom Tester beim ersten Zugriff auf dieses Instrument automatisch vom Client-Terminal (nicht vom Trading-Server!) heruntergeladen.

Der Testagent lädt nur den fehlenden Verlauf mit einem kleinen Spielraum herunter, um die notwendigen Daten über den Verlauf zur Berechnung der Indikatoren zum Zeitpunkt des Tests zu liefern. Der Mindestumfang der vom Handelsserver herunterzuladenden Historie für die Zeiträume D1 und darunter beträgt ein Jahr. Wenn Sie also den Test im Intervall 2010.11.01-2010.12.01 (Test im Intervall von einem Monat) mit der Periode M15 (jeder Balken ist 15 Minuten lang) beginnen, wird das Terminal die Historie für das gesamte Jahr 2010 abfragen. Für den Zeitrahmen "Wöchentlich" werden wir die Historie von 100 Balken abfragen, was etwa zwei Jahren entspricht (ein Jahr hat 52 Wochen). Für die Prüfung des monatlichen Zeitrahmens wird der Bearbeiter die Historie für 8 Jahre anfordern (12 Monate * 8 Jahre = 96 Monate).


Zusammenfassung

Legen Sie in den Testeinstellungen den monatlichen Zeitrahmen fest

 
Slava:

Die Historie für die verwendeten Symbole wird vom Tester automatisch vom Client-Terminal (nicht vom Handelsserver!) heruntergeladen, wenn er das erste Mal auf dieses Symbol zugreift.

Der Testagent lädt nur den fehlenden Verlauf mit einem kleinen Spielraum herunter, um die notwendigen Daten über den Verlauf zur Berechnung der Indikatoren zum Zeitpunkt des Tests zu liefern. Der Mindestumfang der vom Handelsserver herunterzuladenden Historie für die Zeiträume D1 und darunter beträgt ein Jahr. Wenn Sie also den Test im Intervall 2010.11.01-2010.12.01 (Test im Intervall von einem Monat) mit der Periode M15 (jeder Balken ist 15 Minuten lang) beginnen, fordert das Terminal die Historie für das Tool für das gesamte Jahr 2010 an. Für den Zeitrahmen "Wöchentlich" werden wir die Historie von 100 Balken abfragen, was etwa zwei Jahren entspricht (ein Jahr hat 52 Wochen). Für die Prüfung des monatlichen Zeitrahmens wird der Bearbeiter die Historie für 8 Jahre anfordern (12 Monate * 8 Jahre = 96 Monate).


Zusammenfassung

Legen Sie in den Testeinstellungen den monatlichen Zeitrahmen fest

Es ist klar - es spart Ressourcen.

Was ist, wenn ich mit M15 testen möchte, aber mehrere Jahre an Daten benötige (um ein neuronales Netz zu trainieren)? Sollten wir die Balken in unseren eigenen Dateien speichern?

 
Roman:

memcpy, wie inRenates Beispielartikel gezeigt.
Die Verwendung anderer Kopierfunktionen führt zu den gleichen Problemen.
Das Verhalten mit diesen Funktionen wird in diesem Beitrag und in diesem Beitrag beschrieben
Es wurden alle möglichen Kopierfunktionen ausprobiert.

Was wissen Sie über die gemeinsame Nutzung von Daten aus mehreren Threads?

 
Ilyas:

Was wissen Sie über die gemeinsame Nutzung von Multithreading-Daten?

Der Code verwendet lock_guard
. Wenn er jedoch auskommentiert wird, ändert sich nichts
.

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);
}
Trotzdem begann es undicht zu werden, aber es ist verständlich, warum, denn die falsche Größe von
Dateien:
222.PNG  13 kb
 
elibrarius:

Ich verstehe - Ressourcen sparen.

Was aber, wenn Sie auf M15 testen müssen, aber Daten aus mehreren Jahren benötigen (um ein neuronales Netz zu trainieren)? Müssen Sie die Balken in Ihren Dateien speichern?

Wir müssen nur noch warten:

input int InpBars = 100000;

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

}
 
elibrarius:

Ich verstehe - Ressourcen sparen.

Was aber ist zu tun, wenn ich auf M15 testen muss, aber Daten für mehrere Jahre benötige (um ein neuronales Netz zu trainieren)? Sollten wir die Balken in unseren eigenen Dateien speichern?

Was ist das Problem? Sie können auf Daten aus beliebigen Zeiträumen zugreifen.
 
Slava:
Wo liegt das Problem? Sie können auf Daten aus beliebigen Zeiträumen zugreifen.

Wenn ich den Test auf M15 ausführe, weil der Handel im Tester auf M15 stattfindet, werde ich nicht in der Lage sein, 100000 Balken in der Historie zu zählen. Aber wir müssen den Handel auf M15 testen.

Wenn ich es auf Мonthew laufen lasse, um eine Geschichte für 8 Jahre zu haben, werde ich nicht in der Lage sein, mehr als einmal im Monat zu handeln.

 
elibrarius:

Wenn ich den Test auf M15 ausführe, weil der Handel im Tester auf M15 stattfindet, kann ich keine 100.000 Balken in der Historie zählen. Und ich muss den Handel auf M15 testen.

Wenn ich es auf Мonthew laufen lasse, um eine Geschichte für 8 Jahre zu haben, dann werde ich nicht in der Lage sein, mehr als einmal im Monat zu handeln.

Warum nicht?

 
Alexey Viktorov:

Und warum?

Die Eröffnungspreise werden getestet. Die Zecke wird einmal im Monat kommen.
Wenn Sie auf allen echten Zecken laufen, können Sie mit starker Umgestaltung und Komplikation des Codes. Außerdem werden dadurch Ressourcen verschwendet. Ich denke, es wäre einfacher, Balken aus Dateien zu lesen.