Fehler, Irrtümer, Fragen - Seite 163

 
stringo:
Können Sie den Ausdruck x = x++ praktisch begründen; Was wollen Sie damit sagen? Warum nicht Inkrement ohne anschließende Zuweisung von x++; verwenden, wie es normalerweise verwendet wird.
Kam zufällig heraus - man schreibt ja nicht jeden Tag in C-ähnlichen Sprachen, ich vergaß, dass es nur x++ gibt. Ich hatte erwartet, dass x = x + 1 ist. Das Ergebnis ist lustig...
 
GODZILLA:

Nein, das ist es nicht! Nun, es gibt keine Daten, ich habe noch einmal gefragt... Ich habe es auf die fünfte Anfrage bekommen und bin gegangen, aber es ist still und das war's!!!

Für Expert Advisors und benutzerdefinierte Indikatoren ist es besser, ein ereignisgesteuertes Verarbeitungsmodellzu verwenden . Wenn es bei der Verarbeitung der Ereignisse OnTick() oder OnCalculate() nicht gelungen ist, alle erforderlichen Daten zu erhalten, sollten Sie den Event-Handler verlassen und erwarten, dass Sie beim nächsten Aufruf des Handlers Zugriff auf die Daten haben.

Das habe ich auch gelesen und gedacht, aber dieser Code ergibt zum Beispiel folgendes:

int handle;
datetime inittime;
void OnInit(){

  
  handle = iCustom( "GBPUSD", PERIOD_M2, "examples\ATR", 14 );
  Print("Handle=", handle);
  inittime = TimeCurrent();
}
bool isfirst = true;
void OnTick()
  {
    double val[1];
    int start_pos = 1;
    if( isfirst || TimeCurrent()-5*60 > inittime ){
      int n = CopyBuffer( handle, 0, start_pos , 1, val );
      Print("Получено n=", n, 
        (n==-1)?" ошибка при получении данных из индикатора, ":" нет ошибки при получении данных из индикатора",
        " значение ", val[0] );
    }
    isfirst = false; 
  }

Ich warte 5 Minuten, danach erhalte ich den Indikatorwert für jeden Tick (ich schneide einen Teil der Protokolle aus):

2010.10.14 15:47:09 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0006792857142856462
2010.10.14 15:47:03 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:47:02 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:47:02 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0006792857142856462
2010.10.14 15:47:01 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0006792857142856462
2010.10.14 15:47:01 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0006792857142856462
2010.10.14 15:46:59 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0006792857142856462
2010.10.14 15:46:59 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0006792857142856462
2010.10.14 15:46:58 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:46:58 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:45:11 tstincl (EURJPY,M1) Empfangen n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:45:11 tstincl (EURJPY,M1) Empfangen n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:45:10 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0006792857142856462
2010.10.14 15:45:05 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0006792857142856462
2010.10.14 15:45:03 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0006792857142856462
2010.10.14 15:45:03 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0006792857142856462
2010.10.14 15:45:02 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0006792857142856462
2010.10.14 15:45:01 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0006792857142856462
2010.10.14 15:45:00 tstincl (EURJPY,M1) Empfangen n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:44:58 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:44:56 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:44:56 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:44:54 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:44:08 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:44:05 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:44:05 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:43:27 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:43:25 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:43:24 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:43:23 23 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0006792857142856462
2010.10.14 15:43:04 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:43:01 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0006792857142856462
2010.10.14 15:42:59 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0006792857142856462
2010.10.14 15:42:58 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:42:58 tstincl (EURJPY,M1) n=1 erhielt keinen Fehler beim Empfang der Daten vom Indikatorwert 0.0006792857142856462
2010.10.14 15:42:51 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:42:47 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:42:43 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:42:04 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0006792857142856462
2010.10.14 15:41:25 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0007028571428570865
2010.10.14 15:41:22 tstincl (EURJPY,M1) Empfangen n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0007028571428570865
2010.10.14 15:41:05 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0007028571428570865
2010.10.14 15:41:05 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0007028571428570865
2010.10.14 15:41:01 tstincl (EURJPY,M1) Empfangen n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0007028571428570865
2010.10.14 15:40:59 tstincl (EURJPY,M1) Empfangen n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0007028571428570865
2010.10.14 15:40:57 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0007028571428570865
2010.10.14 15:40:54 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0007028571428570865
2010.10.14 15:40:41 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0007028571428570865
2010.10.14 15:40:40 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0007028571428570865
2010.10.14 15:40:38 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0007028571428570865
2010.10.14 15:40:36 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0007028571428570865
2010.10.14 15:40:26 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0007028571428570865
2010.10.14 15:40:21 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0007028571428570865
2010.10.14 15:40:21 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0007028571428570865
2010.10.14 15:40:18 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:40:14 tstincl (EURJPY,M1) n=1 erhielt keinen Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:40:13 tstincl (EURJPY,M1) n=1 erhielt keinen Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:40:07 tstincl (EURJPY,M1) n=1 erhielt keinen Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:40:04 tstincl (EURJPY,M1) n=1 erhielt keinen Fehler beim Empfang der Daten vom Indikatorwert 0.0007364285714285289
2010.10.14 15:40:02 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:40:02 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:39:59 tstincl (EURJPY,M1) Empfangene n=1 kein Fehler beim Empfang von Daten von Indikatorwert 0.0007364285714285289
2010.10.14 15:39:56 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:39:54 tstincl (EURJPY,M1) n=1 erhielt keinen Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:39:52 tstincl (EURJPY,M1) n=1 erhielt keinen Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:39:51 tstincl (EURJPY,M1) Empfangen n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:39:50 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:39:49 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:39:46 tstincl (EURJPY,M1) n=1 erhielt keinen Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:39:45 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:39:45 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:39:43 tstincl (EURJPY,M1) n=1 erhielt keinen Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:39:42 tstincl (EURJPY,M1) n=1 erhielt keinen Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:39:40 tstincl (EURJPY,M1) n=1 erhielt keinen Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:39:40 tstincl (EURJPY,M1) n=1 erhielt keinen Fehler beim Empfang von Daten aus Indikatorwert 0.0007364285714285289
2010.10.14 15:39:39 tstincl (EURJPY,M1) n=1 erhielt keinen Fehler beim Empfang von Daten vom Indikator den Wert 0.0007364285714285289
2010.10.14 15:34:38 tstincl (EURJPY,M1) Empfangen von n=1 kein Fehler beim Empfang von Daten aus Indikatorwert 0.0007357142857142544
2010.10.14 15:34:35 tstincl (EURJPY,M1) Handle=10

die sich alle zwei Minuten ändern sollte, wie Sie sehen, sind ab etwa 45 Minuten neue Balken auf m2 nicht verfügbar, weder nach dem ersten, noch nach dem zweiten oder nach dem zehnten Aufruf.

Vielleicht haben Sie etwas Ähnliches?

Frage an Entwickler: Wie rufe ich CopyBuffer korrekt auf? Dann muss man wissen, welche Zeitreihe und welches Zeichen sich auf den Handle-Initiator bezieht, und um das zu wissen, muss man diese Informationen irgendwo speichern und an alle Stellen weiterleiten, an denen man CopyBuffer aufruft: Der Code wird kompliziert und unübersichtlich.

 

Frage zum Testgerät.

Wie oft werden die Ergebnisse der Testergebnisse gespeichert?

Das Protokoll zeigt, dass die Ergebnisse, wenn sie im Cache gespeichert sind, ohne Neuberechnung übernommen werden, was Zeit spart. Ich hatte eine Situation, in der ein Computer während eines langen Optimierungslaufs abstürzte (der Grund ist nicht wichtig). Der nächste Optimierungslauf mit demselben Expert Advisor und denselben Parametern ergab, dass nichts eingespart wurde - die Zeit war vergeudet. Natürlich gibt es eine Sicherheitsmaßnahme - die Optimierung von Zeit zu Zeit zu stoppen und neu zu starten, aber das ist nicht sehr bequem. Bauart 342.

 
Ashes:

Frage zum Testgerät.

Wie oft werden die Ergebnisse der Testergebnisse gespeichert?

Das Protokoll zeigt, dass die Ergebnisse, wenn sie im Cache gespeichert sind, ohne Neuberechnung übernommen werden, was Zeit spart. Ich hatte eine Situation, in der ein Computer während eines langen Optimierungslaufs abstürzte (der Grund ist nicht wichtig). Der nächste Optimierungslauf mit demselben Expert Advisor und denselben Parametern ergab, dass nichts eingespart wurde - die Zeit war vergeudet. Natürlich gibt es eine Sicherheitsmaßnahme, d. h. die Optimierung regelmäßig zu stoppen und neu zu starten, aber das ist nicht sehr bequem. Bauart 342.

Die Optimierungsergebnisse werden nach Abschluss der Optimierung in die Datei geschrieben. Im Falle einer Notabschaltung werden die Ergebnisse nicht gespeichert.

Wir werden prüfen, was getan werden kann.

Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
Файловые операции / FileWrite - Документация по MQL5
 
stringo:

Die Optimierungsergebnisse werden in eine Datei geschrieben, wenn die Optimierung abgeschlossen ist. Die Ergebnisse werden im Falle einer Notabschaltung nicht gespeichert.

Wir werden prüfen, was getan werden kann.

Das wäre eine gute Idee.

Übrigens würde ich die Optimierungsergebnisse gerne in einer verwertbaren Form speichern, nicht nur als Bilder. Oder habe ich vielleicht nicht den richtigen Knopf gefunden?

 
Ashes:

Das wäre eine gute Idee.

Übrigens würde ich die Ergebnisse der Optimierung gerne in einer Form speichern, die sich für die Weiterverarbeitung eignet, nicht nur als Bilder. Oder habe ich vielleicht nicht den richtigen Knopf gefunden?

tester\cache\<ea_name>.<Symbol>.<Punkt>.< Modus>.xml
 
Ashes:

Das wäre eine gute Idee.

Übrigens würde ich die Ergebnisse der Optimierung gerne in einer Form speichern, die sich für die Weiterverarbeitung eignet, nicht nur als Bilder. Oder habe ich vielleicht nicht den richtigen Knopf gefunden?

Und ich habe auch eine Frage, wie man die Optimierung nach einem erzwungenen Stopp fortsetzt, ich habe in der Hilfe nichts darüber gefunden.
 

sergey1294:
и у меня вопрос тоже есть, как продолжить оптимизацию после принудительного останова, в справке что-то не нашел по этому поводу ни чего.

Drücken Sie einfach die Starttaste.
 
stringo:
tester\cache\<ea_name>.<Symbol>.<Zeitraum>.<Modus>.xml

Und ein weiterer MQL5-Artikel: Expert Advisor Testing and Optimization Guide:

Nachdem die Optimierung abgeschlossen ist, können Sie im Ordner "MQL5\Tester\cache" nachsehen, wo Sie die Datei cci_ma_ea.EURUSD.H1.2.xml finden, die numerische Werte aller Parameter und Merkmale enthält, die als Ergebnis der Optimierung erhalten wurden.

Die Optimierungsergebnisse werden in der Datei: ExpertName.SYMBOL.PERIOD.GenerationMode.xml gespeichert, wobei:

  • ExpertName - Name des zu optimierenden Expert Advisors;
  • SYMBOL - Symbol;
  • PERIOD - Zeitrahmen (M1,H1,...);
  • GenerationMode - Modus der Tickgenerierung (0 - "Jeder Tick", 1 - "OHLC auf M1", 2 - "Nur Eröffnungskurse".

Diese Datei kann zur weiteren Analyse in Excel geöffnet werden.

 
stringo:
Sie drücken einfach die Starttaste.
Der Prüfer sollte also automatisch die Liste der vergangenen Läufe in die Registerkarte"Optimierungsergebnisse" laden und die Optimierung dort fortsetzen, wo er aufgehört hat?