Die Bibliothek wurde aktualisiert und ermöglicht nun die Änderung von Ereignissen.
#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/de/code/32430voidOnStart()
{
CALENDAR Calendar;
conststring Currencies[] = {SymbolInfoString(_Symbol, SYMBOL_CURRENCY_BASE),
SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT)};
// Nimmt anstehende wichtige Ereignisse nach Symbolwährungen auf.
Calendar.Set(Currencies);
Print(Calendar.ToString()); // Sie wurden ausgedruckt.
EVENT Events[];
if (Calendar.GetEvents(Events) > 0) // Alle Ereignisse im internen Format erhalten.
{
Events[0].Importance = (ENUM_CALENDAR_EVENT_IMPORTANCE)27; // Die Bedeutung des Ereignisses wurde geändert.
Calendar = Events; // Ereignisse in den Kalender eintragen.Print(Calendar.ToString()); // Sie wurden ausgedruckt.
}
}
Sieht so aus, als ob ich einen Kalenderkorrektor habe, der zum Handelsserver passt.
#property script_show_inputsinputulong inEventID = 840030006; // EreignisIDinputstring inName = ""; // Name -> EreignisID (Nonfarm Payrolls -> 840030016)inputdatetime inFrom = D'2020.01.01';
inputbool inDST = true;
voidOnStart()
{
CALENDAR Calendar;
if (inName == "")
{
Calendar.Set(inEventID);
Calendar.FilterByTime(inFrom, TimeCurrent());
Calendar.CorrectTime(); // Umgehen Sie die Besonderheiten des MQL-Kalenders: https://www.mql5.com/ru/forum/444094/page14#comment_46213385if (inDST)
Calendar.DST(); // Aufruf, wenn der Handelsserver mit der europäischen Zeit synchronisiert ist.for (int i = Calendar.GetAmount() - 1; i >= 0; i--)
{
const EVENT Event = Calendar[i];
constdatetime ChartNews = ChartNewsTime(Event.time); // https://www.mql5.com/ru/forum/357793/page5#comment_44225999if (Event.time != ChartNews)
Print("-" + (string)Event.EventID + ": " + TimeToString(ChartNews) + " != " + Event.ToString());
elsePrint("+" + (string)Event.EventID + ": " + TimeToString(ChartNews) + " == " + Event.ToString());
}
}
else// EreignisID nach Name abrufen.
{
string Currencies[2];
// Ermittelt die Währungen des aktuellen Zeichens.
Currencies[0] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_BASE);
Currencies[1] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT);
if (Calendar.Set(Currencies, CALENDAR_IMPORTANCE_MODERATE, inFrom) && Calendar.FilterByName(inName))
for (int i = Calendar.GetAmount() - 1; i >= 0; i--)
Print((string)Calendar[i].EventID + ": " + Calendar[i].ToString());
}
}
Ergebnis.
+840030016: 2023.04.0715:30 == 2023.04.0715:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 236 K | -8 K | 311 K | 326 K
+840030016: 2023.03.1015:30 == 2023.03.1015:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 311 K | -35 K | 517 K | 504 K
+840030016: 2023.02.0315:30 == 2023.02.0315:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 517 K | 16 K | 223 K | 260 K
+840030016: 2023.01.0615:30 == 2023.01.0615:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 223 K | 57 K | 263 K | 256 K
+840030016: 2022.12.0215:30 == 2022.12.0215:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 263 K | -30 K | 261 K | 284 K
+840030016: 2022.11.0414:30 == 2022.11.0414:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 261 K | -97 K | 263 K | 315 K
+840030016: 2022.10.0715:30 == 2022.10.0715:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 263 K | 33 K | 315 K |
+840030016: 2022.09.0215:30 == 2022.09.0215:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 315 K | 156 K | 528 K | 526 K
Stimmt mit dem Web-Kalender überein. Wenn jemand offensichtliche Ungereimtheiten sieht, lasst es mich wissen.
Jetzt scheint es korrekt zu sein, den Kalender für Backtests zu verwenden.
Unstimmigkeiten sind in allen Bereichen zu beobachten
Ein Vergleich nach 840200001-Ereignis ist nicht möglich, da es einen schwachen Einfluss auf die Kurse hat - die Zeit in der linken Spalte wird möglicherweise falsch berechnet.
fxsaber #: Man kann nicht nach dem 840200001-Ereignis vergleichen, weil es einen schwachen Einfluss auf die Notierungen hat - die Zeit der linken Spalte wird möglicherweise falsch berechnet.
Danke, ich habe mir das genauer angesehen und verstehe die vorgeschlagene Methode.
Ich denke, in einigen Fällen wäre es interessanter, einen bestimmten Zeitraum (vor und nach dem Ereignis) zu betrachten, um zu sehen, wie stark sich der Preis verändert hat.
AccountInfoString(ACCOUNT_SERVER) = RannForex-Server
TimeTradeServer() = 2024.03.1409:26:54
DST::IsEurope() = 1
DST::GetRollover() = 2024.03.1323:00:00
DST::TimeServerGMTOffset() = -7200
+840030016: 2024.03.0815:30 == 2024.03.0815:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 275 K | 220 K | 353 K | 229 K
+840030016: 2024.02.0215:30 == 2024.02.0215:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 353 K | 186 K | 216 K | 333 K
+840030016: 2024.01.0515:30 == 2024.01.0515:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 216 K | 1 K | 199 K | 173 K
+840030016: 2023.12.0815:30 == 2023.12.0815:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 199 K | -3 K | 150 K |
+840030016: 2023.11.0314:30 == 2023.11.0314:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 150 K | -8 K | 336 K | 297 K
+840030016: 2023.10.0615:30 == 2023.10.0615:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 336 K | 1 K | 187 K | 227 K
+840030016: 2023.09.0115:30 == 2023.09.0115:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 187 K | 12 K | 187 K | 157 K
+840030016: 2023.08.0415:30 == 2023.08.0415:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 187 K | -1 K | 209 K | 185 K
+840030016: 2023.07.0715:30 == 2023.07.0715:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 209 K | -19 K | 339 K | 306 K
+840030016: 2023.06.0215:30 == 2023.06.0215:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 339 K | 1 K | 253 K | 294 K
+840030016: 2023.05.0515:30 == 2023.05.0515:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 253 K | 23 K | 236 K | 165 K
+840030016: 2023.04.0715:30 == 2023.04.0715:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 236 K | -8 K | 311 K | 326 K
+840030016: 2023.03.1015:30 == 2023.03.1015:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 311 K | -35 K | 517 K | 504 K
+840030016: 2023.02.0315:30 == 2023.02.0315:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 517 K | 16 K | 223 K | 260 K
+840030016: 2023.01.0615:30 == 2023.01.0615:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 223 K | 57 K | 263 K | 256 K
+840030016: 2022.12.0215:30 == 2022.12.0215:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 263 K | -30 K | 261 K | 284 K
+840030016: 2022.11.0414:30 == 2022.11.0414:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 261 K | -97 K | 263 K | 315 K
+840030016: 2022.10.0715:30 == 2022.10.0715:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 263 K | 33 K | 315 K |
+840030016: 2022.09.0215:30 == 2022.09.0215:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 315 K | 156 K | 528 K | 526 K
+840030016: 2022.08.0515:30 == 2022.08.0515:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 528 K | -19 K | 372 K | 398 K
+840030016: 2022.07.0815:30 == 2022.07.0815:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 372 K | -229 K | 390 K | 384 K
+840030016: 2022.06.0315:30 == 2022.06.0315:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 390 K | -19 K | 428 K | 436 K
+840030016: 2022.05.0615:30 == 2022.05.0615:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 428 K | 317 K | 431 K | 428 K
+840030016: 2022.04.0115:30 == 2022.04.0115:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 431 K | 80 K | 678 K | 750 K
+840030016: 2022.03.0415:30 == 2022.03.0415:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 678 K | -413 K | 467 K | 481 K
+840030016: 2022.02.0415:30 == 2022.02.0415:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 467 K | -192 K | 199 K | 510 K
+840030016: 2022.01.0715:30 == 2022.01.0715:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 199 K | 379 K | 210 K | 249 K
+840030016: 2021.12.0315:30 == 2021.12.0315:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 210 K | 330 K | 531 K | 546 K
+840030016: 2021.11.0514:30 == 2021.11.0514:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 531 K | -54 K | 194 K | 312 K
+840030016: 2021.10.0815:30 == 2021.10.0815:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 194 K | -302 K | 235 K | 366 K
+840030016: 2021.09.0315:30 == 2021.09.0315:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 235 K | 23 K | 943 K | 1053 K
+840030016: 2021.08.0615:30 == 2021.08.0615:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 943 K | 381 K | 850 K | 938 K
+840030016: 2021.07.0215:30 == 2021.07.0215:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 850 K | 3 K | 559 K | 583 K
+840030016: 2021.06.0415:30 == 2021.06.0415:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 559 K | -396 K | 266 K | 278 K
+840030016: 2021.05.0715:30 == 2021.05.0715:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 266 K | -1 K | 916 K | 770 K
+840030016: 2021.04.0215:30 == 2021.04.0215:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 916 K | 409 K | 379 K | 468 K
+840030016: 2021.03.0515:30 == 2021.03.0515:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 379 K | -137 K | 49 K | 166 K
+840030016: 2021.02.0515:30 == 2021.02.0515:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 49 K | -497 K | -140 K | -227 K
+840030016: 2021.01.0815:30 == 2021.01.0815:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | -140 K | 207 K | 245 K | 336 K
+840030016: 2020.12.0415:30 == 2020.12.0415:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 245 K | 528 K | 638 K | 610 K
+840030016: 2020.11.0615:30 == 2020.11.0615:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 638 K | -76324 K | 661 K | 672 K
-840030016: 2020.10.0216:30 != 2020.10.0215:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 661 K | 78356 K | 1371 K | 1489 K
+840030016: 2020.09.0415:30 == 2020.09.0415:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 1371 K | -74433 K | 1763 K | 1734 K
+840030016: 2020.08.0715:30 == 2020.08.0715:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 1763 K | 4511 K | 4800 K | 4791 K
+840030016: 2020.07.0215:30 == 2020.07.0215:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 4800 K | -12034 K | 2509 K | 2699 K
+840030016: 2020.06.0515:30 == 2020.06.0515:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 2509 K | -10000 K | -20500 K | -20687 K
+840030016: 2020.05.0815:30 == 2020.05.0815:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | -20500 K | 139 K | -701 K | -870 K
+840030016: 2020.04.0315:30 == 2020.04.0315:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | -701 K | 163 K | 273 K | 275 K
+840030016: 2020.03.0615:30 == 2020.03.0615:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 273 K | 161 K | 225 K | 273 K
+840030016: 2020.02.0715:30 == 2020.02.0715:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 225 K | 161 K | 145 K | 147 K
+840030016: 2020.01.1015:30 == 2020.01.1015:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 145 K | 168 K | 266 K | 256 K
Es wird notwendig sein, die Korrektheit während der Europa/USA Unsynchronisierung im Herbst zu überprüfen.
Jetzt können Sie den Kalender in Backtests verwenden (der Beispiel-EA in der Lieferung wurde aktualisiert).
Ich habe ein ungutes Gefühl, was die Korrektheit dieser Funktion angeht.
Mit Hilfe von Grenzwerten aus der Infinitesimalrechnung: Der Ausgabebereich für (x % 24) ist 0 bis 23, also ist der Ausgabebereich der Funktion -3 bis 20. Daher kann ein Server von -5 nicht dargestellt werden.
Ich habe ein ungutes Gefühl, was die Korrektheit dieser Funktion angeht.
Mit Hilfe von Grenzwerten aus der Infinitesimalrechnung: Der Ausgabebereich für (x % 24) ist 0 bis 23, also ist der Ausgabebereich der Funktion -3 bis 20. Daher kann ein Server von -5 nicht dargestellt werden.
Über die Relevanz von Kalenderdaten.
Zum Vergleich die Arbeit einer anderen Quelle.
Ergebnis.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Bibliotheken: Kalender
fxsaber, 2023.04.13 00:07 Uhr.
Sieht so aus, als ob ich einen Kalenderkorrektor habe, der zum Handelsserver passt.
Ergebnis.
Stimmt mit dem Web-Kalender überein. Wenn jemand offensichtliche Ungereimtheiten sieht, lasst es mich wissen.
Jetzt scheint es korrekt zu sein, den Kalender für Backtests zu verwenden.
Ich habe dieses Ergebnis erhalten:
Es scheint sich um einen Kalenderkorrektor zu handeln, der mit dem Handelsserver übereinstimmt.
Ergebnis.
Stimmt mit dem Web-Kalender überein. Wenn jemand offensichtliche Unstimmigkeiten sieht, lassen Sie es mich wissen.
Jetzt scheint es korrekt zu sein, den Kalender für Backtests zu verwenden.
Ungereimtheiten sind überall zu sehen:
//---
Bitte überprüfen Sie dies auch für sich selbst.
Unstimmigkeiten sind in allen Bereichen zu beobachten
Man kann nicht nach dem 840200001-Ereignis vergleichen, weil es einen schwachen Einfluss auf die Notierungen hat - die Zeit der linken Spalte wird möglicherweise falsch berechnet.
Danke, ich habe mir das genauer angesehen und verstehe die vorgeschlagene Methode.
Ich denke, in einigen Fällen wäre es interessanter, einen bestimmten Zeitraum (vor und nach dem Ereignis) zu betrachten, um zu sehen, wie stark sich der Preis verändert hat.
Es werdenUnstimmigkeiten festgestellt
Nach der Aktualisierung der Bibliothek sollte der Kalender mit dem Kursverlauf eines beliebigen Brokers synchronisiert werden.
Prüfen (auf EURUSD laufen lassen).
Ergebnis.
Es wird notwendig sein, die Korrektheit während der Europa/USA Unsynchronisierung im Herbst zu überprüfen.
Jetzt können Sie den Kalender in Backtests verwenden (der Beispiel-EA in der Lieferung wurde aktualisiert).
ZY Ich empfehle Ihnen, sich die Arbeiten dieses Autors anzuschauen.
Ich habe ein ungutes Gefühl, was die Korrektheit dieser Funktion angeht.
Mit Hilfe von Grenzwerten aus der Infinitesimalrechnung: Der Ausgabebereich für (x % 24) ist 0 bis 23, also ist der Ausgabebereich der Funktion -3 bis 20. Daher kann ein Server von -5 nicht dargestellt werden.
Ich habe ein ungutes Gefühl, was die Korrektheit dieser Funktion angeht.
Mit Hilfe von Grenzwerten aus der Infinitesimalrechnung: Der Ausgabebereich für (x % 24) ist 0 bis 23, also ist der Ausgabebereich der Funktion -3 bis 20. Daher kann ein Server von -5 nicht dargestellt werden.
Sie haben Recht, vielen Dank.
direkt von 12:30 subtrahieren (anstelle von -3 + 31*/2):