Nicht oft, aber bei der Zusammenführung von Arrays, die endgültige Array kommt mit Fehlern in Form von mangelnder Sortierung, weil die jüngsten Elemente in der Matrix sollte einen längeren Zeitraum haben.
Ich habe so etwas noch nicht bemerkt. Versuchen Sie, ein Skript zu erstellen, um es zu reproduzieren.
2022.11.0417:00 USD 2 Baker Hughes US Oil Rig Count(baker-hughes-us-oil-rig-count), United States(US) | | | 610 |
2022.11.0417:00 USD 2 Baker Hughes US Total Rig Count(baker-hughes-us-total-rig-count), United States(US) | | | 768 |
2022.11.08 AllDay EUR 2 Economic and Financial Affairs Council Meeting(economic-financial-affairs-council-meeting), European Union(EU) | | | |
2022.11.07 ≈02:00 CNY 2 Trade Balance USD(trade-balance-usd), China(CN) | | $83.12 B | $84.74 B |
2022.11.07 ≈02:00 CNY 2 Trade Balance(trade-balance), China(CN) | | ¥565.34 B | ¥573.57 B |
Der Grund ist folgender. Die Sortierung der Zusammenführung funktioniert nur, wenn beide Kalender sortiert sind. Hier ist der ursprüngliche Kalender nicht nach Zeit sortiert.
der ursprüngliche Kalender ist nicht nach Zeit sortiert.
Option zur Behebung des Problems.
int Set( conststring sCurrency = NULL, constENUM_CALENDAR_EVENT_IMPORTANCE MinImportance = CALENDAR_IMPORTANCE_HIGH,
constdatetime From = -1, constdatetime To = -WEEK )
{
int Amount = 0;
MqlCalendarValue Values[];
if (::CalendarValueHistory(Values, (From >= 0) ? From : ::TimeTradeServer(), (To < 0) ? ::TimeTradeServer() - To : To, NULL, sCurrency))
{
// https://www.mql5.com/ru/forum/434546/page11#comment_43037160if (::TerminalInfoInteger(TERMINAL_BUILD) < 3481)) // Geben Sie den Build an, in dem sie das Problem beheben werden.
ArraySortStruct2(Values, time); // https://www.mql5.com/ru/forum/170952/page222#comment_40289584constint Size = ::ArrayResize(this.Events, ::ArraySize(Values));
for (int i = 0; i < Size; i++)
if (this.Events[Amount].Set(Values[i]) && (this.Events[Amount].Importance >= MinImportance))
Amount++;
}
return(::ArrayResize(this.Events, Amount));
}
Der Grund dafür ist folgender. Die Zusammenführung funktioniert nur, wenn beide Kalender sortiert sind. Hier ist der Quellkalender nicht nach Zeit sortiert.
Danke dafür. Ohne Sie hätte ich es nie herausgefunden )) sieht alles zu viel richtig und bestanden alle Kontrollen.
Bitte helfen Sie mir zu verstehen, ob die Kalender korrekt sind oder nicht.
Ich habe bekannte Gehaltsabrechnungen genommen und mehrere Kalender verglichen. Sie stimmen, wie es scheint, zum Zeitpunkt der Veröffentlichung der Nachrichten überein.
// Gibt die Daten zu den Nonfarm Payrolls aus.#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/de/code/32430voidOnStart()
{
CALENDAR Calendar;
Calendar.Set(840030016); // Lohnsumme außerhalb der Landwirtschaft (nonfarm-payrolls), Vereinigte Staaten (US)
Calendar.FilterByTime(D'2019.01.01', D'2023.01.01');
for (int i = Calendar.GetAmount() - 1; i >= 0; i--)
Print(Calendar[i].ToString());
}
2022.12.0215:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 263 K | -30 K | 261 K | 284 K
2022.11.0414:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 261 K | -97 K | 263 K | 315 K
2022.10.0714:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 263 K | 33 K | 315 K |
2022.09.0214:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 315 K | 156 K | 528 K | 526 K
2022.08.0514:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 528 K | -19 K | 372 K | 398 K
2022.07.0814:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 372 K | -229 K | 390 K | 384 K
2022.06.0314:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 390 K | -19 K | 428 K | 436 K
2022.05.0614:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 428 K | 317 K | 431 K | 428 K
2022.04.0114:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 431 K | 80 K | 678 K | 750 K
2022.03.0415:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 678 K | -413 K | 467 K | 481 K
2022.02.0415:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 467 K | -192 K | 199 K | 510 K
2022.01.0715:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 199 K | 379 K | 210 K | 249 K
2021.12.0315:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 210 K | 330 K | 531 K | 546 K
2021.11.0514:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 531 K | -54 K | 194 K | 312 K
2021.10.0814:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 194 K | -302 K | 235 K | 366 K
2021.09.0314:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 235 K | 23 K | 943 K | 1053 K
2021.08.0614:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 943 K | 381 K | 850 K | 938 K
2021.07.0214:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 850 K | 3 K | 559 K | 583 K
2021.06.0414:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 559 K | -396 K | 266 K | 278 K
2021.05.0714:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 266 K | -1 K | 916 K | 770 K
2021.04.0214:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 916 K | 409 K | 379 K | 468 K
2021.03.0515:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 379 K | -137 K | 49 K | 166 K
2021.02.0515:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 49 K | -497 K | -140 K | -227 K
2021.01.0815:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | -140 K | 207 K | 245 K | 336 K
2020.12.0415:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 245 K | 528 K | 638 K | 610 K
2020.11.0615:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 638 K | -76324 K | 661 K | 672 K
2020.10.0214:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 661 K | 78356 K | 1371 K | 1489 K
2020.09.0414:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 1371 K | -74433 K | 1763 K | 1734 K
2020.08.0714:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 1763 K | 4511 K | 4800 K | 4791 K
2020.07.0214:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 4800 K | -12034 K | 2509 K | 2699 K
2020.06.0514:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 2509 K | -10000 K | -20500 K | -20687 K
2020.05.0814:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | -20500 K | 139 K | -701 K | -870 K
2020.04.0314:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | -701 K | 163 K | 273 K | 275 K
2020.03.0615:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 273 K | 161 K | 225 K | 273 K
2020.02.0715:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 225 K | 161 K | 145 K | 147 K
2020.01.1015:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 145 K | 168 K | 266 K | 256 K
2019.12.0615:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 266 K | 168 K | 128 K | 156 K
2019.11.0114:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 128 K | 172 K | 136 K | 180 K
2019.10.0414:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 136 K | 174 K | 130 K | 168 K
2019.09.0614:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 130 K | 177 K | 164 K | 159 K
2019.08.0214:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 164 K | 178 K | 224 K | 193 K
2019.07.0514:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 224 K | 176 K | 75 K | 72 K
2019.06.0714:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 75 K | 170 K | 263 K | 224 K
2019.05.0314:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 263 K | 167 K | 196 K | 189 K
2019.04.0514:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 196 K | 176 K | 20 K | 33 K
2019.03.0815:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 20 K | 173 K | 304 K | 311 K
2019.02.0115:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 304 K | 168 K | 312 K | 222 K
2019.01.0415:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 312 K | 170 K | 155 K | 176 K
Die tabellarischen Kalenderdaten stimmen nicht mit den Kursdaten überein. Das Skript zeigt die Daten in der Zeitzone des Brokers an, so dass Sie auf jedem Handelsserver vergleichen können.
Es scheint, dass forexfactori und investing calendars die gleichen Daten wie MQL5 anzeigen.
Wer hat noch Kursdaten, die nicht mit den Kalenderdaten übereinstimmen?
ZЫ Wenn die Kalender lügen, wie umgehen dann die Market Advisors die Nachrichten in Backtests?
Изменение числа занятых в несельскохозяйственном секторе (Nonfarm Payrolls) — показатель, отражающий количество новых рабочих мест, созданных в отчетном месяце, во всех отраслях экономики США, кроме
ZЫ Wenn Kalender lügen, wie können Marktberater dann die Nachrichten in Backtests umgehen?
Es sieht so aus, als ob sie tatsächlich lügen. Automatisierung der Suche nach Diskrepanzen.
// Vergleicht die Daten der Nonfarm Payrolls im Kalender und in der Kurshistorie. Wird für USD-Paare ausgeführt.#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/de/code/32430// Größe der Zeitleiste.double GetBarSize( constdatetime Time )
{
MqlRates Rates[];
return(CopyRates(_Symbol, PERIOD_M1, iBarShift(_Symbol, PERIOD_M1, Time), 1, Rates) != 1 ? 0 : Rates[0].high - Rates[0].low);
}
// Zeit des größten Balkens nach Größe (nach Zeit aus dem Array).datetime GetMaxBarSizeTime( constdatetime &Times[] )
{
double Values[];
for (int i = ArrayResize(Values, ArraySize(Times)) - 1; i >= 0; i--)
Values[i] = GetBarSize(Times[i]);
return(Times[ArrayMaximum(Values)]);
}
// Wahrscheinlichster Zeitpunkt von Nachrichten über Kursdaten (starke Reaktion).datetime ChartNewsTime( constdatetime &Time )
{
datetime Times[3];
Times[0] = Time;
Times[1] = Times[0] - 3600;
Times[2] = Times[0] + 3600;
return(GetMaxBarSizeTime(Times));
}
voidOnStart()
{
CALENDAR Calendar;
Calendar.Set(840030016); // Lohnsumme außerhalb der Landwirtschaft (nonfarm-payrolls), Vereinigte Staaten (US)
Calendar.FilterByTime(D'2019.01.01', D'2023.01.01');
for (int i = Calendar.GetAmount() - 1; i >= 0; i--)
{
const EVENT Event = Calendar[i];
constdatetime ChartNews = ChartNewsTime(Event.time);
if (Event.time != ChartNews)
Print(TimeToString(ChartNews) + " != " + Event.ToString());
}
}
Die Diskrepanzen in jeder Zeile unten.
2022.10.0715:30 != 2022.10.0714:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 263 K | 33 K | 315 K |
2022.09.0215:30 != 2022.09.0214:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 315 K | 156 K | 528 K | 526 K
2022.08.0515:30 != 2022.08.0514:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 528 K | -19 K | 372 K | 398 K
2022.07.0815:30 != 2022.07.0814:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 372 K | -229 K | 390 K | 384 K
2022.06.0315:30 != 2022.06.0314:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 390 K | -19 K | 428 K | 436 K
2022.05.0615:30 != 2022.05.0614:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 428 K | 317 K | 431 K | 428 K
2022.04.0115:30 != 2022.04.0114:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 431 K | 80 K | 678 K | 750 K
2021.10.0815:30 != 2021.10.0814:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 194 K | -302 K | 235 K | 366 K
2021.09.0315:30 != 2021.09.0314:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 235 K | 23 K | 943 K | 1053 K
2021.08.0615:30 != 2021.08.0614:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 943 K | 381 K | 850 K | 938 K
2021.07.0215:30 != 2021.07.0214:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 850 K | 3 K | 559 K | 583 K
2021.06.0415:30 != 2021.06.0414:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 559 K | -396 K | 266 K | 278 K
2021.05.0715:30 != 2021.05.0714:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 266 K | -1 K | 916 K | 770 K
2021.04.0215:30 != 2021.04.0214:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 916 K | 409 K | 379 K | 468 K
2020.10.0215:30 != 2020.10.0214:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 661 K | 78356 K | 1371 K | 1489 K
2020.09.0415:30 != 2020.09.0414:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 1371 K | -74433 K | 1763 K | 1734 K
2020.08.0715:30 != 2020.08.0714:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 1763 K | 4511 K | 4800 K | 4791 K
2020.07.0215:30 != 2020.07.0214:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 4800 K | -12034 K | 2509 K | 2699 K
2020.06.0515:30 != 2020.06.0514:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 2509 K | -10000 K | -20500 K | -20687 K
2020.05.0815:30 != 2020.05.0814:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | -20500 K | 139 K | -701 K | -870 K
2020.04.0315:30 != 2020.04.0314:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | -701 K | 163 K | 273 K | 275 K
2019.10.0415:30 != 2019.10.0414:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 136 K | 174 K | 130 K | 168 K
2019.09.0615:30 != 2019.09.0614:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 130 K | 177 K | 164 K | 159 K
2019.08.0215:30 != 2019.08.0214:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 164 K | 178 K | 224 K | 193 K
2019.07.0515:30 != 2019.07.0514:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 224 K | 176 K | 75 K | 72 K
2019.06.0715:30 != 2019.06.0714:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 75 K | 170 K | 263 K | 224 K
2019.05.0315:30 != 2019.05.0314:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 263 K | 167 K | 196 K | 189 K
2019.04.0515:30 != 2019.04.0514:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 196 K | 176 K | 20 K | 33 K
Auf der linken Seite ist der Zeitpunkt der Nachricht auf die Kursreaktion, auf der rechten Seite ist der Kalender.
Es sieht so aus, als ob wir einen automatischen Korrektor in den Kalenderdaten machen sollten.
Nicht oft, aber bei der Zusammenführung von Arrays, die endgültige Array kommt mit Fehlern in Form von mangelnder Sortierung, weil die jüngsten Elemente in der Matrix sollte einen längeren Zeitraum haben.
Ich habe so etwas noch nicht bemerkt. Versuchen Sie, ein Skript zu erstellen, um es zu reproduzieren.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Bibliotheken: Kalender
BillionerClub, 2022.11.04 07:43 Uhr.
Und füge die generierten bin-Dateien bei. Dann kann ich es nachmachen.
Und fügen Sie die erzeugten bin-Dateien an. Dann kann ich es wieder tun.
Link zur angehängten Datei
Sie können nicht reproduziert werden, ohne die Klasse EVENT zu ergänzen
Link zur angehängten Datei
Der Grund ist folgender. Die Sortierung der Zusammenführung funktioniert nur, wenn beide Kalender sortiert sind. Hier ist der ursprüngliche Kalender nicht nach Zeit sortiert.
der ursprüngliche Kalender ist nicht nach Zeit sortiert.
Der Grund dafür ist folgender.
ZY Fehlerbericht: @BillionerClub, danke für den Hinweis!der ursprüngliche Kalender ist nicht nach Zeit sortiert.
Option zur Behebung des Problems.
Schreiben Sie es in das globale Scoping.
ArraySortStruct2_Define(time) // https://www.mql5.com/ru/forum/170952/page222#comment_40289584Der Grund dafür ist folgender. Die Zusammenführung funktioniert nur, wenn beide Kalender sortiert sind. Hier ist der Quellkalender nicht nach Zeit sortiert.
Danke dafür. Ohne Sie hätte ich es nie herausgefunden )) sieht alles zu viel richtig und bestanden alle Kontrollen.
Bitte helfen Sie mir zu verstehen, ob die Kalender korrekt sind oder nicht.
Ich habe bekannte Gehaltsabrechnungen genommen und mehrere Kalender verglichen. Sie stimmen, wie es scheint, zum Zeitpunkt der Veröffentlichung der Nachrichten überein.
Die tabellarischen Kalenderdaten stimmen nicht mit den Kursdaten überein. Das Skript zeigt die Daten in der Zeitzone des Brokers an, so dass Sie auf jedem Handelsserver vergleichen können.
Es scheint, dass forexfactori und investing calendars die gleichen Daten wie MQL5 anzeigen.
Wer hat noch Kursdaten, die nicht mit den Kalenderdaten übereinstimmen?
ZЫ Wenn die Kalender lügen, wie umgehen dann die Market Advisors die Nachrichten in Backtests?
ZЫ Wenn Kalender lügen, wie können Marktberater dann die Nachrichten in Backtests umgehen?
Es sieht so aus, als ob sie tatsächlich lügen. Automatisierung der Suche nach Diskrepanzen.
Die Diskrepanzen in jeder Zeile unten.
Auf der linken Seite ist der Zeitpunkt der Nachricht auf die Kursreaktion, auf der rechten Seite ist der Kalender.
Es sieht so aus, als ob wir einen automatischen Korrektor in den Kalenderdaten machen sollten.