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

 

ありがとう、fxsaber、

スクリプトは素晴らしいです。私はMT5初心者で、貴社のカレンダー・スクリプトを使用しています。ヒストリカルデータについて、経済データが属する期間を 追加するにはどうすればよいでしょうか?(例:1月発表のデータは1月に属する)?


ありがとうございます、

エドウィン

 
eapricorn 期間を 追加するにはどうすればよいですか?(例えば、リリースデータの1月は1月に属する)?
#include <fxsaber\Calendar\Calendar.mqh> //https://www.mql5.com/ja/code/32430

void OnStart()
{
  CALENDAR Calendar;
  
  Calendar.Set(NULL, CALENDAR_IMPORTANCE_HIGH, D'2023.01.01', D'2023.02.01');
  
  Print(Calendar.ToString());
}
 
fxsaber # :

fxsaberさん、こんにちは、


メッセージをありがとう。私の質問の解釈が間違っていたようで申し訳ありません。実は、私はMT5の「カレンダー・ウィンドウ」について言及しているのですが、通常、期間欄には「1月」があり、本日発表される経済データ「2023年2月2日」が実際には1月の経済データを指していることを示しています(添付の画像)。しかし、スクリプトを見ると、データの発表日だけがあり、「期間」は指定されていません。(添付画像)。

MqlCalendarValueを 検索し、"Period "の日付にValue.periodを使用してみましたが、1970.01.01という非常に奇妙な値が得られました(添付画像)。

periodが使用可能かどうか、スクリプトに追加する方法を教えてください。ありがとうございました。

ファイル:
Calendar.jpg  298 kb
MT5_calendar.jpg  414 kb
MetaEditor.jpg  465 kb
 
eapricorn #:

実は、MT5の'カレンダー・ウィンドウ'を参照しているのですが、通常、期間欄には'1月'があり、今日発表される経済データ'2023年2月2日'は、実際には1月の経済データを参照していることを示しています(添付の写真)。

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

struct CALENDAR_EVENT : public EVENT
{
  string ToString() const
  {
    struct CALENDAR_VALUE : public MqlCalendarValue
    {
      string ToString( void ) const
      {
        static const string Month[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
        static const string Quarter[] = {"Q1", "Q2", "Q3", "Q4"};
        
        MqlDateTime Time;
    
        return((this.period && ::TimeToStruct(this.period, Time) ? (this.revision ? Quarter[(Time.mon - 1) / 3]
                                                                                  : Month[Time.mon - 1] + ((Time.day != 1) ? " " + (string)Time.day : NULL))
                                                                 : NULL));
      }
    } Value;

    return(this.EVENT::ToString() + (::CalendarValueById(this.id, Value) ? Value.ToString() : NULL));
  }
};

void OnStart()
{  
  CALENDAR Calendar;
  
  Calendar.Set();
  
  const int Size = Calendar.GetAmount();
  
  for (int i = 0; i < Size; i++)
  {
    const CALENDAR_EVENT Event = Calendar[i];
    
    Print(Event.ToString());
  }
}


2023.02.02 16:15 GBP 3 BoE Governor Bailey Speech (boe-governor-bailey-speech), United Kingdom (GB) |  |  |  |  
2023.02.02 17:15 EUR 3 ECB President Lagarde Speech (ecb-president-lagarde-speech), European Union (EU) |  |  |  |  
2023.02.02 20:30 EUR 3 ECB President Lagarde Speech (ecb-president-lagarde-speech), European Union (EU) |  |  |  |  
2023.02.03 15:30 USD 3 Nonfarm Payrolls (nonfarm-payrolls), United States (US) |  | 16 K | 223 K |  Jan
2023.02.03 17:00 USD 3 ISM Non-Manufacturing PMI (ism-non-manufacturing-pmi), United States (US) |  | 53 | 49.6 |  Jan
2023.02.06 12:00 EUR 3 Retail Sales m/m (retail-sales-mm), European Union (EU) |  | 0.3% | 0.8% |  Dec
2023.02.06 17:00 CAD 3 Ivey PMI (ivey-pmi), Canada (CA) |  | 55.2 | 33.4 |  Jan
2023.02.07 05:30 AUD 3 RBA Interest Rate Decision (rba-interest-rate-decision), Australia (AU) |  |  | 3.1% |  
2023.02.07 19:30 CAD 3 BoC Governor Macklem Speech (boc-governor-macklem-speech), Canada (CA) |  |  |  |  
2023.02.08 06:30 INR 3 RBI Interest Rate Decision (rbi-interest-rate-decision), India (IN) |  |  | 6.25% |  
2023.02.08 17:30 USD 3 EIA Crude Oil Stocks Change (eia-crude-oil-stocks-change), United States (US) |  | -0.012 M | 4.140 M |  Feb 3
2023.02.09 AllDay EUR 3 EU Leaders Summit (eu-leaders-summit), European Union (EU) |  |  |  |  
2023.02.09 10:30 SEK 3 Riksbank Interest Rate Decision (riksbank-interest-rate-decision), Sweden (SE) |  |  | 2.5% |  
 

現在のニュース値が即座に生成されないからですか?あなたの例では、(Event.Actual!=LONG_MIN)&&(Event.Forecast!= LONG_MIN)というメソッドを使用していますが、その値は受け入れられません。

実際のテストで、この正確な値を受け入れ、あなたの例のロジックが実行されるようにするには、どうすればいいですか?

ありがとうございます。

 
AdrianR007 LONG_MIN)&&(Event.Forecast!= LONG_MIN)というメソッドを使用していますが、その値は受け入れられません。

実際のテストでこの値を受け入れ、あなたの例のロジックが実行されるようにするには、どうすればいいですか?

会話の文脈が理解できません。

 
ニュースの現在値が更新されていないため、(Event.Actual!=LONG_MIN) && (Event.Forecast!= LONG_MIN)のコードは機能しません。イベントが発生した瞬間に読み取る他の方法はありますか?
 
AdrianR007 LONG_MIN) && (Event.Forecast!= LONG_MIN)のコードは機能しません。イベントが発生した瞬間に読み取る他の方法はありますか?

あなたは簡潔すぎて、何を言いたいのかはっきり理解できません。あなたが実行し、あなたが話したい問題を見ることができる簡潔なコードを提供してください。

 
fxsaber #:

あなたは簡潔すぎて、何を言いたいのか明確に理解できない。あなたが話したい問題を実行し、見ることができる簡潔なコードを提供してください。

あなたの例のコードを使用していますが、イベントが発生したときに現在値が更新されません。
ありがとうございます。
ファイル:
Capture.PNG  124 kb
 
AdrianR007 #:
例のコードを使用していますが、イベントが発生しても現在値が更新されません。 ありがとうございます。

mql5から新しいデータを取得するには、カレンダーからidを使用します。