Bibliotecas: Calendário - página 7

 

Obrigado, fxsaber,

O script é excelente. Sou novo no MT5 e estou usando seu script de calendário. Para os dados históricos, como posso adicionar o período ao qual os dados econômicos pertencem? (por exemplo, janeiro para os dados de lançamento pertence a janeiro)?


Muito obrigado e cumprimentos,

Edwin

 
eapricorn período ao qual os dados econômicos pertencem? (por exemplo, janeiro para os dados de liberação pertence a janeiro)?
#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/pt/code/32430

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

Oi fxsaber,


Obrigado por sua mensagem. Desculpe-me por ter interpretado minha pergunta de forma errada. Na verdade, estou me referindo à "janela do calendário" no MT5, que normalmente tem o "Jan" na coluna do período, indicando que os dados econômicos divulgados hoje, "2 de fevereiro de 2023", na verdade se referem aos dados econômicos de janeiro (conforme imagem anexa). Mas, pelo script, vejo que temos apenas a data de liberação dos dados, enquanto o "Período" não é especificado. (conforme imagem anexa).

Tentei pesquisar o MqlCalendarValue e usar o Value.period para a data "Period", mas ele fornece um valor muito estranho, que é 1970.01.01. (conforme anexo).

Gostaria de saber se o período pode estar disponível e como adicioná-lo ao seu script. Muito obrigado.

Arquivos anexados:
Calendar.jpg  298 kb
MT5_calendar.jpg  414 kb
MetaEditor.jpg  465 kb
 
eapricorn #:

Na verdade, estou me referindo à "janela do calendário" no MT5, que normalmente tem o "Jan" na coluna do período que indica que os dados econômicos divulgados hoje "2 Feb 2023" estão, na verdade, se referindo aos dados econômicos de janeiro (conforme imagem anexa).

#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/pt/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% |  
 

Porque o valor da notícia atual não é gerado instantaneamente? Seu exemplo usa o método (Event.Actual!= LONG_MIN) && (Event.Forecast!= LONG_MIN), mas os valores não são aceitos.

O que preciso fazer para que, em um teste real, ele aceite esse valor exato e a lógica do seu exemplo seja executada?

Obrigado

 
AdrianR007 LONG_MIN) && (Event.Forecast!= LONG_MIN), mas os valores não são aceitos

O que devo fazer para que ele aceite esse valor em um teste real e a lógica do seu exemplo seja executada?

Não estou entendendo o contexto da conversa.

 
O valor atual da notícia não está sendo atualizado, portanto, o código (Event.Actual!= LONG_MIN) && (Event.Forecast!= LONG_MIN) não funciona. Existe alguma outra maneira de ler o evento no momento em que ele ocorre?
 
AdrianR007 LONG_MIN) && (Event.Forecast!= LONG_MIN) não funciona. Existe alguma outra maneira de ler o evento no momento em que ele ocorre?

Você está sendo muito conciso para que eu possa entender claramente o que você quer dizer. Forneça um código conciso que você possa executar e ver o problema sobre o qual deseja falar.

 
fxsaber #:

Você está sendo muito conciso para que se possa entender sem ambiguidade o que você quer dizer. Forneça um código conciso que você possa executar e ver o problema sobre o qual deseja falar.

Estou usando o código do seu exemplo, mas o valor atual não está sendo atualizado quando o evento ocorre. Alguma sugestão sobre isso?
Obrigado
Arquivos anexados:
Capture.PNG  124 kb
 
AdrianR007 #:
Estou usando o código do seu exemplo, mas o valor atual não está sendo atualizado quando o evento ocorre. Alguma sugestão sobre isso?
Obrigado

não é uma biblioteca de atualização automática, use o id, do calendário, para obter dados atualizados do mql5.