Einige Fragen sind weggefallen. Die Uhrzeit wurde festgelegt. Es stellte sich heraus, dass es ganz einfach war. Die Uhrzeit ist GMT, und die Website wurde mit GMT+3 dargestellt, so dass sich alle meine Missverständnisse summierten.
Hier ist das erste Ergebnis: Empfangene Ereignisbeschreibung, erste Zeile im Bild
2019.07.24 11:29:03.972 !00 (EURUSD,H1) время и дата события - 2019.07.24 13:45:00 2019.07.24 11:29:03.972 !00 (EURUSD,H1) идентификатор события - 840500001 2019.07.24 11:29:03.972 !00 (EURUSD,H1) тип события из перечисления ENUM_CALENDAR_EVENT_TYPE - CALENDAR_TYPE_INDICATOR 2019.07.24 11:29:03.972 !00 (EURUSD,H1) сектор, к которому относится событие - CALENDAR_SECTOR_BUSINESS 2019.07.24 11:29:03.972 !00 (EURUSD,H1) частота (периодичность) события - CALENDAR_FREQUENCY_MONTH 2019.07.24 11:29:03.972 !00 (EURUSD,H1) режим времени события - CALENDAR_TIMEMODE_DATETIME 2019.07.24 11:29:03.972 !00 (EURUSD,H1) идентификатор страны - 840 2019.07.24 11:29:03.972 !00 (EURUSD,H1) текстовое имя страны (в текущей кодировке терминала) - Соединенные Штаты 2019.07.24 11:29:03.972 !00 (EURUSD,H1) единица измерения значения экономического индикатора - CALENDAR_UNIT_NONE 2019.07.24 11:29:03.972 !00 (EURUSD,H1) важность события - CALENDAR_IMPORTANCE_MODERATE 2019.07.24 11:29:03.972 !00 (EURUSD,H1) множитель значения экономического индикатора - CALENDAR_MULTIPLIER_NONE 2019.07.24 11:29:03.972 !00 (EURUSD,H1) количество знаков после запятой - 1 2019.07.24 11:29:03.972 !00 (EURUSD,H1) URL источника, где публикуется событие - https://www.markiteconomics.com 2019.07.24 11:29:03.972 !00 (EURUSD,H1) код события - markit-manufacturing-pmi 2019.07.24 11:29:03.972 !00 (EURUSD,H1) текстовое имя события на языке терминала (в текущей кодировке терминала) - Индекс менеджеров по закупкам в производственном секторе от Markit
Frage an die Entwickler:
Warum funktioniert dieser Code aus der Dokumentation, mit kleinen Änderungen
void OnStart() { MqlCalendarValue values[]; //--- запросим историю событий от текущего времени до конца сегодняшнего дня. if(CalendarValueHistory(values,TimeCurrent(),iTime(_Symbol, PERIOD_D1, 0)+PeriodSeconds(PERIOD_D1))) { PrintFormat("Получены значения событий по country_code=%s: %d", ArraySize(values)); //--- выведем значения событий в Журнал ArrayPrint(values); } else { PrintFormat("Ошибка! Не удалось получить события по стране country_code=%s"); PrintFormat("Код ошибки: %d",GetLastError()); } //--- }
zeigt, dass die Größe des Werte-Arrays Null ist, gibt aber trotzdem alles im Kalender aus. Das heißt, alle Ereignisse werden empfangen.
2019.07.24 15:20:33.131 !00 (EURUSD,H1) Получены значения событий по country_code=(non-string passed): 0 2019.07.24 15:20:33.131 !00 (EURUSD,H1) [id] [event_id] [time] [period] [revision] [actual_value] [prev_value] [revised_prev_value] [forecast_value] [impact_type] [reserved] 2019.07.24 15:20:33.131 !00 (EURUSD,H1) [0] 97265 76020013 2019.07.24 15:30:00 1970.01.01 00:00:00 0 -9223372036854775808 -1227000 -9223372036854775808 -2405000 0 0 2019.07.24 15:20:33.131 !00 (EURUSD,H1) [1] 87842 840220012 2019.07.24 17:00:00 1970.01.01 00:00:00 0 -9223372036854775808 1791000 -9223372036854775808 -9223372036854775808 0 0 2019.07.24 15:20:33.131 !00 (EURUSD,H1) [2] 93625 410010011 2019.07.24 23:00:00 2019.04.01 00:00:00 1 -9223372036854775808 -400000 -9223372036854775808 400000 0 0 2019.07.24 15:20:33.131 !00 (EURUSD,H1) [3] 93626 410010012 2019.07.24 23:00:00 2019.04.01 00:00:00 1 -9223372036854775808 1700000 -9223372036854775808 2900000 0 0 2019.07.24 15:20:33.131 !00 (EURUSD,H1) [4] 87394 392060016 2019.07.24 23:50:00 2019.06.01 00:00:00 0 -9223372036854775808 800000 -9223372036854775808 0 0 0 2019.07.24 15:20:33.131 !00 (EURUSD,H1) [5] 97012 392070003 2019.07.24 23:50:00 2019.07.20 00:00:00 0 -9223372036854775808 950000000 -9223372036854775808 -9223372036854775808 0 0 2019.07.24 15:20:33.131 !00 (EURUSD,H1) [6] 97013 392070004 2019.07.24 23:50:00 2019.07.20 00:00:00 0 -9223372036854775808 -93100000 -9223372036854775808 -9223372036854775808 0 0
Wo, was hat keine Zeit zu arbeiten?
Ja, ich danke Ihnen. Das habe ich bereits geklärt. Ich habe beim Fixieren des Beispiels aus der Dokumentation einen Fehler gemacht.
@Renat Fatkhullin Renat, können wir hoffen, dass es eines Tages eine Funktion wie TimeGMTOffset() geben wird, die nur die Serverzeit und nicht die Ortszeit berücksichtigt? Denn die wirtschaftlichen Kalenderfunktionen verwenden die GMT-Zeit und die Ortszeit stimmt oft nicht mit der Serverzeit überein. Wenn ich also Nachrichtenzeit bekomme, muss ich sie in Terminalzeit umwandeln. Ich verstehe, dass es Probleme geben kann, wenn man diese Funktion am Wochenende aufruft, aber sie kann eine Art Fehler erkennen, dass diese Funktion zu dieser Zeit nicht verfügbar ist, oder was auch immer.
Bisher habe ich das so gemacht: in OnInit() wird die Zeitdifferenz berechnet und in eine globale Variable geschrieben. Aber ich mag es nicht wirklich. Meiner Meinung nach wäre es besser, die integrierte Funktion aufzurufen und die Nachrichtenzeit an die Serverzeit anzupassen. Vor allem das Terminal hat wahrscheinlich auch an Wochenenden Serverzeit zur Verfügung.
@Renat Fatkhullin Renat, können wir hoffen, dass es eines Tages eine Funktion wie TimeGMTOffset() geben wird, die nur die Serverzeit und nicht die Ortszeit berücksichtigt? Denn die wirtschaftlichen Kalenderfunktionen verwenden die GMT-Zeit und die Ortszeit stimmt oft nicht mit der Serverzeit überein. Wenn ich also Nachrichtenzeit bekomme, muss ich sie in Terminalzeit umwandeln. Ich verstehe, dass es Probleme geben kann, wenn man diese Funktion an Wochenenden aufruft, aber es ist möglich, eine Art Fehler festzustellen, dass diese Funktion im Moment nicht verfügbar ist oder etwas anderes.
Bisher habe ich das getan: in OnInit() wird die Zeitdifferenz berechnet und in die globale Variable geschrieben. Aber ich mag es nicht wirklich. Meiner Meinung nach wäre es besser, die integrierte Funktion aufzurufen und die Nachrichtenzeit an die Serverzeit anzupassen. Vor allem das Terminal hat wahrscheinlich auch an Wochenenden Serverzeit zur Verfügung.
Natürlich ist sie verfügbar, sie wurde bereits angefordert.
Natürlich ist sie verfügbar, das wurde bereits beantragt.
Vitaly, jeder Antrag muss begründet werden. Ich hoffe, ich habe genügend Argumente für die Notwendigkeit einer solchen Funktion geliefert. Jetzt hängt es von der Arbeitsbelastung der Programmierer des Unternehmens ab und davon, wie die Argumente verstanden und akzeptiert werden. Ich hoffe es.
Welche Informationen können aus dem Kalender entnommen werden: (Werte, die von der Software verwendet werden und für den Menschen wenig aussagekräftig sind, werden hier nicht aufgeführt)
- Name des Landes
- Währung der Länder
- Art der Veranstaltung
Veranstaltung (Kundgebung, Rede, etc.) |
Indikator |
Urlaub |
- Sektor, zu dem das Ereignis gehört
Markt, Börse |
Bruttoinlandsprodukt (BIP) |
Arbeitsmarkt |
Preise |
Geld |
Handel |
Regierung |
Business |
Verbrauch |
Gehäuse |
Steuern |
Feiertage |
- Textname des Ereignisses in der Sprache des Terminals (in der aktuellen Kodierung des Terminals)
- Uhrzeit und Datum der Veranstaltung
- Berichtszeitraum des Ereignisses
- aktueller Wert des Parameters
- vorheriger Wert des Parameters
- korrigierter früherer Wert des Indikators
- prognostizierter Wert eines Indikators
- mögliche Auswirkungen auf den Wechselkurs
Keine Auswirkungen angezeigt |
Positive Auswirkungen |
Negative Auswirkungen |
Leider habe ich außer dem Verbot, Positionen vor der Veröffentlichung von Nachrichten zu eröffnen, keine anderen Lösungen gefunden. Ich möchte herausfinden, welche von ihnen verwendet werden können und wie man auf sie reagiert.
So wie ich es verstehe, sind die hervorgehobenen Werte sehr wichtig für die Entscheidung, wie man auf die Nachrichten reagiert, aber ich verstehe nicht, wie. Ich lade zur Diskussion ein.
Welche Informationen können aus dem Kalender entnommen werden: (Werte, die vom Programm verwendet werden und für den Menschen wenig aussagekräftig sind, werden hier nicht aufgeführt)
- Name des Landes
- Währung der Länder
- Art der Veranstaltung
Veranstaltung (Kundgebung, Rede, etc.) |
Indikator |
Urlaub |
- Sektor, zu dem das Ereignis gehört
Markt, Börse |
Bruttoinlandsprodukt (BIP) |
Arbeitsmarkt |
Preise |
Geld |
Handel |
Regierung |
Business |
Verbrauch |
Gehäuse |
Steuern |
Feiertage |
- Textname des Ereignisses in der Sprache des Terminals (in der aktuellen Kodierung des Terminals)
- Uhrzeit und Datum der Veranstaltung
- Berichtszeitraum des Ereignisses
- aktueller Wert des Parameters
- vorheriger Wert des Parameters
- korrigierter früherer Wert des Indikators
- prognostizierter Wert eines Indikators
- mögliche Auswirkungen auf den Wechselkurs
Keine Auswirkungen angezeigt |
Positive Auswirkungen |
Negative Auswirkungen |
Leider habe ich außer dem Verbot, Positionen vor der Veröffentlichung von Nachrichten zu eröffnen, keine anderen Lösungen gefunden. Ich möchte herausfinden, welche von ihnen verwendet werden können und wie man auf sie reagiert.
So wie ich es verstehe, sind die hervorgehobenen Werte sehr wichtig, um zu entscheiden, wie man auf die Nachrichten reagiert, aber ich verstehe nicht, wie. Ich lade zur Diskussion ein.
Hier ist meine Variante des Nachrichtenindikators. Das Terminal informiert über den Zeitpunkt der Veröffentlichung von Nachrichten nach Währungen, wobei auch der Grad der Wichtigkeit ausgewählt werden kann. Die Information wird als vertikale Linie auf dem Preisdiagramm angezeigt. Im Unterfenster sehen Sie das Histogramm der letzten Datenwerte in chronologischer Reihenfolge, bezogen auf die Prognose der als wichtig eingestuften Nachricht. Je nach Art der Nachricht (Zinssätze, Arbeitslosenquote, Verbraucherpreisindex, BIP usw.) können die Werte in chronologischer Reihenfolge dargestellt werden. Das erhaltene Diagramm sollte zeitlich und skalentechnisch mit dem Preisdiagramm synchronisiert sein, wenn der Zeitrahmen gewechselt wird. Außerdem bin ich an der Geschwindigkeit interessiert, mit der ich aktuelle Daten erhalte.
Hier ist meine Version des Nachrichtenindikators. Das Terminal wird mit den Zeitpunkten der Veröffentlichung von Nachrichten für die von Ihnen gewählten Währungen gefüttert, der Grad der Wichtigkeit ist ebenfalls wählbar. Die Information wird mit einer vertikalen Linie auf dem Preisdiagramm angezeigt. Im Unterfenster zeichnen wir, in chronologischer Reihenfolge, ein Histogramm der letzten Datenwerte der Nachrichten, die der Klasse "wichtig" zugeordnet sind. Das erhaltene Diagramm sollte zeitlich mit dem Preisdiagramm synchronisiert werden, wenn Sie die TF wechseln. Auch die Geschwindigkeit, mit der aktuelle Daten abgerufen werden, ist von Interesse.
Sie meinen Histogramme für die gesamte Tiefe der auf dem Diagramm verfügbaren Historie?
Sie liefert jedoch keine Informationen für Echtzeitanwendungen. Oder habe ich das völlig falsch verstanden? Nun, die Prognose und der aktuelle Wert wurden ermittelt, wir haben das Histogramm eingestellt, und dann? Nur manuell eine Entscheidung treffen?
Ich habe die Geschwindigkeit der Datenaktualisierung im Kalender nicht überprüft, und die Geschwindigkeit des Empfangs fertiger Daten sollte gemessen werden, aber ich habe keinen solchen Wunsch, weil die Geschwindigkeit recht hoch ist.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Ich möchte verstehen, wie der MQL5-Wirtschaftskalender funktioniert, aber irgendetwas bewegt sich nicht sehr schnell. Ich habe den größten Teil des gestrigen Tages und den Anfang des heutigen Tages damit verbracht, aber ich verstehe immer noch nicht, warum CalendarValueHistory nicht alle Ereignisse zurückgibt. Oder vielleicht verwechsle ich sie, diese Ereignisse, ein wenig...
Gestern habe ich um xx:45 Uhr, wie im Kalender angegeben, 4 Ereignisse erhalten. Ich schreibe die Ereignisstunden als "xx", weil die empfangene Zeit nicht mit der in der Tabelle übereinstimmt. Aber zumindest könnte man verstehen, dass dies an der Differenz zwischen der angegebenen Zeit und der Zeit des Terminals oder Servers liegt, von dem die Daten bezogen wurden. Aber jetzt habe ich nur 3 Veranstaltungen mit :45 Minuten und ich kann nicht verstehen, warum.
Und Frage an die Entwickler: Warum sind im Array das erste Datum 2019.07.25 00:00 und die nächsten Zeilen aufsteigend sortiert. Siehe die resultierende Liste.