Il n'arrive pas souvent que, lors de la fusion de tableaux, le tableau final contienne des erreurs sous la forme d'un manque de tri, car les éléments les plus récents du tableau devraient avoir une période de temps plus longue.
Je n'ai jamais remarqué une telle chose. Essayez de créer un script pour le reproduire.
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 |
La raison est la suivante. Le tri par fusion ne fonctionne que si les deux calendriers sont triés. Ici, le calendrier d'origine n'est pas trié par heure.
le calendrier original n'est pas classé par ordre chronologique.
Option pour corriger cela.
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)) // Indiquer la construction dans laquelle ils vont corriger le problème.
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));
}
La raison en est la suivante. Le tri par fusion ne fonctionne que si les deux calendriers sont triés. Ici, le calendrier source n'est pas trié par heure.
Merci. Sans vous je n'aurais jamais trouvé la solution )) tout semble trop correct et a passé toutes les vérifications.
Merci de m'aider à comprendre si les calendriers sont corrects ou non.
J'ai pris des feuilles de paie connues et j'ai comparé plusieurs calendriers. Ils correspondent, semble-t-il, au moment de la publication de la nouvelle.
// Produit les données sur les emplois non agricoles.#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/fr/code/32430voidOnStart()
{
CALENDAR Calendar;
Calendar.Set(840030016); // Emplois non agricoles (nonfarm-payrolls), États-Unis (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
Les données du calendrier tabulaire ne correspondent pas aux données de prix. Le script affiche les données dans le fuseau horaire du courtier, de sorte que vous pouvez comparer sur n'importe quel serveur de trading.
Il semble que forexfactori et les calendriers d'investissement affichent les mêmes données que MQL5.
Qui d'autre dispose de données de prix qui ne coïncident pas avec les dates du calendrier ?
ZЫ Si les calendriers mentent, alors comment les conseillers de marché contournent-ils les nouvelles dans les backtests ?
Изменение числа занятых в несельскохозяйственном секторе (Nonfarm Payrolls) — показатель, отражающий количество новых рабочих мест, созданных в отчетном месяце, во всех отраслях экономики США, кроме
ZЫ Si les calendriers mentent, comment les conseillers de marché contournent-ils les nouvelles dans les backtests ?
Il semble qu'ils mentent. Automatisation de la recherche de divergences.
// Compare les dates des salaires non agricoles dans le calendrier et dans l'historique des prix. Fonctionne sur les paires en USD.#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/fr/code/32430// Taille de la barre de temps.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);
}
// Heure de la plus grande barre par taille (par heure du tableau).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)]);
}
// Moment le plus propice à la publication de nouvelles sur les données relatives aux prix (forte réaction).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); // Emplois non agricoles (nonfarm-payrolls), États-Unis (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());
}
}
Les divergences dans chaque ligne ci-dessous.
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
À gauche, l'heure de la nouvelle sur la réaction du prix, à droite, le calendrier.
Il semble que nous devrions faire un correcteur automatique dans les dates du calendrier.
Il n'arrive pas souvent que, lors de la fusion de tableaux, le tableau final contienne des erreurs sous la forme d'un manque de tri, car les éléments les plus récents du tableau devraient avoir une période de temps plus longue.
Je n'ai jamais remarqué une telle chose. Essayez de créer un script pour le reproduire.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Bibliothèques : Calendrier
BillionerClub, 2022.11.04 07:43 pm.
Et joindre les fichiers bin générés. Je pourrai ainsi le reproduire.
Et joindre les fichiers bin générés. Je pourrai alors recommencer.
Lien vers le fichier joint
Vous ne pourrez pas reproduire sans ajouter à la classe EVENT
Lien vers le fichier joint
La raison est la suivante. Le tri par fusion ne fonctionne que si les deux calendriers sont triés. Ici, le calendrier d'origine n'est pas trié par heure.
le calendrier original n'est pas classé par ordre chronologique.
La raison en est la suivante.
ZY Bug report @BillionerClub, merci pour l'info !le calendrier original n'est pas classé par ordre chronologique.
Option pour corriger cela.
Dans le cadrage global, l'écrire.
ArraySortStruct2_Define(time) // https://www.mql5.com/ru/forum/170952/page222#comment_40289584La raison en est la suivante. Le tri par fusion ne fonctionne que si les deux calendriers sont triés. Ici, le calendrier source n'est pas trié par heure.
Merci. Sans vous je n'aurais jamais trouvé la solution )) tout semble trop correct et a passé toutes les vérifications.
Merci de m'aider à comprendre si les calendriers sont corrects ou non.
J'ai pris des feuilles de paie connues et j'ai comparé plusieurs calendriers. Ils correspondent, semble-t-il, au moment de la publication de la nouvelle.
Les données du calendrier tabulaire ne correspondent pas aux données de prix. Le script affiche les données dans le fuseau horaire du courtier, de sorte que vous pouvez comparer sur n'importe quel serveur de trading.
Il semble que forexfactori et les calendriers d'investissement affichent les mêmes données que MQL5.
Qui d'autre dispose de données de prix qui ne coïncident pas avec les dates du calendrier ?
ZЫ Si les calendriers mentent, alors comment les conseillers de marché contournent-ils les nouvelles dans les backtests ?
ZЫ Si les calendriers mentent, comment les conseillers de marché contournent-ils les nouvelles dans les backtests ?
Il semble qu'ils mentent. Automatisation de la recherche de divergences.
Les divergences dans chaque ligne ci-dessous.
À gauche, l'heure de la nouvelle sur la réaction du prix, à droite, le calendrier.
Il semble que nous devrions faire un correcteur automatique dans les dates du calendrier.