ライブラリ: カレンダー - ページ 8

 
AdrianR007 #:
例のコードを使用していますが、イベントが発生したときに現在値が更新されません。

このサンプルは、Testerでカレンダーがどのように動作するかを示すために作成されました。この例にはこのような説明があります。

MT5-Terminalでこれを一度実行し、すべての履歴データ(~60 Mb)を保存してください。その後、それらはTesterで利用可能になります。

残念ながら、あなたは不明瞭な発言を繰り返し、「彼は何を言いたかったのだろう」と仮説を立てるのに時間を取られています。

 
fxsaber #:

このサンプルは、Testerでカレンダーがどのように機能するかを示すために作成されました。以下の説明が付属しています。

残念なことに、あなたは不明瞭な発言を繰り返し、私が「彼は何を言いたかったのだろう」と仮説を立てるのに時間を取られている。

ニュースが発生した瞬間、現在値は期待値に対して更新されていないので、操作は実行されません。 私が言っているのは、リアルタイムでのニュース項目での操作についてであり、テストでの操作についてではない。 テストモードでは非常にうまくいきます。
 
AdrianR007 #:
ニュースが発生した瞬間、現在値は期待値に対して更新されていないため、操作は実行されない。 私が言っているのは、リアルタイムでのニュース項目での操作についてであり、テストでの操作についてではない。 テストモードでは非常にうまくいきます。

取引、自動取引システム、取引戦略のテストに関するフォーラム。

ライブラリ: カレンダー

ビリオネアクラブ, 2023.02.23 19:35

このライブラリは自己更新型ではなく、mql5から新鮮なデータを取得するためにカレンダーからidを使用します。


 
Enrique Dangeroux #:

エンリケ、ありがとう。もしかしたら、これを行うための例をご存知ですか?
 
AdrianR007 #:
エンリケ、ありがとう。たぶん、これを行うための例を持っていますか?

基本的なコーディングのレッスンをする時間はありません。ドキュメントを読むか、フォーラムで質問してください。

余談ですがニュースを取引したい場合、MQLカレンダーは役に立たない。数秒、数分、数時間の遅れがある。

 
AdrianR007 #:
ニュースが発生した瞬間、現在値は期待値に対して更新されていないため、操作は実行されない。 私が言っているのは、リアルタイムでのニュース項目での操作についてであり、テストでの操作についてではない。 テストモードでは非常にうまくいきます。

あなたが何を実行しているかは知りません。カレンダーのデータ更新については、以下の議論を お読みください。


ライブラリはカレンダータブで利用可能なデータのみを提供します。

MetaTrader5 calendar updates - I'm looking to improve my news trading robot for MT5 platform calendar updates: Is it possible the same broker-by-broker
MetaTrader5 calendar updates - I'm looking to improve my news trading robot for MT5 platform calendar updates: Is it possible the same broker-by-broker
  • 2022.07.14
  • www.mql5.com
I would like to ask about mt5 platform calendar updates: is platform's calendar updated about actual values in real time. Is it possible  updating time is not the same broker-by-broker. Yes, i'm looking how to improve my news trading robot
 
fxsaber #:

あなたが何を実行しているかは知らない。カレンダーのデータ更新については、以下のディスカッションを お読みください。


ライブラリはカレンダータブで利用可能なデータのみを提供します。

ありがとうございます。これでスッキリしました!!・・・。
 

MT5のカレンダーを理解 する唯一の方法は、BEFORE/AFTERの値を比較することです。

#include <fxsaber\Calendar\Calendar.mqh> //https://www.mql5.com/ja/code/32430

void OnStart()
{
  CALENDAR Calendar;
  
  if (Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, 0, 0)) // MT5-Terminalから絶対にすべてのイベント(履歴+未来)をロードします。
  {
    const string FileName = "Calendars\\" + AccountInfoString(ACCOUNT_SERVER) + "\\Calendar_" +
                            AccountInfoString(ACCOUNT_SERVER) + "_" + TimeToString(TimeCurrent(), TIME_DATE) + ".bin";
    
    Calendar.Save(FileName); // 将来、米国と欧州が同期するときの比較のために保存。
  }
}

明らかに、誰もそんなことはしない。

 

取引、自動取引システム、取引戦略のテストに関するフォーラム

ライブラリ: カレンダー

fxsaber, 2023.01.07 21:31.

カレンダーの日付の自動修正機能を作った方が良さそうですね。

取引サーバーと一致するカレンダーの補正器を取得するようです。

#property script_show_inputs

input ulong inEventID = 840030006; // イベントID
input string inName = ""; // 名前 -> イベントID (非農業部門雇用者数 -> 840030016)
input datetime inFrom = D'2020.01.01';
input bool inDST = true;

void OnStart()
{
  CALENDAR Calendar;
    
  if (inName == "")
  {
    Calendar.Set(inEventID);
    Calendar.FilterByTime(inFrom, TimeCurrent());
    
    Calendar.CorrectTime(); // MQL-カレンダーの特殊性を回避する: https://www.mql5.com/ru/forum/444094/page14#comment_46213385
    
    if (inDST)
      Calendar.DST(); // 取引サーバーが欧州時間に同期している場合に呼び出します。
  
    for (int i = Calendar.GetAmount() - 1; i >= 0; i--)
    {
      const EVENT Event = Calendar[i];    
      const datetime ChartNews = ChartNewsTime(Event.time); //https://www.mql5.com/ru/forum/357793/page5#comment_44225999
      
      if (Event.time != ChartNews)    
        Print("-" + (string)Event.EventID + ": " + TimeToString(ChartNews) + " != " + Event.ToString());
      else
        Print("+" + (string)Event.EventID + ": " + TimeToString(ChartNews) + " == " + Event.ToString());
    }
  }
  else // 名前でEventIDを取得する。
  {
    string Currencies[2];
    
    // 現在の文字の通貨を取得します。
    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());
  }
}


結果

+840030016: 2023.04.07 15:30 == 2023.04.07 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 236 K | -8 K | 311 K | 326 K
+840030016: 2023.03.10 15:30 == 2023.03.10 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 311 K | -35 K | 517 K | 504 K
+840030016: 2023.02.03 15:30 == 2023.02.03 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 517 K | 16 K | 223 K | 260 K
+840030016: 2023.01.06 15:30 == 2023.01.06 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 223 K | 57 K | 263 K | 256 K
+840030016: 2022.12.02 15:30 == 2022.12.02 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 263 K | -30 K | 261 K | 284 K
+840030016: 2022.11.04 14:30 == 2022.11.04 14:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 261 K | -97 K | 263 K | 315 K
+840030016: 2022.10.07 15:30 == 2022.10.07 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 263 K | 33 K | 315 K | 
+840030016: 2022.09.02 15:30 == 2022.09.02 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) | 315 K | 156 K | 528 K | 526 K

取引、自動取引システム、取引戦略のテストに関するフォーラム

MetaTrader 5ビルド3660の新バージョン:改善と修正

fxsaber, 2023.04.12 11:26 AM

同じ時間帯のウェブカレンダーのニュースを見てみましょう。

ウェブカレンダーと一致しています。明らかな不一致を見つけた人がいたら教えてください。

これが今のバックテスト用のカレンダーの正しい使い方のようです。

 
fxsaber #:

どうやら、トレードサーバーにマッチしたカレンダー修正機であることが判明したようだ。


結果は

ウェブ・カレンダーと一致。もし、明らかな不一致があれば、教えてください。

これで、バックテストにカレンダーを使うのは正しいようだ。

しかし、それが他の国の時間だったらどうだろう?国によって時刻の日付が違うことは知っている。