#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 * * 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