Görünüşe göre ticaret sunucusuyla eşleşen bir Takvim düzelticim var.
#property script_show_inputsinputulong inEventID = 840030006; // EventIDinputstring inName = ""; // Name -> EventID (Tarım Dışı İstihdam -> 840030016)inputdatetime inFrom = D'2020.01.01';
inputbool inDST = true;
voidOnStart()
{
CALENDAR Calendar;
if (inName == "")
{
Calendar.Set(inEventID);
Calendar.FilterByTime(inFrom, TimeCurrent());
Calendar.CorrectTime(); // MQL takvimi özelliklerini atlayın: https://www.mql5.com/ru/forum/444094/page14#comment_46213385if (inDST)
Calendar.DST(); // Ticaret sunucusu Avrupa saati ile senkronize edilmişse çağırın.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// Olay kimliğini isme göre al.
{
string Currencies[2];
// Geçerli karakterin para birimlerini alın.
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());
}
}
Sonuç.
+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
Web takvimiyle eşleşiyor. Herhangi bir bariz tutarsızlık gören varsa, bana bildirin.
Şimdi takvimi geriye dönük testler için kullanmak doğru gibi görünüyor.
fxsaber #: 840200001-event ile karşılaştırma yapamazsınız, çünkü teklifler üzerinde zayıf bir etkisi vardır - sol sütunun zamanı yanlış hesaplanabilir.
Teşekkürler, daha yakından baktım ve önerilen yöntemi anladım.
Bazı durumlarda fiyatın ne kadar değiştiğini görmek için belirli bir zaman aralığına (olaydan önce ve sonra) bakmanın daha ilginç olacağını düşünüyorum.
Kütüphaneyi güncelledikten sonra Takvim, herhangi bir brokerdeki teklif geçmişi ile senkronize edilmelidir.
Kontrol edin (EURUSD üzerinde çalıştırın).
#property script_show_inputsinputulong inEventID = 840030016; // EventID (840030016 - Tarım Dışı İstihdam)inputdatetime inFrom = D'2020.01.01';
// Zaman çubuğu boyutu.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);
}
// Boyuta göre en büyük çubuğun zamanı (diziden zamana göre).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)]);
}
// Fiyat verileriyle ilgili en olası haber zamanı (güçlü tepki).datetime ChartNewsTime( constdatetime &Time )
{
datetime Times[3];
Times[0] = Time;
Times[1] = Times[0] - 3600;
Times[2] = Times[0] + 3600;
return(GetMaxBarSizeTime(Times));
}
#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/tr/code/32430#define PRINT(A) Print(#A + " = " + (string)(A))
voidOnStart()
{
PRINT(AccountInfoString(ACCOUNT_SERVER));
PRINT(TimeTradeServer());
PRINT(DST::IsEurope()); // Avrupa DST Yönetmeliği.
PRINT(DST::GetRollover()); // Devir Süresi.
PRINT(DST::TimeServerGMTOffset()); // GMT sunucu ofseti.
CALENDAR Calendar;
Calendar.Set(inEventID);
Calendar.FilterByTime(inFrom, TimeCurrent());
Calendar.AutoDST();for (int i = Calendar.GetAmount() - 1; i >= 0; i--)
{
const EVENT Event = Calendar[i];
constdatetime ChartNews = ChartNewsTime(Event.time);
if (Event.time != ChartNews)
Print("-" + (string)Event.EventID + ": " + TimeToString(ChartNews) + " != " + Event.ToString());
elsePrint("+" + (string)Event.EventID + ": " + TimeToString(ChartNews) + " == " + Event.ToString());
}
}
Sonuç.
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
Sonbahar Avrupa/ABD senkronizasyonu sırasında doğruluğunu kontrol etmek gerekecektir.
Artık takvimi geri testlerde kullanabilirsiniz (teslimatta örnek EA güncellendi).
Bu fonksiyonun doğruluğu hakkında kötü hislerim var.
Kalkülüsten limitler kullanarak: (x % 24) için çıkış aralığı 0 ila 23'tür, bu nedenle fonksiyonun çıkış aralığı -3 ila 20'dir. bu nedenle -5'lik bir sunucu temsil edilemez.
Bu işlevin doğruluğu konusunda içimde kötü bir his var.
Kalkülüsten limitler kullanarak: (x % 24) için çıkış aralığı 0 ila 23'tür, bu nedenle fonksiyonun çıkış aralığı -3 ila 20'dir. bu nedenle -5'lik bir sunucu temsil edilemez.
Takvim verilerinin uygunluğu üzerine.
Karşılaştırma için başka bir kaynağın çalışması.
Sonuç.
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi üzerine forum
Kütüphaneler: Takvim
fxsaber, 2023.04.13 00:07 pm.
Görünüşe göre ticaret sunucusuyla eşleşen bir Takvim düzelticim var.
Sonuç.
Web takvimiyle eşleşiyor. Herhangi bir bariz tutarsızlık gören varsa, bana bildirin.
Şimdi takvimi geriye dönük testler için kullanmak doğru gibi görünüyor.
Bu sonucu aldım:
Görünüşe göre ticaret sunucusuyla eşleşen bir Takvim düzeltici olduğu ortaya çıktı.
Sonuç.
Web Takvimi ile eşleşiyor. Herhangi bir bariz tutarsızlık gören olursa bana haber versin.
Şimdi takvimi geriye dönük testler için kullanmak doğru gibi görünüyor.
Tutarsızlıklar her yerde görülmektedir:
//---
Lütfen bunu kendiniz de kontrol edin.
Yönetim kurulu genelindetutarsızlıklar gözlemlenmektedir
840200001-event ile karşılaştırma yapamazsınız, çünkü teklifler üzerinde zayıf bir etkisi vardır - sol sütunun zamanı yanlış hesaplanabilir.
Teşekkürler, daha yakından baktım ve önerilen yöntemi anladım.
Bazı durumlarda fiyatın ne kadar değiştiğini görmek için belirli bir zaman aralığına (olaydan önce ve sonra) bakmanın daha ilginç olacağını düşünüyorum.
Tutarsızlıklar gözlemleniyor
Kütüphaneyi güncelledikten sonra Takvim, herhangi bir brokerdeki teklif geçmişi ile senkronize edilmelidir.
Kontrol edin (EURUSD üzerinde çalıştırın).
Sonuç.
Sonbahar Avrupa/ABD senkronizasyonu sırasında doğruluğunu kontrol etmek gerekecektir.
Artık takvimi geri testlerde kullanabilirsiniz (teslimatta örnek EA güncellendi).
ZY Bu yazarın çalışmalarına bakmanızı tavsiye ederim.
Bu fonksiyonun doğruluğu hakkında kötü hislerim var.
Kalkülüsten limitler kullanarak: (x % 24) için çıkış aralığı 0 ila 23'tür, bu nedenle fonksiyonun çıkış aralığı -3 ila 20'dir. bu nedenle -5'lik bir sunucu temsil edilemez.
Bu işlevin doğruluğu konusunda içimde kötü bir his var.
Kalkülüsten limitler kullanarak: (x % 24) için çıkış aralığı 0 ila 23'tür, bu nedenle fonksiyonun çıkış aralığı -3 ila 20'dir. bu nedenle -5'lik bir sunucu temsil edilemez.
Haklısınız, teşekkür ederim.
doğrudan 12:30'dan çıkarır (-3 + 31*/2 yerine):