108 lines
4.6 KiB
MQL5
108 lines
4.6 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| CalendarDefines.mqh |
|
|
//| Copyright 2022, MetaQuotes Ltd. |
|
|
//| https://www.mql5.com |
|
|
//+------------------------------------------------------------------+
|
|
#include "IS.mqh"
|
|
|
|
#define DAY_LONG (60 * 60 * 24)
|
|
#define WEEK_LONG (DAY_LONG * 7)
|
|
#define MONTH_LONG (DAY_LONG * 30)
|
|
#define QUARTER_LONG (MONTH_LONG * 3)
|
|
#define YEAR_LONG (MONTH_LONG * 12)
|
|
|
|
enum ENUM_CALENDAR_SCOPE
|
|
{
|
|
SCOPE_DAY = DAY_LONG, // Day
|
|
SCOPE_WEEK = WEEK_LONG, // Week
|
|
SCOPE_MONTH = MONTH_LONG, // Month
|
|
SCOPE_QUARTER = QUARTER_LONG, // Quarter
|
|
SCOPE_YEAR = YEAR_LONG, // Year
|
|
};
|
|
|
|
enum ENUM_CALENDAR_HAS_VALUE
|
|
{
|
|
HAS_ANY, // Any (unimportant)
|
|
HAS_SET, // Set
|
|
HAS_NOT, // Not Set
|
|
};
|
|
|
|
enum ENUM_CALENDAR_PROPERTY
|
|
{ // +/- means filtering support by corresponding field
|
|
CALENDAR_PROPERTY_COUNTRY_ID, // -ulong
|
|
CALENDAR_PROPERTY_COUNTRY_NAME, // -string
|
|
CALENDAR_PROPERTY_COUNTRY_CODE, // +string (2 chars)
|
|
CALENDAR_PROPERTY_COUNTRY_CURRENCY, // +string (3 chars)
|
|
CALENDAR_PROPERTY_COUNTRY_GLYPH, // -string (1 char)
|
|
CALENDAR_PROPERTY_COUNTRY_URL, // -string
|
|
|
|
CALENDAR_PROPERTY_EVENT_ID, // +ulong (kind)
|
|
CALENDAR_PROPERTY_EVENT_TYPE, // +ENUM_CALENDAR_EVENT_TYPE
|
|
CALENDAR_PROPERTY_EVENT_SECTOR, // +ENUM_CALENDAR_EVENT_SECTOR
|
|
CALENDAR_PROPERTY_EVENT_FREQUENCY, // +ENUM_CALENDAR_EVENT_FREQUENCY
|
|
CALENDAR_PROPERTY_EVENT_TIMEMODE, // +ENUM_CALENDAR_EVENT_TIMEMODE
|
|
CALENDAR_PROPERTY_EVENT_UNIT, // +ENUM_CALENDAR_EVENT_UNIT
|
|
CALENDAR_PROPERTY_EVENT_IMPORTANCE, // +ENUM_CALENDAR_EVENT_IMPORTANCE
|
|
CALENDAR_PROPERTY_EVENT_MULTIPLIER, // +ENUM_CALENDAR_EVENT_MULTIPLIER
|
|
CALENDAR_PROPERTY_EVENT_DIGITS, // -uint
|
|
CALENDAR_PROPERTY_EVENT_SOURCE, // +string (URL)
|
|
CALENDAR_PROPERTY_EVENT_CODE, // -string
|
|
CALENDAR_PROPERTY_EVENT_NAME, // +string (4+ chars or wildcards '*')
|
|
|
|
CALENDAR_PROPERTY_RECORD_ID, // -ulong
|
|
CALENDAR_PROPERTY_RECORD_TIME, // +datetime
|
|
CALENDAR_PROPERTY_RECORD_PERIOD, // +datetime (as long)
|
|
CALENDAR_PROPERTY_RECORD_REVISION, // +int
|
|
CALENDAR_PROPERTY_RECORD_ACTUAL, // +long
|
|
CALENDAR_PROPERTY_RECORD_PREVIOUS, // +long
|
|
CALENDAR_PROPERTY_RECORD_REVISED, // +long
|
|
CALENDAR_PROPERTY_RECORD_FORECAST, // +long
|
|
CALENDAR_PROPERTY_RECORD_IMPACT, // +ENUM_CALENDAR_EVENT_IMPACT
|
|
|
|
CALENDAR_PROPERTY_RECORD_PREVISED, // non-standard (previous or revised if exist)
|
|
|
|
CALENDAR_PROPERTY_CHANGE_ID, // -ulong (reserved)
|
|
};
|
|
|
|
//+------------------------------------------------------------------+
|
|
/*
|
|
PRB: all standard ENUMs do not have an option for ALL/ANY element,
|
|
so choosing an element in UI is obligatory (which often contradicts to requirements),
|
|
but definition of equivalent custom ENUMs will require to typecast (may be unpractical)
|
|
*/
|
|
|
|
enum ENUM_CALENDAR_EVENT_TYPE_EXT
|
|
{
|
|
TYPE_EVENT = CALENDAR_TYPE_EVENT, // Event
|
|
TYPE_INDICATOR = CALENDAR_TYPE_INDICATOR, // Indicator
|
|
TYPE_HOLIDAY = CALENDAR_TYPE_HOLIDAY, // Holiday
|
|
TYPE_ANY // Any (unimportant)
|
|
};
|
|
|
|
enum ENUM_CALENDAR_EVENT_SECTOR_EXT
|
|
{
|
|
SECTOR_NONE = CALENDAR_SECTOR_NONE, // None
|
|
SECTOR_MARKET = CALENDAR_SECTOR_MARKET, // Market
|
|
SECTOR_GDP = CALENDAR_SECTOR_GDP, // GDP
|
|
SECTOR_JOBS = CALENDAR_SECTOR_JOBS, // Jobs
|
|
SECTOR_PRICES = CALENDAR_SECTOR_PRICES, // Prices
|
|
SECTOR_MONEY = CALENDAR_SECTOR_MONEY, // Money
|
|
SECTOR_TRADE = CALENDAR_SECTOR_TRADE, // Trade
|
|
SECTOR_GOVERNMENT = CALENDAR_SECTOR_GOVERNMENT, // Government
|
|
SECTOR_BUSINESS = CALENDAR_SECTOR_BUSINESS, // Bussiness
|
|
SECTOR_CONSUMER = CALENDAR_SECTOR_CONSUMER, // Consumer
|
|
SECTOR_HOUSING = CALENDAR_SECTOR_HOUSING, // Housing
|
|
SECTOR_TAXES = CALENDAR_SECTOR_TAXES, // Taxes
|
|
SECTOR_HOLIDAYS = CALENDAR_SECTOR_HOLIDAYS, // Holidays
|
|
SECTOR_ANY // Any (unimportant)
|
|
};
|
|
|
|
enum ENUM_CALENDAR_EVENT_IMPORTANCE_EXT
|
|
{
|
|
IMPORTANCE_NONE = CALENDAR_IMPORTANCE_NONE, // None
|
|
IMPORTANCE_LOW = CALENDAR_IMPORTANCE_LOW, // Low
|
|
IMPORTANCE_MODERATE = CALENDAR_IMPORTANCE_MODERATE, // Moderate
|
|
IMPORTANCE_HIGH = CALENDAR_IMPORTANCE_HIGH, // High
|
|
IMPORTANCE_ANY // Any (unimportant)
|
|
};
|
|
//+------------------------------------------------------------------+
|