Darf ich fragen, ob die.bin-Datei von notepad++ gelesen werden kann? Die von meinem EA erstellte Datei ist für notepad++ nicht lesbar, und bei BT gibt die calendar.Load nichts zurück. Haben Sie einen Tipp dazu?
Darf ich fragen, ob die.bin-Datei von notepad++ gelesen werden kann? Die von meinem EA erstellte Datei ist für notepad++ nicht lesbar, und bei BT gibt die calendar.Load nichts zurück. Haben Sie einen Hinweis dazu?
Es ist besser, gleich zu formulieren, was die Aufgabe ist.
Es ist besser, sofort zu formulieren, was die Aufgabe ist.
Sorry fxsaber, lassen Sie mich klarstellen.
Grundsätzlich beginne ich mit dem Beispielcode, den Sie geteilt haben, ich bin in der Lage, eine .bin-Datei herunterzuladen und zu erstellen.
Ich versuche, die unten für Backtest, Ziel ist es, die .bin in jeder Iteration zu laden, um für Nachrichten/Ereignisse von jeder Währung in der Klasse aufgeführt zu überprüfen.
Allerdings, wenn ich Backtesting, The Calendar.ToString zurückgegeben leer.(die "Print" sind für die Fehlersuche)
Ich versuche, die unten für Backtest zu codieren, Ziel ist es, die .bin in jeder Iteration zu laden, um für Nachrichten/Ereignisse von jeder Währung in der Klasse aufgeführt zu überprüfen.
Sie müssen die Daten aus der Datei nur einmal in eine statische Variable laden.
#define CALENDAR_FILENAME "Calendar.bin"// Dateiname zum Lesen/Schreiben des Kalenders.#property tester_file CALENDAR_FILENAME // Gibt an, dass MT5-Tester diese Datei abholt.#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/de/code/32430CALENDAR CalendarFull;// Objekt mit Kalenderdaten.intOnInit()
{
return(CalendarFull.Load(CALENDAR_FILENAME) == -1); // Laden von Ereignissen aus der Datei
}
voidOnTick()
{
CALENDAR Calendar = CalendarFull;//....
}
die CalendarFULL.Load gibt eine "1" zurück, aber es scheint nichts in der CalendarFULL.
Führen Sie dieses Skript einmal im MT5-Terminal aus, um die bin-Datei zu erzeugen.
#define CALENDAR_FILENAME "Calendar.bin"// Dateiname zum Lesen/Schreiben des Kalenders.#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/de/code/32430voidOnStart()
{
CALENDAR Calendar;
if (Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, 0, 0)) // Lädt absolut alle Ereignisse (Historie + Zukunft) vom MT5-Terminal.
Calendar.Save(CALENDAR_FILENAME); // Speichern Sie sie in einer Datei.
}
Führen Sie dieses Skript einmal im MT5-Terminal aus, um die bin-Datei zu erzeugen.
Danke fxsaber, ich habe das getan und es hat eine 7xmb .bin-Datei erzeugt. Sobald ich jedoch versuche, die Datei zu laden und auszudrucken, bleibt sie leer.
eepatk #: Danke fxsaber, ich habe das getan und es hat eine 7xmb .bin-Datei erzeugt. Sobald ich jedoch versuche, die Datei zu laden und auszudrucken, wird sie leer zurückgegeben.
#define CALENDAR_FILENAME "Calendar.bin"// Dateiname zum Lesen/Schreiben des Kalenders.#property tester_file CALENDAR_FILENAME // Gibt an, dass MT5-Tester diese Datei abholt.#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/de/code/32430conststring inSymbols[] = {"EURUSD", "AUDCAD"};
CALENDAR Calendars[];
intOnInit()
{
CALENDAR Calendar;
constbool Res = (Calendar.Load(CALENDAR_FILENAME) != -1);
if (Res)
for (int i = ArrayResize(Calendars, ArraySize(inSymbols)) - 1; i >= 0; i--)
{
Calendars[i] = Calendar;
Calendars[i].FilterBySymbol(inSymbols[i]);
}
return(!Res);
}
string NewsToString( const CALENDAR &Calendar, constdatetime From, constdatetime To )
{
CALENDAR CalendarTmp = Calendar;
CalendarTmp.FilterByTime(From, To);
return(CalendarTmp.ToString(0, 10));
}
#define HALF_INTERVAL (6 * 3600)
voidOnTick()
{
string Str = NULL;
for (int i = ArraySize(Calendars) - 1; i >= 0; i--)
{
constdatetime From = TimeCurrent() - HALF_INTERVAL;
constdatetime To = TimeCurrent() + HALF_INTERVAL;
Str += "\n\n" + inSymbols[i] + "-news (" + (string)From + " - " + (string)To + "):\n" + NewsToString(Calendars[i], From, To);
}
Comment(Str);
}
Schließlich fand ich heraus, das Problem mit meinem Code, meine .mq5 wurde als Unicode irgendwie gespeichert, das machte die fileread nicht funktionieren, sobald ich es zu ANSI ändern, es funktioniert.
Kalender :
Autor: fxsaber
Es ist besser, gleich zu formulieren, was die Aufgabe ist.
Es ist besser, sofort zu formulieren, was die Aufgabe ist.
Sorry fxsaber, lassen Sie mich klarstellen.
Grundsätzlich beginne ich mit dem Beispielcode, den Sie geteilt haben, ich bin in der Lage, eine .bin-Datei herunterzuladen und zu erstellen.
Ich versuche, die unten für Backtest, Ziel ist es, die .bin in jeder Iteration zu laden, um für Nachrichten/Ereignisse von jeder Währung in der Klasse aufgeführt zu überprüfen.
Allerdings, wenn ich Backtesting, The Calendar.ToString zurückgegeben leer.(die "Print" sind für die Fehlersuche)
danke,
Ich versuche, die unten für Backtest zu codieren, Ziel ist es, die .bin in jeder Iteration zu laden, um für Nachrichten/Ereignisse von jeder Währung in der Klasse aufgeführt zu überprüfen.
Sie müssen die Daten aus der Datei nur einmal in eine statische Variable laden.
Sie müssen die Daten aus der Datei nur einmal in eine statische Variable laden.
Vielen Dank, das ist schön und präzise.
Sie müssen die Daten aus der Datei nur einmal in eine statische Variable laden.
Danke fxaber,
Ich konnte den Code mit deinem Vorschlag aufräumen, aber trotzdem ist der CalendarFULL auch nach dem Laden der .bin leer.
Die CalendarFULL.Load gibt zwar eine "1" zurück, aber innerhalb von CalendarFULL scheint es nichts zu geben.
Könnte es ein Kodierungsproblem der .bin-Datei sein?
Vielen Dank
die CalendarFULL.Load gibt eine "1" zurück, aber es scheint nichts in der CalendarFULL.
Führen Sie dieses Skript einmal im MT5-Terminal aus, um die bin-Datei zu erzeugen.
Führen Sie dieses Skript einmal im MT5-Terminal aus, um die bin-Datei zu erzeugen.
Danke fxsaber, ich habe das getan und es hat eine 7xmb .bin-Datei erzeugt. Sobald ich jedoch versuche, die Datei zu laden und auszudrucken, wird sie leer zurückgegeben.
Danke fxsaber,
Schließlich fand ich heraus, das Problem mit meinem Code, meine .mq5 wurde als Unicode irgendwie gespeichert, das machte die fileread nicht funktionieren, sobald ich es zu ANSI ändern, es funktioniert.
Danke!