ANG3110: Ist es möglich, den Testverlauf des Testers in meine Dateien einzulesen? Nicht über einen Expert Advisor, sondern durch Hinzufügen eines Skripts?
Ja, es handelt sich um ein Skript, das die Historie aus dem gesamten Terminal liest, ohne sie in Expert Advisors aufzuteilen. In dem Artikel habe ich die Klasse beschrieben, die die ganze Arbeit macht. Sie können sie verwenden und Ihr eigenes Skript schreiben.
Ich möchte Ihre Entwicklung für die Verlaufsanalyse während der Optimierung zum Zeitpunkt der Deinitialisierung verwenden.
Könnten Sie mir bitte sagen, wie ich es besser machen kann, um die Bilanzveränderung in ein Array zu bekommen? Das Instrument wird nur aktuell gehandelt.
Ich möchte Ihre Entwicklung für die Verlaufsanalyse während der Optimierung zum Zeitpunkt der Deinitialisierung verwenden.
Könnten Sie mir bitte sagen, wie ich es besser machen kann, um die Bilanzveränderung in ein Array zu bekommen? Das Instrument wird nur aktuell gehandelt.
Hierfür ist es besser, die finalisierte Klasse aus meinem zweiten Artikel zu verwenden. Klasse "ReportCreator"
Mit dieser Klasse verwende ich diesen Code in OnDeinit, um Optimierungsberichte in meine Robots hochzuladen:
.
//+------------------------------------------------------------------+//|KurzBericht.mqh |//| Copyright 2019, MetaQuotes Software Corp. | |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2019, MetaQuotes Software Corp."#property link"https://www.mql5.com"#include "ReportCreator.mqh"//+------------------------------------------------------------------+//| Datei-Schreiber|//+------------------------------------------------------------------+void writer(string fileName,string headder,string row)
{
bool isFile=FileIsExist(fileName,FILE_COMMON); // Kennzeichen, ob die Datei existiertint file_handle=FileOpen(fileName,FILE_READ|FILE_WRITE|FILE_CSV|FILE_COMMON|FILE_SHARE_WRITE|FILE_SHARE_READ); // Öffnen Sie die Dateiif(file_handle) // Wenn die Datei geöffnet ist
{
FileSeek(file_handle,0,SEEK_END); // Bewegen Sie den Cursor an das Ende der Dateiif(!isFile) // Wenn es sich um eine neu erstellte Datei handelt - schreiben Sie den TitelFileWrite(file_handle,headder);
FileWrite(file_handle,row); // Eine Nachricht schreibenFileClose(file_handle); // Schließen Sie die Datei
}
}
//+------------------------------------------------------------------+//| Historienspeicher|//+------------------------------------------------------------------+void SaveReportToFile(string fileName)
{
if(FileIsExist(fileName,FILE_COMMON))
{
FileDelete(fileName,FILE_COMMON);
}
DealDetales history[];
CDealHistoryGetter dealGetter;
dealGetter.getDealsDetales(history,0,TimeCurrent());
CReportCreator reportCreator;
reportCreator.Create(history,0);
TotalResult totalResult;
reportCreator.GetTotalResult(totalResult);
int total= ArraySize(history);
for(int i=0;i<total;i++)
{
writer(fileName,
"Symbol;DT open;Day open;DT close;Day close;Volume;Long/Short;Price in;Price out;PL for one lot;PL for deal;Open comment;Close comment;",
history[i].symbol+";"+
TimeToString(history[i].DT_open) + ";" +
EnumToString(history[i].day_open) + ";" +
TimeToString(history[i].DT_close) + ";" +
TimeToString(history[i].day_close) + ";" +
DoubleToString(history[i].volume)+";"+
(history[i].isLong ? "Long" : "Short")+";"+
DoubleToString(history[i].price_in) + ";" +
DoubleToString(history[i].price_out) + ";" +
DoubleToString(history[i].pl_oneLot) + ";" +
DoubleToString(history[i].pl_forDeal) + ";" +
history[i].open_comment + ";" +
history[i].close_comment + ";");
}
writer(fileName,"","===========================================================================================================================================");
writer(fileName,"","PL;"+DoubleToString(totalResult.total.PL)+";");
writer(fileName,"","Recovery factor;"+DoubleToString(totalResult.total.recoveryFactor)+";");
writer(fileName,"","Profit factor;"+DoubleToString(totalResult.total.profitFactor)+";");
writer(fileName,"","Draw Down in percent;"+DoubleToString(totalResult.total.maxDrawdown.inPercents)+";");
writer(fileName,"","Draw Down by pl;"+DoubleToString(totalResult.total.maxDrawdown.byPL)+";");
writer(fileName,"","Draw Down for a deal;"+DoubleToString(totalResult.total.maxDrawdown.forDeal)+";");
}
//+------------------------------------------------------------------+
Dieser Code befindet sich in einer separaten Datei, die ich über #include mit dem Roboter verbinde.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Ist es möglich, den Testverlauf des Testers in meine Dateien einzulesen? Nicht über einen Expert Advisor, sondern durch Hinzufügen eines Skripts?
Ja, es handelt sich um ein Skript, das die Historie aus dem gesamten Terminal liest, ohne sie in Expert Advisors aufzuteilen. In dem Artikel habe ich die Klasse beschrieben, die die ganze Arbeit macht. Sie können sie verwenden und Ihr eigenes Skript schreiben.
Ich möchte Ihre Entwicklung für die Verlaufsanalyse während der Optimierung zum Zeitpunkt der Deinitialisierung verwenden.
Könnten Sie mir bitte sagen, wie ich es besser machen kann, um die Bilanzveränderung in ein Array zu bekommen? Das Instrument wird nur aktuell gehandelt.
Ich möchte Ihre Entwicklung für die Verlaufsanalyse während der Optimierung zum Zeitpunkt der Deinitialisierung verwenden.
Könnten Sie mir bitte sagen, wie ich es besser machen kann, um die Bilanzveränderung in ein Array zu bekommen? Das Instrument wird nur aktuell gehandelt.
Hierfür ist es besser, die finalisierte Klasse aus meinem zweiten Artikel zu verwenden. Klasse "ReportCreator"
Mit dieser Klasse verwende ich diesen Code in OnDeinit, um Optimierungsberichte in meine Robots hochzuladen:. Dieser Code befindet sich in einer separaten Datei, die ich über #include mit dem Roboter verbinde.