MQLplus/lib_mqlplus/mql4_compatibility/lib_mql4_definitions.mqh

383 lines
15 KiB
MQL5
Raw Permalink Normal View History

2025-05-30 16:09:52 +02:00
#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