経済カレンダー質問、議論

 

MQL5の経済カレンダーの 仕組みを理解したいのですが、何かなかなか動きません。昨日から今日の初めにかけてほとんどを費やしましたが、CalendarValueHistoryがすべてのイベントを返さない理由がまだ分かっていません。それとも、私が少し混乱させているのでしょうか、これらの出来事を...。

昨日はカレンダーに書いてある通りxx:45に4つのイベントを取得していました。イベント時間を "xx "と書いているのは、受信した時間が表と違うからです。しかし、少なくとも、指定された時刻とデータを取得した端末やサーバーの時刻が異なるためであることは理解できるだろう。でも、今は45分のイベントが3つしかなくて、なぜなのか理解できません。

開発者への質問:配列の最初の日付 2019.07.25 00:00 と次の行が昇順でソートされているのはなぜですか?結果のリストをご覧ください。

2019.07.24 10:12:22.297 !00 (EURUSD,H1)        [id] [event_id]              [time]            [period] [revision]       [actual_value]         [prev_value] [revised_prev_value]     [forecast_value] [impact_type] [reserved]
2019.07.24 10:12:22.297 !00 (EURUSD,H1) [ 0]  96782   76020005 2019.07.25 00:00:00 1970.01.01 00:00:00          0 -9223372036854775808 -9223372036854775808 -9223372036854775808 -9223372036854775808             0          0
2019.07.24 10:12:22.297 !00 (EURUSD,H1) [ 1]  96840   76030003 2019.07.24 11:00:00 2019.07.01 00:00:00          0 -9223372036854775808             88500000 -9223372036854775808             91600000             0          0
2019.07.24 10:12:22.297 !00 (EURUSD,H1) [ 2] 100501  484020006 2019.07.24 11:00:00 2019.07.01 00:00:00          0 -9223372036854775808                10000 -9223372036854775808               110000             0          0
2019.07.24 10:12:22.297 !00 (EURUSD,H1) [ 3] 100502  484020007 2019.07.24 11:00:00 2019.07.01 00:00:00          0 -9223372036854775808               160000 -9223372036854775808               130000             0          0
// Пропущено, удалено вручную.
2019.07.24 10:12:22.297 !00 (EURUSD,H1) [59]  93627  410010001 2019.07.25 21:00:00 2019.07.01 00:00:00          0 -9223372036854775808             97500000 -9223372036854775808             97000000             0          0
2019.07.24 10:12:22.297 !00 (EURUSD,H1) [60]  87322  392030006 2019.07.25 23:30:00 2019.07.01 00:00:00          0 -9223372036854775808               900000 -9223372036854775808               900000             0          0
2019.07.24 10:12:22.297 !00 (EURUSD,H1) [61]  87323  392030004 2019.07.25 23:30:00 2019.07.01 00:00:00          0 -9223372036854775808              1100000 -9223372036854775808              1100000             0          0
2019.07.24 10:12:22.297 !00 (EURUSD,H1) [62]  87324  392030005 2019.07.25 23:30:00 2019.07.01 00:00:00          0 -9223372036854775808               800000 -9223372036854775808               800000             0          0
 

疑問が解消されたものもあります。時間が整理された。単純なことがわかった。時間はGMTで、サイトはGMT+3で表現されており、それゆえ私の誤解はすべて積み重なった。

最初の結果はこちら:Receivedイベントの説明文、画像の1行目


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
 

開発者の方に質問です。

なぜ、ドキュメントにあるこのコードを、少し修正すると

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()); 
     } 
//---
}

は、配列のサイズが ゼロであることを示しますが、それにもかかわらず、カレンダーのすべてをプリントアウトしています。つまり、すべてのイベントを受信する。

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

どこで、何が働く時間を持っていないのですか?

 
フォーマット行の%s は不要です。
 
Renat Fatkhullin:
フォーマット文字列の%sは冗長です

はい、ありがとうございます。それはもう解決済みです。ドキュメントにある例を修正するときに失敗してしまいました。

 

Renat Fatkhullin Renatさん、いつかTimeGMTOffset()のような関数が、ローカルタイムではなくサーバータイムだけで作られることを期待してもいいでしょうか?経済カレンダー機能はGMT時間を使用しており、ローカルタイムとサーバータイムが一致しないことが多いからです。だから、ニュースの時間が来ても、それを端末の時間に変換しなければならないんです。週末にこの機能を呼び出すと問題があることは理解していますが、この機能は現在使用できません、とか、何らかのエラーを検出することができます。

今のところ、OnInit()でタイミング差を計算し、グローバル変数に書き込む、というような感じで作っています。でも、あまり好きではないんです。私見では、内蔵の関数を呼び出して、ニュースの時刻をサーバーの時刻に合わせる方が良いと思います。特に端末は土日もサーバーの時間が空いているのでしょう。

 
Alexey Viktorov:

Renat Fatkhullin Renatさん、いつかTimeGMTOffset()のような関数が、ローカルタイムでなくサーバータイムだけで作られることを期待しても良いですか?経済カレンダー機能はGMT時間を使用しており、ローカルタイムとサーバータイムが一致しないことが多いからです。だから、ニュースの時間をもらったら、それを端末の時間に変換する必要がある。週末にこの機能を呼び出すと問題が発生することがあるのは理解していますが、この機能は現在使用できないとか、何らかのエラーと判断することは可能です。

OnInit()で時差を計算し、グローバル変数に書き込んでいます。でも、あまり好きではないんです。私見では、内蔵の関数を呼び出して、ニュースの時刻をサーバーの時刻に合わせる方が良いと思います。特に端末は土日もサーバーの時間が空いて いるのでしょう。

もちろん使えますよ、これはすでに要望がありました。

 
Vitaly Muzichenko:

もちろん利用可能です。これはすでに要望されていることです。

Vitaly どんな要求も正当化される必要があるんだ。このような機能の必要性について、十分な論証ができたと思います。あとは、その会社のプログラマーの仕事量と、主張がどう理解され受け入れられるかによります。そうであってほしい。

 

カレンダーから得られる情報:(ソフトウェアが使用する値で、人間にはほとんど情報がないものはここに記載しません。)

  • 国名
  • 各国の通貨
  • 種目

イベント(集会、演説会など)

インジケーター

ホリデー


  • イベントの属するセクター

市場、証券取引所

国内総生産(GDP)

労働市場

価格

お金

貿易

政府

事業内容

消費量

ハウジング

税金

ホリデー


  • 端末の言語でのイベントのテキスト名(端末の現在のエンコーディングで)
  • 開催日時
  • 開催報告期間
  • パラメーターの現在値
  • 前回のパラメータ値
  • 修正前指標値
  • 予想値
  • 為替への影響の可能性

影響なし

ポジティブな影響

ネガティブな影響


残念ながら、ニュースリリース前にポジションを持つことを禁止すること以外、他の解決策は見当たりません。その中でどれが使えるのか、どう反応するのか、見極めたい。

このように、強調された価値観は、ニュースへの反応を決める上で非常に重要であると理解していますが、どのように理解しているかはわかりません。議論を呼びかける。

 
Alexey Viktorov:

カレンダーから得られる情報:(プログラムで使用され、人間にはほとんど情報がない値はここに記載しない)

  • 国名
  • 各国の通貨
  • 種目

イベント(集会、演説会など)

インジケーター

ホリデー


  • イベントの属するセクター

市場、証券取引所

国内総生産(GDP)

労働市場

価格

お金

貿易

政府

事業内容

消費量

ハウジング

税金

ホリデー


  • 端末の言語でのイベントのテキスト名(端末の現在のエンコーディングで)
  • 開催日時
  • 開催報告期間
  • パラメーターの現在値
  • 前回のパラメータ値
  • 修正前指標値
  • 指標予測値
  • 為替への影響の可能性

影響なし

ポジティブな影響

ネガティブな影響


残念ながら、ニュースリリース前にポジションを持つことを禁止すること以外、他の解決策は見当たりません。その中でどれが使えるのか、どう反応するのか、見極めたい。

このように、ニュースへの反応を決めるには、強調された価値観が非常に重要であることは理解できますが、どのようにすればよいのかがわかりません。議論を呼びかける。

ここでは、私が考案したニュース指標のバリエーションを紹介します。ニュースリリース時刻を通貨別に表示し、重要度を選択することができます。情報は、価格チャート上に縦線で表示されます。サブウィンドウでは、重要度に分類されたニュースの予測に対して、最新のデータ値を時系列に並べたヒストグラムを見ることができます。ニュースの種類(金利、失業率、消費者物価指数、GDPなど)に応じて、時系列に値をプロットすることができます。 取得したチャートは、タイムフレームを切り替えたときに価格チャートと時間・スケールが同期している必要があります。 また、実際のデータを取得するスピードも気になるところです。

 
Vladimir Kononenko:

ここでは、私バージョンのニュースインジケーターを紹介します。また、重要度の選択も可能です。この情報は、価格チャート上に縦線で表示されます。サブウィンドウでは、class-importantに属するニュースの最新データ値のヒストグラムを時系列に描画します。TFを切り替える際には、取得したチャートが価格チャートと時間的に同期している必要があります。実データ取得のスピードも気になるところです。

チャートで利用できる履歴の全深度に対するヒストグラムのことでしょうか。

しかし、リアルタイムに応用するための情報は得られない。それとも、私が完全に誤解しているのでしょうか?さて、予想値と現在値が得られて、ヒストグラムを設定して、それで?手動でしか判断できない?

カレンダーのデータ更新のスピードは確認していませんし、レディデータの受信のスピードも測るべきですが、かなり高速なのでそのような欲求はありません。

理由: