100 lines
4.6 KiB
MQL5
100 lines
4.6 KiB
MQL5
|
//+------------------------------------------------------------------+
|
||
|
//| CalendarFilterPrint.mq5 |
|
||
|
//| Copyright (c) 2022, MetaQuotes Ltd. |
|
||
|
//| https://www.mql5.com |
|
||
|
//+------------------------------------------------------------------+
|
||
|
#property copyright "Copyright (c) 2022, MetaQuotes Ltd."
|
||
|
#property link "https://www.mql5.com"
|
||
|
#property description "Request economic calendar events according to specified filters."
|
||
|
#property script_show_inputs
|
||
|
|
||
|
#define LOGGING
|
||
|
#include "..\..\Include\CalendarFilter.mqh"
|
||
|
#include "..\..\Include\StringUtils.mqh"
|
||
|
|
||
|
//+------------------------------------------------------------------+
|
||
|
//| I N P U T S |
|
||
|
//+------------------------------------------------------------------+
|
||
|
input string Context; // Context (country - 2 chars, currency - 3 chars, empty - all)
|
||
|
input ENUM_CALENDAR_SCOPE Scope = SCOPE_MONTH;
|
||
|
input string Text = "farm";
|
||
|
input int Limit = -1;
|
||
|
|
||
|
//+------------------------------------------------------------------+
|
||
|
//| G L O B A L S |
|
||
|
//+------------------------------------------------------------------+
|
||
|
CalendarFilter f(Context, TimeCurrent() - Scope, TimeCurrent() + Scope);
|
||
|
|
||
|
//+------------------------------------------------------------------+
|
||
|
//| Script program start function |
|
||
|
//+------------------------------------------------------------------+
|
||
|
void OnStart()
|
||
|
{
|
||
|
MqlCalendarValue records[];
|
||
|
// setup appropriate filter conditions
|
||
|
f.let(CALENDAR_IMPORTANCE_LOW, GREATER) // medium or high priority
|
||
|
.let(LONG_MIN, CALENDAR_PROPERTY_RECORD_FORECAST, NOT_EQUAL) // forecast is available
|
||
|
.let(Text); // full-text search with wildcard '*' support
|
||
|
// NB: strings of 2 or 3 chars without wildcard
|
||
|
// will be treated as a country or currency code respectively
|
||
|
|
||
|
// apply the filters and get results
|
||
|
if(f.select(records, true, Limit))
|
||
|
{
|
||
|
static const ENUM_CALENDAR_PROPERTY props[] =
|
||
|
{
|
||
|
CALENDAR_PROPERTY_RECORD_TIME,
|
||
|
CALENDAR_PROPERTY_COUNTRY_CURRENCY,
|
||
|
CALENDAR_PROPERTY_EVENT_NAME,
|
||
|
CALENDAR_PROPERTY_EVENT_IMPORTANCE,
|
||
|
CALENDAR_PROPERTY_RECORD_ACTUAL,
|
||
|
CALENDAR_PROPERTY_RECORD_FORECAST,
|
||
|
CALENDAR_PROPERTY_RECORD_PREVISED,
|
||
|
CALENDAR_PROPERTY_RECORD_IMPACT,
|
||
|
CALENDAR_PROPERTY_EVENT_SECTOR,
|
||
|
};
|
||
|
static const int p = ArraySize(props);
|
||
|
|
||
|
// output formatted results
|
||
|
string result[];
|
||
|
if(f.format(records, props, result, true, true))
|
||
|
{
|
||
|
for(int i = 0; i < ArraySize(result) / p; ++i)
|
||
|
{
|
||
|
Print(SubArrayCombine(result, " | ", i * p, p));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
Print("No calendar events for selected filters");
|
||
|
}
|
||
|
}
|
||
|
//+------------------------------------------------------------------+
|
||
|
/*
|
||
|
|
||
|
example for default settings:
|
||
|
- Context = empty, meaning no specific conditions for countries or currencies
|
||
|
- Scope = SCOPE_MONTH
|
||
|
- Text = "farm" means context search within event names
|
||
|
- Limit = -1, no cut off: any number of matching events will be printed
|
||
|
|
||
|
Selecting calendar records...
|
||
|
country[i]= / ok
|
||
|
calendarValueHistory(temp,from,to,country[i],c)=2372 / ok
|
||
|
Filtering 2372 records
|
||
|
Got 9 records
|
||
|
TIME | CUR⁞ | NAME | IMPORTAN⁞ | ACTU⁞ | FORE⁞ | PREV⁞ | IMPACT | SECT⁞
|
||
|
2022.06.02 15:15 | USD | ADP Nonfarm Employment Change | HIGH | +128 | -225 | +202 | POSITIVE | JOBS
|
||
|
2022.06.02 15:30 | USD | Nonfarm Productivity q/q | MODERATE | -7.3 | -7.5 | -7.5 | POSITIVE | JOBS
|
||
|
2022.06.03 15:30 | USD | Nonfarm Payrolls | HIGH | +390 | -19 | +436 | POSITIVE | JOBS
|
||
|
2022.06.03 15:30 | USD | Private Nonfarm Payrolls | MODERATE | +333 | +8 | +405 | POSITIVE | JOBS
|
||
|
2022.06.09 08:30 | EUR | Nonfarm Payrolls q/q | MODERATE | +0.3 | +0.3 | +0.3 | NA | JOBS
|
||
|
— | — | — | — | — | — | — | — | —
|
||
|
2022.07.07 15:15 | USD | ADP Nonfarm Employment Change | HIGH | +nan | -263 | +128 | NA | JOBS
|
||
|
2022.07.08 15:30 | USD | Nonfarm Payrolls | HIGH | +nan | -229 | +390 | NA | JOBS
|
||
|
2022.07.08 15:30 | USD | Private Nonfarm Payrolls | MODERATE | +nan | +51 | +333 | NA | JOBS
|
||
|
|
||
|
*/
|
||
|
//+------------------------------------------------------------------+
|