383 lines
No EOL
15 KiB
MQL5
383 lines
No EOL
15 KiB
MQL5
#ifndef LIB_MQLPLUS_MQL4_COMPATIBILITY_DEFINITION_MQH_INCLUDED
|
|
#define LIB_MQLPLUS_MQL4_COMPATIBILITY_DEFINITION_MQH_INCLUDED
|
|
#property version "1.0";
|
|
#property strict
|
|
/**********************************************************************************
|
|
* Copyright (C) 2010-2022 Dominik Egert <info@freie-netze.de>
|
|
*
|
|
* This file is the MQL4 backward compatibility include file.
|
|
*
|
|
* MQLplus, including this file may not be copied and/or distributed
|
|
* without explecit permit by the author.
|
|
* Author Dominik Egert / Freie Netze UG.
|
|
**********************************************************************************
|
|
*
|
|
* Version: 1.0
|
|
* State: development
|
|
*
|
|
* File information
|
|
* ================
|
|
*
|
|
*
|
|
*
|
|
*/
|
|
#ifdef DBG_MSG_TRACE_FILE_LOADER
|
|
DBG_MSG_TRACE_FILE_LOADER;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
//*********************************************************************************************************************************************************/
|
|
//
|
|
// BEGIN MQL4 compatibility additions
|
|
//
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Unavailable compiler directives and definitions in MQL4
|
|
//
|
|
|
|
// Compiler option
|
|
#define pack(x)
|
|
|
|
// ArrayPrint flags
|
|
#define ARRAYPRINT_HEADER 0x01
|
|
#define ARRAYPRINT_INDEX 0x02
|
|
#define ARRAYPRINT_LIMIT 0x04
|
|
#define ARRAYPRINT_ALIGN 0x08
|
|
#define ARRAYPRINT_DATE 0x10
|
|
#define ARRAYPRINT_MINUTES 0x20
|
|
#define ARRAYPRINT_SECONDS 0x40
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////
|
|
//
|
|
// MQL API defined error codes
|
|
// Additionally, define an MQL5 success code for MQL4
|
|
//
|
|
#ifndef ERR_SUCCESS
|
|
#define ERR_SUCCESS ERR_NO_ERROR
|
|
|
|
#endif
|
|
|
|
#ifndef ERR_FUNCTION_NOT_ALLOWED
|
|
#define ERR_FUNCTION_NOT_ALLOWED ERR_FUNCTION_NOT_CONFIRMED
|
|
|
|
#endif
|
|
|
|
//
|
|
/////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Unavailable data types in MQL4
|
|
//
|
|
|
|
// Type complex
|
|
struct complex_type
|
|
{
|
|
double real;
|
|
double imag;
|
|
|
|
complex_type() :
|
|
real (NULL),
|
|
imag (NULL)
|
|
{ };
|
|
|
|
complex_type(const complex_type& p_in)
|
|
{ operator=(p_in); }
|
|
|
|
complex_type operator=(const complex_type& p_in)
|
|
{
|
|
real = p_in.real;
|
|
imag = p_in.imag;
|
|
return(this);
|
|
}
|
|
|
|
bool operator==(const complex_type& p_in)
|
|
{ return((real == p_in.real) && (imag == p_in.imag)); }
|
|
|
|
bool operator!=(const complex_type& p_in)
|
|
{ return((real != p_in.real) && (imag != p_in.imag)); }
|
|
|
|
bool operator<=(const complex_type& p_in)
|
|
{ return((real <= p_in.real) && (imag <= p_in.imag)); }
|
|
|
|
bool operator>=(const complex_type& p_in)
|
|
{ return((real >= p_in.real) && (imag >= p_in.imag)); }
|
|
|
|
bool operator<(const complex_type& p_in)
|
|
{ return((real < p_in.real) && (imag < p_in.imag)); }
|
|
|
|
bool operator>(const complex_type& p_in)
|
|
{ return((real > p_in.real) && (imag > p_in.imag)); }
|
|
};
|
|
#define complex complex_type
|
|
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Add required MQL5 enumerations
|
|
//
|
|
enum ENUM_SYMBOL_CALC_MODE
|
|
{
|
|
// Supported by MQL4
|
|
SYMBOL_CALC_MODE_FOREX = 0x00,
|
|
SYMBOL_CALC_MODE_CFD = 0x01,
|
|
SYMBOL_CALC_MODE_FUTURES = 0x02,
|
|
SYMBOL_CALC_MODE_CFDINDEX = 0x03,
|
|
|
|
// Not supported by MQL4, added for code compatibility
|
|
SYMBOL_CALC_MODE_FOREX_NO_LEVERAGE = 0x04,
|
|
SYMBOL_CALC_MODE_EXCH_FUTURES = 0x05,
|
|
SYMBOL_CALC_MODE_EXCH_FUTURES_FORTS = 0x06,
|
|
SYMBOL_CALC_MODE_CFDLEVERAGE = 0x07,
|
|
SYMBOL_CALC_MODE_EXCH_STOCKS = 0x08,
|
|
SYMBOL_CALC_MODE_EXCH_STOCKS_MOEX = 0x09,
|
|
SYMBOL_CALC_MODE_EXCH_BONDS = 0x0A,
|
|
SYMBOL_CALC_MODE_EXCH_BONDS_MOEX = 0x0B,
|
|
SYMBOL_CALC_MODE_SERV_COLLATERAL = 0x0C
|
|
};
|
|
|
|
|
|
enum ENUM_SYMBOL_SWAP_MODE
|
|
{
|
|
SYMBOL_SWAP_MODE_DISABLED = 0x00,
|
|
SYMBOL_SWAP_MODE_POINTS = 0x01,
|
|
SYMBOL_SWAP_MODE_CURRENCY_SYMBOL = 0x02,
|
|
SYMBOL_SWAP_MODE_CURRENCY_MARGIN = 0x03,
|
|
SYMBOL_SWAP_MODE_CURRENCY_DEPOSIT = 0x04,
|
|
SYMBOL_SWAP_MODE_INTEREST_CURRENT = 0x05,
|
|
SYMBOL_SWAP_MODE_INTEREST_OPEN = 0x06,
|
|
SYMBOL_SWAP_MODE_REOPEN_CURRENT = 0x07,
|
|
SYMBOL_SWAP_MODE_REOPEN_BID = 0x08
|
|
};
|
|
|
|
|
|
enum ENUM_SORT_MODE
|
|
{
|
|
SORT_ASCENDING = 0x00,
|
|
SORT_DESCENDING = 0x01
|
|
};
|
|
|
|
|
|
enum ENUM_SYMBOL_SECTOR
|
|
{
|
|
SECTOR_UNDEFINED = 0x00,
|
|
SECTOR_BASIC_MATERIALS = 0x01,
|
|
SECTOR_COMMUNICATION_SERVICES = 0x02,
|
|
SECTOR_CONSUMER_CYCLICAL = 0x03,
|
|
SECTOR_CONSUMER_DEFENSIVE = 0x04,
|
|
SECTOR_CURRENCY = 0x05,
|
|
SECTOR_CURRENCY_CRYPTO = 0x06,
|
|
SECTOR_ENERGY = 0x07,
|
|
SECTOR_FINANCIAL = 0x08,
|
|
SECTOR_HEALTHCARE = 0x09,
|
|
SECTOR_INDUSTRIALS = 0x0A,
|
|
SECTOR_REAL_ESTATE = 0x0B,
|
|
SECTOR_TECHNOLOGY = 0x0C,
|
|
SECTOR_UTILITIES = 0x0D
|
|
};
|
|
|
|
|
|
enum ENUM_SYMBOL_INDUSTRY
|
|
{
|
|
INDUSTRY_UNDEFINED = 0,
|
|
INDUSTRY_AGRICULTURAL_INPUTS = 1,
|
|
INDUSTRY_ALUMINIUM = 2,
|
|
INDUSTRY_BUILDING_MATERIALS = 3,
|
|
INDUSTRY_CHEMICALS = 4,
|
|
INDUSTRY_COKING_COAL = 5,
|
|
INDUSTRY_COPPER = 6,
|
|
INDUSTRY_GOLD = 7,
|
|
INDUSTRY_LUMBER_WOOD = 8,
|
|
INDUSTRY_INDUSTRIAL_METALS = 9,
|
|
INDUSTRY_PRECIOUS_METALS = 10,
|
|
INDUSTRY_PAPER = 11,
|
|
INDUSTRY_SILVER = 12,
|
|
INDUSTRY_SPECIALTY_CHEMICALS = 13,
|
|
INDUSTRY_STEEL = 14,
|
|
INDUSTRY_ADVERTISING = 15,
|
|
INDUSTRY_BROADCASTING = 16,
|
|
INDUSTRY_GAMING_MULTIMEDIA = 17,
|
|
INDUSTRY_ENTERTAINMENT = 18,
|
|
INDUSTRY_INTERNET_CONTENT = 19,
|
|
INDUSTRY_PUBLISHING = 20,
|
|
INDUSTRY_TELECOM = 21,
|
|
INDUSTRY_APPAREL_MANUFACTURING = 22,
|
|
INDUSTRY_APPAREL_RETAIL = 23,
|
|
INDUSTRY_AUTO_MANUFACTURERS = 24,
|
|
INDUSTRY_AUTO_PARTS = 25,
|
|
INDUSTRY_AUTO_DEALERSHIP = 26,
|
|
INDUSTRY_DEPARTMENT_STORES = 27,
|
|
INDUSTRY_FOOTWEAR_ACCESSORIES = 28,
|
|
INDUSTRY_FURNISHINGS = 29,
|
|
INDUSTRY_GAMBLING = 30,
|
|
INDUSTRY_HOME_IMPROV_RETAIL = 31,
|
|
INDUSTRY_INTERNET_RETAIL = 32,
|
|
INDUSTRY_LEISURE = 33,
|
|
INDUSTRY_LODGING = 34,
|
|
INDUSTRY_LUXURY_GOODS = 35,
|
|
INDUSTRY_PACKAGING_CONTAINERS = 36,
|
|
INDUSTRY_PERSONAL_SERVICES = 37,
|
|
INDUSTRY_RECREATIONAL_VEHICLES = 38,
|
|
INDUSTRY_RESIDENT_CONSTRUCTION = 39,
|
|
INDUSTRY_RESORTS_CASINOS = 40,
|
|
INDUSTRY_RESTAURANTS = 41,
|
|
INDUSTRY_SPECIALTY_RETAIL = 42,
|
|
INDUSTRY_TEXTILE_MANUFACTURING = 43,
|
|
INDUSTRY_TRAVEL_SERVICES = 44,
|
|
INDUSTRY_BEVERAGES_BREWERS = 45,
|
|
INDUSTRY_BEVERAGES_NON_ALCO = 46,
|
|
INDUSTRY_BEVERAGES_WINERIES = 47,
|
|
INDUSTRY_CONFECTIONERS = 48,
|
|
INDUSTRY_DISCOUNT_STORES = 49,
|
|
INDUSTRY_EDUCATION_TRAINIG = 50,
|
|
INDUSTRY_FARM_PRODUCTS = 51,
|
|
INDUSTRY_FOOD_DISTRIBUTION = 52,
|
|
INDUSTRY_GROCERY_STORES = 53,
|
|
INDUSTRY_HOUSEHOLD_PRODUCTS = 54,
|
|
INDUSTRY_PACKAGED_FOODS = 55,
|
|
INDUSTRY_TOBACCO = 56,
|
|
INDUSTRY_OIL_GAS_DRILLING = 57,
|
|
INDUSTRY_OIL_GAS_EP = 58,
|
|
INDUSTRY_OIL_GAS_EQUIPMENT = 59,
|
|
INDUSTRY_OIL_GAS_INTEGRATED = 60,
|
|
INDUSTRY_OIL_GAS_MIDSTREAM = 61,
|
|
INDUSTRY_OIL_GAS_REFINING = 62,
|
|
INDUSTRY_THERMAL_COAL = 63,
|
|
INDUSTRY_URANIUM = 64,
|
|
INDUSTRY_EXCHANGE_TRADED_FUND = 65,
|
|
INDUSTRY_ASSETS_MANAGEMENT = 66,
|
|
INDUSTRY_BANKS_DIVERSIFIED = 67,
|
|
INDUSTRY_BANKS_REGIONAL = 68,
|
|
INDUSTRY_CAPITAL_MARKETS = 69,
|
|
INDUSTRY_CLOSE_END_FUND_DEBT = 70,
|
|
INDUSTRY_CLOSE_END_FUND_EQUITY = 71,
|
|
INDUSTRY_CLOSE_END_FUND_FOREIGN = 72,
|
|
INDUSTRY_CREDIT_SERVICES = 73,
|
|
INDUSTRY_FINANCIAL_CONGLOMERATE = 74,
|
|
INDUSTRY_FINANCIAL_DATA_EXCHANGE = 75,
|
|
INDUSTRY_INSURANCE_BROKERS = 76,
|
|
INDUSTRY_INSURANCE_DIVERSIFIED = 77,
|
|
INDUSTRY_INSURANCE_LIFE = 78,
|
|
INDUSTRY_INSURANCE_PROPERTY = 79,
|
|
INDUSTRY_INSURANCE_REINSURANCE = 80,
|
|
INDUSTRY_INSURANCE_SPECIALTY = 81,
|
|
INDUSTRY_MORTGAGE_FINANCE = 82,
|
|
INDUSTRY_SHELL_COMPANIES = 83,
|
|
INDUSTRY_BIOTECHNOLOGY = 84,
|
|
INDUSTRY_DIAGNOSTICS_RESEARCH = 85,
|
|
INDUSTRY_DRUGS_MANUFACTURERS = 86,
|
|
INDUSTRY_DRUGS_MANUFACTURERS_SPEC = 87,
|
|
INDUSTRY_HEALTHCARE_PLANS = 88,
|
|
INDUSTRY_HEALTH_INFORMATION = 89,
|
|
INDUSTRY_MEDICAL_FACILITIES = 90,
|
|
INDUSTRY_MEDICAL_DEVICES = 91,
|
|
INDUSTRY_MEDICAL_DISTRIBUTION = 92,
|
|
INDUSTRY_MEDICAL_INSTRUMENTS = 93,
|
|
INDUSTRY_PHARM_RETAILERS = 94,
|
|
INDUSTRY_AEROSPACE_DEFENSE = 95,
|
|
INDUSTRY_AIRLINES = 96,
|
|
INDUSTRY_AIRPORTS_SERVICES = 97,
|
|
INDUSTRY_BUILDING_PRODUCTS = 98,
|
|
INDUSTRY_BUSINESS_EQUIPMENT = 99,
|
|
INDUSTRY_CONGLOMERATES = 100,
|
|
INDUSTRY_CONSULTING_SERVICES = 101,
|
|
INDUSTRY_ELECTRICAL_EQUIPMENT = 102,
|
|
INDUSTRY_ENGINEERING_CONSTRUCTION = 103,
|
|
INDUSTRY_FARM_HEAVY_MACHINERY = 104,
|
|
INDUSTRY_INDUSTRIAL_DISTRIBUTION = 105,
|
|
INDUSTRY_INFRASTRUCTURE_OPERATIONS = 106,
|
|
INDUSTRY_FREIGHT_LOGISTICS = 107,
|
|
INDUSTRY_MARINE_SHIPPING = 108,
|
|
INDUSTRY_METAL_FABRICATION = 109,
|
|
INDUSTRY_POLLUTION_CONTROL = 110,
|
|
INDUSTRY_RAILROADS = 111,
|
|
INDUSTRY_RENTAL_LEASING = 112,
|
|
INDUSTRY_SECURITY_PROTECTION = 113,
|
|
INDUSTRY_SPEALITY_BUSINESS_SERVICES = 114,
|
|
INDUSTRY_SPEALITY_MACHINERY = 115,
|
|
INDUSTRY_STUFFING_EMPLOYMENT = 116,
|
|
INDUSTRY_TOOLS_ACCESSORIES = 117,
|
|
INDUSTRY_TRUCKING = 118,
|
|
INDUSTRY_WASTE_MANAGEMENT = 119,
|
|
INDUSTRY_REAL_ESTATE_DEVELOPMENT = 120,
|
|
INDUSTRY_REAL_ESTATE_DIVERSIFIED = 121,
|
|
INDUSTRY_REAL_ESTATE_SERVICES = 122,
|
|
INDUSTRY_REIT_DIVERSIFIED = 123,
|
|
INDUSTRY_REIT_HEALTCARE = 124,
|
|
INDUSTRY_REIT_HOTEL_MOTEL = 125,
|
|
INDUSTRY_REIT_INDUSTRIAL = 126,
|
|
INDUSTRY_REIT_MORTAGE = 127,
|
|
INDUSTRY_REIT_OFFICE = 128,
|
|
INDUSTRY_REIT_RESIDENTAL = 129,
|
|
INDUSTRY_REIT_RETAIL = 130,
|
|
INDUSTRY_REIT_SPECIALITY = 131,
|
|
INDUSTRY_COMMUNICATION_EQUIPMENT = 132,
|
|
INDUSTRY_COMPUTER_HARDWARE = 133,
|
|
INDUSTRY_CONSUMER_ELECTRONICS = 134,
|
|
INDUSTRY_ELECTRONIC_COMPONENTS = 135,
|
|
INDUSTRY_ELECTRONIC_DISTRIBUTION = 136,
|
|
INDUSTRY_IT_SERVICES = 137,
|
|
INDUSTRY_SCIENTIFIC_INSTRUMENTS = 138,
|
|
INDUSTRY_SEMICONDUCTOR_EQUIPMENT = 139,
|
|
INDUSTRY_SEMICONDUCTORS = 140,
|
|
INDUSTRY_SOFTWARE_APPLICATION = 141,
|
|
INDUSTRY_SOFTWARE_INFRASTRUCTURE = 142,
|
|
INDUSTRY_SOLAR = 143,
|
|
INDUSTRY_UTILITIES_DIVERSIFIED = 144,
|
|
INDUSTRY_UTILITIES_POWERPRODUCERS = 145,
|
|
INDUSTRY_UTILITIES_RENEWABLE = 146,
|
|
INDUSTRY_UTILITIES_REGULATED_ELECTRIC = 147,
|
|
INDUSTRY_UTILITIES_REGULATED_GAS = 148,
|
|
INDUSTRY_UTILITIES_REGULATED_WATER = 149
|
|
};
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Unavailable functions in MQL4
|
|
//
|
|
|
|
// GetTickCount64 replacement
|
|
#define GetTickCount64 GetTickCount
|
|
|
|
|
|
/*
|
|
#define BarsCalculated DBG_MSG_MQLFUNC_RETURN(BarsCalculated)
|
|
|
|
#define HistoryOrderGetDouble DBG_MSG_MQLFUNC_RETURN(HistoryOrderGetDouble)
|
|
#define HistoryOrderGetInteger DBG_MSG_MQLFUNC_RETURN(HistoryOrderGetInteger)
|
|
#define HistoryOrderGetString DBG_MSG_MQLFUNC_RETURN(HistoryOrderGetString)
|
|
#define HistoryOrderGetTicket DBG_MSG_MQLFUNC_RETURN(HistoryOrderGetTicket)
|
|
#define HistoryOrderSelect DBG_MSG_MQLFUNC_RETURN(HistoryOrderSelect)
|
|
#define HistoryOrdersTotal DBG_MSG_MQLFUNC_RETURN(HistoryOrdersTotal)
|
|
#define HistorySelect DBG_MSG_MQLFUNC_RETURN(HistorySelect)
|
|
#define HistorySelectByPosition DBG_MSG_MQLFUNC_RETURN(HistorySelectByPosition)
|
|
|
|
#define OrderCalcMargin DBG_MSG_MQLFUNC_RETURN(OrderCalcMargin)
|
|
#define OrderCalcProfit DBG_MSG_MQLFUNC_RETURN(OrderCalcProfit)
|
|
|
|
#define SymbolInfoMarginRate DBG_MSG_MQLFUNC_RETURN(SymbolInfoMarginRate)
|
|
*/
|
|
|
|
|
|
|
|
//
|
|
// END MQL compatibility */
|
|
//*********************************************************************************************************************************************************/
|
|
#endif // LIB_MQLPLUS_MQL4_COMPATIBILITY_DEFINITION_MQH_INCLUDED |