und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
- Ansichten:
- 43
- Rating:
- Veröffentlicht:
- 2025.04.03 11:16
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
MetaTrader5 verfügt über eine aktualisierte volumetrische Historie der fundamentalen Kalenderereignisse, auf deren Daten programmatisch zugegriffen werden kann.
Diese Bibliothek ermöglicht es Ihnen, bequem mit diesen Daten zu arbeiten. Insbesondere, um sie im Tester und im realen Handel zu verwenden.
Die Arbeit mit der Bibliothek wird in Form von Kommentaren im Quellcode der Beispiele gezeigt.
Beschaffung historischer Daten.
// Das Skript gibt historische Daten aus. #include <fxsaber\Calendar\Calendar.mqh> // Kalender - Fundamentalanalyse in Geschichte und Echtzeit. void OnStart() { CALENDAR Calendar; // Nimmt Ereignisse für alle (NULL) Währungen, beginnend mit der niedrigsten (NONE) Bedeutung. const int Size = Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, D'2020.12.07', D'2020.12.08'); // Sie wurden ausgedruckt. for (int i = 0; i < Size; i++) Print(Calendar[i].ToString()); }
Ergebnis.
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% |
Sie können es mit dem MT5-Terminal selbst vergleichen.
Abrufen anstehender Ereignisse.
// Das Skript zeigt anstehende Ereignisse an. #include <fxsaber\Calendar\Calendar.mqh> // Kalender - Fundamentalanalyse in Geschichte und Echtzeit. void OnStart() { CALENDAR Calendar; string Currencies[2]; // Ermittelt die Währungen des aktuellen Zeichens. Currencies[0] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_BASE); Currencies[1] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT); // Nimmt anstehende wichtige Ereignisse nach Symbolwährungen auf. Calendar.Set(Currencies); Print(Calendar.ToString()); // Sie wurden ausgedruckt. }
Eine solche Einbettung in Informationssysteme ermöglicht es, über wichtige anstehende Kalenderereignisse in Expert Advisors/Indikatoren zu informieren.
Backtest auf Fundamentaldaten.
Nachfolgend sehen Sie einen Expert Advisor, der die NonFarm Payrolls handelt, indem er aktuelle und prognostizierte Werte vergleicht.
// Expert Advisor für den Handel in MT4/5-Tester auf die Geschichte der fundamentalen Daten. #define CALENDAR_FILENAME "Calendar.bin" // Dateiname zum Lesen/Schreiben des Kalenders. #property tester_file CALENDAR_FILENAME // Gibt an, dass MT5-Tester diese Datei abholt. #include <fxsaber\Calendar\Calendar.mqh> // Kalender - Fundamentalanalyse in Geschichte und Echtzeit. input group "Calendar" input string inCurrency = "USD"; // Währung input string inFilterName = "payrolls"; // FilterName input group "EA" input int inTP = 1000; // TakeProfit input int inSL = 1000; // StopLoss input bool inReverse = true; // Handelsrichtung CALENDAR Calendar; // Objekt mit Kalenderdaten. int OnInit() { bool Res = false; if (MQLInfoInteger(MQL_TESTER)) // Wenn Sie im Tester arbeiten { Res = Calendar.Load(CALENDAR_FILENAME) && // Lädt die Ereignisse aus der Datei. Calendar.FilterByCurrency(inCurrency) && // Anwendung eines Währungsfilters. Calendar.FilterByName(inFilterName); // Anwendung eines Filters auf den Ereignisnamen. if (!Res) // Wenn es Probleme mit den geladenen Daten gibt, Print("Run the EA in the MT5-Terminal!"); // berichtet, dass Sie sie erhalten müssen, indem Sie den EA im MT5-Terminal ausführen. } #ifdef __MQL5__ // Arbeiten im Terminal. else if (Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, 0, 0) && // Lädt absolut alle Ereignisse (Historie + Zukunft) vom MT5-Terminal. Calendar.Save(CALENDAR_FILENAME)) // Speichern Sie sie in einer Datei. MessageBox("You can run the EA in the MT4/5-Tester."); // Berichtet, dass wir jetzt in MT4/5-Tester arbeiten können. #endif // #ifdef __MQL5__ return(!Res); } void OnTick() { static int Pos = Calendar.GetPosAfter(TimeCurrent()); // Ermittelt die Position des Ereignisses im Kalender, die direkt nach der aktuellen Zeit liegt. if ((Pos < Calendar.GetAmount()) && // Wenn Sie noch nicht über den Kalender hinausgegangen sind (Calendar[Pos].time < TimeCurrent())) // und die aktuelle Zeit hat das Ereignis überschritten. { const EVENT Event = Calendar[Pos]; // Das entsprechende Ereignis wurde empfangen. if ((Event.Actual != LONG_MIN) && (Event.Forecast != LONG_MIN)) // Wenn die aktuellen und prognostizierten Werte des Ereignisses gesetzt sind { Print(Event.ToString()); // Drucken Sie dieses Ereignis in seiner Gesamtheit. if (Event.Actual > Event.Forecast) // Wenn der aktuelle Wert größer ist als der prognostizierte Wert, PositionOpen(inReverse, "Act.(" + Event.ActualToString() + ")>(" + Event.ForecastToString() + ")For."); // Öffnen Sie eine Position in einer Richtung. else PositionOpen(!inReverse, "Act.(" + Event.ActualToString() + ")<=(" + Event.ForecastToString() + ")For."); // Andernfalls eine andere Richtung. } Pos = Calendar.GetPosAfter(TimeCurrent(), Pos); // Ermittelt die Position des Ereignisses im Kalender, die direkt nach der aktuellen Zeit liegt. } } #include <MT4Orders.mqh> // https://www.mql5.com/de/code/16006 #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID) #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) // Öffnet eine Position mit dem angegebenen Kommentar. 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)); }
Führen Sie ihn einmal im MT5-Terminal aus, um alle historischen Daten zu speichern (~60 Mb). Danach werden sie im Tester verfügbar sein.
Ergebnis (für sechs Jahre zu H1-Eröffnungskursen).
Merkmale.
- Verwendet keine DLLs, kann im Marketplace laufen.
- Plattformübergreifender Betrieb: im MT4 werden die Daten aus der Datei geholt.
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/32430

Daten des Prüfers in einem Durchgang.

BBMA ZoneZeroLoss Histogram zeigt Handelsbereiche z.b. für "Reentry"-Setup für Risiko Minimierung

Erkennung des Beginns eines neuen Balkens oder einer neuen Kerze im OnTick()-Ereignishandler eines Expert Advisors.

Algorithmuszyklus: Wenn es keine offenen Positionen gibt, öffnen Sie zwei entgegengesetzte Positionen. Warten Sie, bis beide Positionen geschlossen sind.