Fan sayfamıza katılın
Öyleyse bir link gönderin -
başkalarının da faydalanmasını sağlayın
- Görüntülemeler:
- 20
- Derecelendirme:
- Yayınlandı:
- 2025.04.03 11:16
-
Bu koda dayalı bir robota veya göstergeye mi ihtiyacınız var? Freelance üzerinden sipariş edin Freelance'e git
MetaTrader5, herhangi bir verisine programlı olarak erişilebilen temel takvim olaylarının güncellenmiş hacimsel bir geçmişine sahiptir.
Bu kütüphane, bu verilerle rahatça çalışmanıza olanak tanır. Özellikle, bunları Test Cihazında ve gerçek ticarette kullanmak için.
Kütüphane ile çalışma, örneklerin kaynak kodunun yorumları şeklinde gösterilmektedir.
Geçmiş verilerin elde edilmesi.
// Komut dosyası geçmiş verileri çıkarır. #include <fxsaber\Calendar\Calendar.mqh> // Takvim - geçmiş ve gerçek zamanlı temel analiz. void OnStart() { CALENDAR Calendar; // En düşük (NONE) önemden başlayarak tüm (NULL) para birimleri için olayları aldı. const int Size = Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, D'2020.12.07', D'2020.12.08'); // Çıktılarını aldım. for (int i = 0; i < Size; i++) Print(Calendar[i].ToString()); }
Sonuç.
2020.12.07 AllDay EUR 0 День Конституции(constitution-day), Испания(ES) | | | | 2020.12.07 00:00 AUD 3 Выступление председателя Резервного Банка Австралии Лоу(rba-governor-lowe-speech), Австралия(AU) | | | | 2020.12.07 01:50 JPY 1 Международные резервы(jp-foreign-reserves), Япония(JP) | $1384.6 B | | $1384.4 B | 2020.12.07 02:30 AUD 1 Количество объявлений о вакансиях от ANZ м/м(anz-job-advertisements-mm), Австралия(AU) | 13.9% | 0.8% | 9.4% | 2020.12.07 ≈05:00 CNY 1 Объем импорта USD г/г(imports-usd-yy), Китай(CN) | 4.5% | 4.4% | 4.7% | 2020.12.07 ≈05:00 CNY 1 Объем экспорта USD г/г(exports-usd-yy), Китай(CN) | 21.1% | 3.6% | 11.4% | 2020.12.07 ≈05:00 CNY 2 Торговый баланс(trade-balance), Китай(CN) | ¥507.1 B | ¥271.31 B | ¥401.75 B | 2020.12.07 ≈05:00 CNY 2 Торговый баланс USD(trade-balance-usd), Китай(CN) | $75.42 B | $52.55 B | $58.44 B | 2020.12.07 ≈05:00 CNY 1 Объем импорта г/г(imports-yy), Китай(CN) | -0.8% | -0.6% | 0.9% | 2020.12.07 ≈05:00 CNY 1 Объем экспорта г/г(exports-yy), Китай(CN) | 14.9% | 2.2% | 7.6% | 2020.12.07 07:00 JPY 1 Индекс совпадающих индикаторов(coincident-index), Япония(JP) | 89.7 | 81.8 | 81.1 | 84.8 2020.12.07 07:00 JPY 1 Индекс ведущих экономических индикаторов(leading-index), Япония(JP) | 93.8 | 92.7 | 92.5 | 93.3 2020.12.07 07:00 JPY 1 Индекс совпадающих индикаторов Японии м/м(coincident-index-mm), Япония(JP) | 4.9% | | 1.7% | 2.4% 2020.12.07 07:00 JPY 1 Индекс ведущих экономических индикаторов м/м(leading-index-mm), Япония(JP) | 0.5% | | 4.0% | 4.2% 2020.12.07 08:00 ZAR 1 Валовые международные резервы(gross-international-reserves), Южно-Африканская Республика(ZA) | $53.76 B | $54.129 B | $53.658 B | 2020.12.07 08:00 ZAR 1 Чистые международные резервы(net-international-reserves), Южно-Африканская Республика(ZA) | $51.257 B | $52.719 B | $51.364 B | 2020.12.07 09:00 EUR 2 Промышленное производство г/г(industrial-production-yy), Германия(DE) | -3.0% | -11.4% | -7.3% | -6.7% 2020.12.07 09:00 EUR 2 Промышленное производство м/м(industrial-production-mm), Германия(DE) | 3.2% | 7.7% | 1.6% | 2.3% 2020.12.07 09:00 NOK 1 Производство в обрабатывающей промышленности м/м(manufacturing-production-mm), Норвегия(NO) | 0.6% | 0.1% | -0.5% | 2020.12.07 09:00 NOK 1 Производство в обрабатывающей промышленности г/г(manufacturing-production-yy), Норвегия(NO) | -2.7% | -3.3% | -3.4% | 2020.12.07 09:00 NOK 1 Промышленное производство м/м(industrial-production-mm), Норвегия(NO) | -3.5% | 0.0% | -1.7% | -1.6% 2020.12.07 09:00 NOK 1 Промышленное производство г/г(industrial-production-yy), Норвегия(NO) | 0.0% | 6.9% | 6.3% |
MT5-Terminalinin kendisi ile karşılaştırabilirsiniz.
Yaklaşan etkinlikler alınıyor.
// Komut dosyası yaklaşan etkinlikleri görüntüler. #include <fxsaber\Calendar\Calendar.mqh> // Takvim - geçmiş ve gerçek zamanlı temel analiz. void OnStart() { CALENDAR Calendar; string Currencies[2]; // Geçerli karakterin para birimlerini alın. Currencies[0] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_BASE); Currencies[1] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT); // Sembol para birimlerine göre yaklaşan önemli olayları aldı. Calendar.Set(Currencies); Print(Calendar.ToString()); // Çıktılarını aldım. }
Bilgi sistemlerine bu tür bir yerleştirme, Uzman Danışmanlarda / göstergelerde yaklaşan önemli takvim etkinlikleri hakkında bilgi vermeyi sağlar.
Temel veriler üzerinde geriye dönük test.
Aşağıda, mevcut ve tahmini değerleri karşılaştırarak Tarım Dışı Bordrolarda işlem yapan bir Uzman Danışman bulunmaktadır.
// Temel verilerin geçmişinde MT4 / 5-Tester'da işlem yapmak için Uzman Danışman. #define CALENDAR_FILENAME "Calendar.bin" // Takvim'i okumak/yazmak için dosya adı. #property tester_file CALENDAR_FILENAME // MT5-Tester'ın bu dosyayı alacağını belirtir. #include <fxsaber\Calendar\Calendar.mqh> // Takvim - geçmiş ve gerçek zamanlı temel analiz. input group "Calendar" input string inCurrency = "USD"; // Para Birimi input string inFilterName = "payrolls"; // FilterName input group "EA" input int inTP = 1000; // TakeProfit input int inSL = 1000; // StopLoss input bool inReverse = true; // Ticaret yönü CALENDAR Calendar; // Takvim verilerini içeren nesne. int OnInit() { bool Res = false; if (MQLInfoInteger(MQL_TESTER)) // Eğer Tester'da çalışıyorsanız { Res = Calendar.Load(CALENDAR_FILENAME) && // Olaylar dosyadan yüklendi. Calendar.FilterByCurrency(inCurrency) && // Bir para birimi filtresi uygulandı. Calendar.FilterByName(inFilterName); // Olay adına bir filtre uygulandı. if (!Res) // Yüklenen verilerle ilgili sorunlar varsa, Print("Run the EA in the MT5-Terminal!"); // EA'yı MT5-Terminal'de çalıştırarak bunları almanız gerektiğini bildirdi. } #ifdef __MQL5__ // Terminalde Çalışma. else if (Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, 0, 0) && // MT5-Terminal'den kesinlikle tüm olaylar (geçmiş + gelecek) yüklendi. Calendar.Save(CALENDAR_FILENAME)) // Bunları bir dosyaya kaydedin. MessageBox("You can run the EA in the MT4/5-Tester."); // Artık MT4/5-Tester'da çalışabileceğimiz bildirildi. #endif // #ifdef __MQL5__ return(!Res); } void OnTick() { static int Pos = Calendar.GetPosAfter(TimeCurrent()); // Takvim'de geçerli saatten hemen sonra olan olay konumunu alın. if ((Pos < Calendar.GetAmount()) && // Takvim'in ötesine geçmediyseniz (Calendar[Pos].time < TimeCurrent())) // ve geçerli zaman olayı geçti. { const EVENT Event = Calendar[Pos]; // İlgili olay alındı. if ((Event.Actual != LONG_MIN) && (Event.Forecast != LONG_MIN)) // Olayın mevcut ve tahmini değerleri ayarlanmışsa { Print(Event.ToString()); // Bu olayın tamamını yazdırın. if (Event.Actual > Event.Forecast) // Mevcut değer tahmini değerden büyükse, PositionOpen(inReverse, "Act.(" + Event.ActualToString() + ")>(" + Event.ForecastToString() + ")For."); // tek yönlü bir pozisyon açın. else PositionOpen(!inReverse, "Act.(" + Event.ActualToString() + ")<=(" + Event.ForecastToString() + ")For."); // Aksi takdirde, farklı bir yön. } Pos = Calendar.GetPosAfter(TimeCurrent(), Pos); // Takvim'de geçerli saatten hemen sonra olan olay konumunu alın. } } #include <MT4Orders.mqh> // https://www.mql5.com/tr/code/16006 #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID) #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) // Belirtilen yorum ile bir pozisyon açar. TICKET_TYPE PositionOpen( const int Type, const string comment ) { return(Type ? OrderSend(_Symbol, OP_SELL, 1, Bid, 0, Bid + inSL * _Point, Bid - inTP * _Point, comment) : OrderSend(_Symbol, OP_BUY, 1, Ask, 0, Ask - inSL * _Point, Ask + inTP * _Point, comment)); }
Tüm geçmiş verileri (~ 60 Mb) kaydetmek için MT5-Terminal'de bir kez çalıştırın. Bundan sonra Test Cihazında mevcut olacaklar.
Sonuç (H1 açılış fiyatlarıyla altı yıl boyunca).
Özellikler.
- DLL kullanmaz, Marketplace'te çalışabilir.
- Platformlar arası çalışma: MT4'te dosyadan veri alın.
MetaQuotes Ltd tarafından Rusçadan çevrilmiştir.
Orijinal kod: https://www.mql5.com/ru/code/32430

Test cihazının tek geçiş verileri.

A zigzag based on the trend change of the parabolic sar

Bir Uzman Danışmanın OnTick () olay işleyicisinde yeni bir çubuğun veya mumun başlangıcını algılama.

This Bot detects the open of a new candle on any set timeframe, thereby making it easier to run a one-time code, place trades and call other functions. The code is written in the OnTick() function.