#ifndef LIB_MQLPLUS_MQL4_COMPATIBILITY_INFOINTEGER_MQH_INCLUDED #define LIB_MQLPLUS_MQL4_COMPATIBILITY_INFOINTEGER_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 // /////////////////////////////////////////////////////////////////////////// // // Add required MQL5 enumerations // enum MT5_ENUM_MQL_INFO_INTEGER { MQL_HANDLES_USED, MT5_MQL_MEMORY_LIMIT, MT5_MQL_MEMORY_USED, MT5_MQL_PROGRAM_TYPE, MT5_MQL_DLLS_ALLOWED, MT5_MQL_TRADE_ALLOWED, MT5_MQL_SIGNALS_ALLOWED, MT5_MQL_DEBUG, MT5_MQL_PROFILER, MT5_MQL_TESTER, MT5_MQL_FORWARD, MT5_MQL_OPTIMIZATION, MT5_MQL_VISUAL_MODE, MT5_MQL_FRAME_MODE, MT5_MQL_LICENSE_TYPE }; enum MT5_ENUM_TERMINAL_INFO_INTEGER { MT5_TERMINAL_BUILD, MT5_TERMINAL_COMMUNITY_ACCOUNT, MT5_TERMINAL_COMMUNITY_CONNECTION, MT5_TERMINAL_CONNECTED, MT5_TERMINAL_DLLS_ALLOWED, MT5_TERMINAL_TRADE_ALLOWED, MT5_TERMINAL_EMAIL_ENABLED, MT5_TERMINAL_FTP_ENABLED, MT5_TERMINAL_NOTIFICATIONS_ENABLED, MT5_TERMINAL_MAXBARS, MT5_TERMINAL_MQID, MT5_TERMINAL_CODEPAGE, MT5_TERMINAL_CPU_CORES, MT5_TERMINAL_DISK_SPACE, MT5_TERMINAL_MEMORY_PHYSICAL, MT5_TERMINAL_MEMORY_TOTAL, MT5_TERMINAL_MEMORY_AVAILABLE, MT5_TERMINAL_MEMORY_USED, MT5_TERMINAL_X64, MT5_TERMINAL_OPENCL_SUPPORT, MT5_TERMINAL_SCREEN_DPI, TERMINAL_SCREEN_LEFT, TERMINAL_SCREEN_TOP, TERMINAL_SCREEN_WIDTH, TERMINAL_SCREEN_HEIGHT, TERMINAL_LEFT, TERMINAL_TOP, TERMINAL_RIGHT, TERMINAL_BOTTOM, MT5_TERMINAL_PING_LAST, MT5_TERMINAL_VPS }; enum MT5_ENUM_ACCOUNT_INFO_INTEGER { MT5_ACCOUNT_LOGIN, MT5_ACCOUNT_TRADE_MODE, MT5_ACCOUNT_LEVERAGE, MT5_ACCOUNT_LIMIT_ORDERS, MT5_ACCOUNT_MARGIN_SO_MODE, MT5_ACCOUNT_TRADE_ALLOWED, MT5_ACCOUNT_TRADE_EXPERT, ACCOUNT_MARGIN_MODE, ACCOUNT_CURRENCY_DIGITS, ACCOUNT_FIFO_CLOSE, ACCOUNT_HEDGE_ALLOWED }; enum ENUM_ACCOUNT_MARGIN_MODE { ACCOUNT_MARGIN_MODE_RETAIL_NETTING, ACCOUNT_MARGIN_MODE_EXCHANGE, ACCOUNT_MARGIN_MODE_RETAIL_HEDGING }; // ///////////////////////////////////////////////////////////////////////////////////////////////////// //+------------------------------------------------------------------+ //| MQL4: MQL5-compatible MQLInfoInteger() | //+------------------------------------------------------------------+ const long mt5_AccountInfoInteger(const int property_id) { switch(property_id) { case MT5_ACCOUNT_LOGIN: return(AccountInfoInteger(ACCOUNT_LOGIN)); case MT5_ACCOUNT_TRADE_MODE: return(AccountInfoInteger(ACCOUNT_TRADE_MODE)); case MT5_ACCOUNT_LEVERAGE: return(AccountInfoInteger(ACCOUNT_LEVERAGE)); case MT5_ACCOUNT_LIMIT_ORDERS: return(AccountInfoInteger(ACCOUNT_LIMIT_ORDERS)); case MT5_ACCOUNT_MARGIN_SO_MODE: return(AccountInfoInteger(ACCOUNT_MARGIN_SO_MODE)); case MT5_ACCOUNT_TRADE_ALLOWED: return(AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)); case MT5_ACCOUNT_TRADE_EXPERT: return(AccountInfoInteger(ACCOUNT_TRADE_EXPERT)); case ACCOUNT_MARGIN_MODE: return(ACCOUNT_MARGIN_MODE_RETAIL_HEDGING); case ACCOUNT_CURRENCY_DIGITS: return(2); case ACCOUNT_FIFO_CLOSE: #ifdef _DEBUG printf("Feature not supported in MQL4: %s; %s", __FUNCTION__, EnumToString(property_id)); #else break; #endif case ACCOUNT_HEDGE_ALLOWED: return(1); } // Return return(NULL); } #define AccountInfoInteger mt5_AccountInfoInteger #define ENUM_ACCOUNT_INFO_INTEGER MT5_ENUM_ACCOUNT_INFO_INTEGER #define ACCOUNT_LOGIN MT5_ACCOUNT_LOGIN #define ACCOUNT_TRADE_MODE MT5_ACCOUNT_TRADE_MODE #define ACCOUNT_LEVERAGE MT5_ACCOUNT_LEVERAGE #define ACCOUNT_LIMIT_ORDERS MT5_ACCOUNT_LIMIT_ORDERS #define ACCOUNT_MARGIN_SO_MODE MT5_ACCOUNT_MARGIN_SO_MODE #define ACCOUNT_TRADE_ALLOWED MT5_ACCOUNT_TRADE_ALLOWED #define ACCOUNT_TRADE_EXPERT MT5_ACCOUNT_TRADE_EXPERT //+------------------------------------------------------------------+ //| MQL4: MQL5-compatible MQLInfoInteger() | //+------------------------------------------------------------------+ const int mt5_MQLInfoInteger(const int property_id) { switch(property_id) { case MT5_MQL_PROGRAM_TYPE: return(MQLInfoInteger(MQL_PROGRAM_TYPE)); case MT5_MQL_DLLS_ALLOWED: return(MQLInfoInteger(MQL_DLLS_ALLOWED)); case MT5_MQL_TRADE_ALLOWED: return(MQLInfoInteger(MQL_TRADE_ALLOWED)); case MT5_MQL_SIGNALS_ALLOWED: return(MQLInfoInteger(MQL_SIGNALS_ALLOWED)); case MT5_MQL_DEBUG: return(MQLInfoInteger(MQL_DEBUG)); case MT5_MQL_PROFILER: return(MQLInfoInteger(MQL_PROFILER)); case MT5_MQL_TESTER: return(MQLInfoInteger(MQL_TESTER)); case MT5_MQL_OPTIMIZATION: return(MQLInfoInteger(MQL_OPTIMIZATION)); case MT5_MQL_VISUAL_MODE: return(MQLInfoInteger(MQL_VISUAL_MODE)); case MT5_MQL_FRAME_MODE: return(MQLInfoInteger(MQL_FRAME_MODE)); case MT5_MQL_LICENSE_TYPE: return(MQLInfoInteger(MQL_LICENSE_TYPE)); case MT5_MQL_MEMORY_LIMIT: return(TerminalInfoInteger(TERMINAL_MEMORY_AVAILABLE)); case MT5_MQL_MEMORY_USED: return(TerminalInfoInteger(TERMINAL_MEMORY_USED)); case MT5_MQL_FORWARD: return(MQLInfoInteger(MQL_FORWARD)); case MQL_HANDLES_USED: #ifdef _DEBUG printf("Feature not supported in MQL4: %s; %s", __FUNCTION__, EnumToString(property_id)); #else break; #endif } // Return return(NULL); } #define MQLInfoInteger mt5_MQLInfoInteger #define ENUM_MQL_INFO_INTEGER MT5_ENUM_MQL_INFO_INTEGER #define MQL_MEMORY_LIMIT MT5_MQL_MEMORY_LIMIT #define MQL_MEMORY_USED MT5_MQL_MEMORY_USED #define MQL_PROGRAM_TYPE MT5_MQL_PROGRAM_TYPE #define MQL_DLLS_ALLOWED MT5_MQL_DLLS_ALLOWED #define MQL_TRADE_ALLOWED MT5_MQL_TRADE_ALLOWED #define MQL_SIGNALS_ALLOWED MT5_MQL_SIGNALS_ALLOWED #define MQL_DEBUG MT5_MQL_DEBUG #define MQL_PROFILER MT5_MQL_PROFILER #define MQL_TESTER MT5_MQL_TESTER #define MQL_FORWARD MT5_MQL_FORWARD #define MQL_OPTIMIZATION MT5_MQL_OPTIMIZATION #define MQL_VISUAL_MODE MT5_MQL_VISUAL_MODE #define MQL_FRAME_MODE MT5_MQL_FRAME_MODE #define MQL_LICENSE_TYPE MT5_MQL_LICENSE_TYPE //+------------------------------------------------------------------+ //| MQL4: MQL5-compatible TerminalInfoInteger() | //+------------------------------------------------------------------+ const int mt5_TerminalInfoInteger(const int property_id) { switch(property_id) { case MT5_TERMINAL_BUILD: return(TerminalInfoInteger(TERMINAL_BUILD)); case MT5_TERMINAL_COMMUNITY_ACCOUNT: return(TerminalInfoInteger(TERMINAL_COMMUNITY_ACCOUNT)); case MT5_TERMINAL_COMMUNITY_CONNECTION: return(TerminalInfoInteger(TERMINAL_COMMUNITY_CONNECTION)); case MT5_TERMINAL_CONNECTED: return(TerminalInfoInteger(TERMINAL_CONNECTED)); case MT5_TERMINAL_DLLS_ALLOWED: return(TerminalInfoInteger(TERMINAL_DLLS_ALLOWED)); case MT5_TERMINAL_TRADE_ALLOWED: return(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)); case MT5_TERMINAL_EMAIL_ENABLED: return(TerminalInfoInteger(TERMINAL_EMAIL_ENABLED)); case MT5_TERMINAL_FTP_ENABLED: return(TerminalInfoInteger(TERMINAL_FTP_ENABLED)); case MT5_TERMINAL_NOTIFICATIONS_ENABLED: return(TerminalInfoInteger(TERMINAL_NOTIFICATIONS_ENABLED)); case MT5_TERMINAL_MAXBARS: return(TerminalInfoInteger(TERMINAL_MAXBARS)); case MT5_TERMINAL_MQID: return(TerminalInfoInteger(TERMINAL_MQID)); case MT5_TERMINAL_CODEPAGE: return(TerminalInfoInteger(TERMINAL_CODEPAGE)); case MT5_TERMINAL_CPU_CORES: return(TerminalInfoInteger(TERMINAL_CPU_CORES)); case MT5_TERMINAL_DISK_SPACE: return(TerminalInfoInteger(TERMINAL_DISK_SPACE)); case MT5_TERMINAL_MEMORY_PHYSICAL: return(TerminalInfoInteger(TERMINAL_MEMORY_PHYSICAL)); case MT5_TERMINAL_MEMORY_TOTAL: return(TerminalInfoInteger(TERMINAL_MEMORY_TOTAL)); case MT5_TERMINAL_MEMORY_AVAILABLE: return(TerminalInfoInteger(TERMINAL_MEMORY_AVAILABLE)); case MT5_TERMINAL_MEMORY_USED: return(TerminalInfoInteger(TERMINAL_MEMORY_USED)); case MT5_TERMINAL_X64: return(TerminalInfoInteger(TERMINAL_X64)); case MT5_TERMINAL_OPENCL_SUPPORT: return(TerminalInfoInteger(TERMINAL_OPENCL_SUPPORT)); case MT5_TERMINAL_SCREEN_DPI: return(TerminalInfoInteger(TERMINAL_SCREEN_DPI)); case MT5_TERMINAL_PING_LAST: return(TerminalInfoInteger(TERMINAL_PING_LAST)); case MT5_TERMINAL_VPS: return(TerminalInfoInteger(TERMINAL_VPS)); case TERMINAL_SCREEN_LEFT: case TERMINAL_SCREEN_TOP: case TERMINAL_SCREEN_WIDTH: case TERMINAL_SCREEN_HEIGHT: case TERMINAL_LEFT: case TERMINAL_TOP: case TERMINAL_RIGHT: case TERMINAL_BOTTOM: #ifdef _DEBUG printf("Feature not supported in MQL4: %s; %s", __FUNCTION__, EnumToString(property_id)); #else break; #endif } // Return return(NULL); } #define TerminalInfoInteger mt5_TerminalInfoInteger #define ENUM_TERMINAL_INFO_INTEGER MT5_ENUM_TERMINAL_INFO_INTEGER #define TERMINAL_BUILD MT5_TERMINAL_BUILD #define TERMINAL_COMMUNITY_ACCOUNT MT5_TERMINAL_COMMUNITY_ACCOUNT #define TERMINAL_COMMUNITY_CONNECTION MT5_TERMINAL_COMMUNITY_CONNECTION #define TERMINAL_CONNECTED MT5_TERMINAL_CONNECTED #define TERMINAL_DLLS_ALLOWED MT5_TERMINAL_DLLS_ALLOWED #define TERMINAL_TRADE_ALLOWED MT5_TERMINAL_TRADE_ALLOWED #define TERMINAL_EMAIL_ENABLED MT5_TERMINAL_EMAIL_ENABLED #define TERMINAL_FTP_ENABLED MT5_TERMINAL_FTP_ENABLED #define TERMINAL_NOTIFICATIONS_ENABLED MT5_TERMINAL_NOTIFICATIONS_ENABLED #define TERMINAL_MAXBARS MT5_TERMINAL_MAXBARS #define TERMINAL_MQID MT5_TERMINAL_MQID #define TERMINAL_CODEPAGE MT5_TERMINAL_CODEPAGE #define TERMINAL_CPU_CORES MT5_TERMINAL_CPU_CORES #define TERMINAL_DISK_SPACE MT5_TERMINAL_DISK_SPACE #define TERMINAL_MEMORY_PHYSICAL MT5_TERMINAL_MEMORY_PHYSICAL #define TERMINAL_MEMORY_TOTAL MT5_TERMINAL_MEMORY_TOTAL #define TERMINAL_MEMORY_AVAILABLE MT5_TERMINAL_MEMORY_AVAILABLE #define TERMINAL_MEMORY_USED MT5_TERMINAL_MEMORY_USED #define TERMINAL_X64 MT5_TERMINAL_X64 #define TERMINAL_OPENCL_SUPPORT MT5_TERMINAL_OPENCL_SUPPORT #define TERMINAL_SCREEN_DPI MT5_TERMINAL_SCREEN_DPI #define TERMINAL_PING_LAST MT5_TERMINAL_PING_LAST #define TERMINAL_VPS MT5_TERMINAL_VPS // // END MQL compatibility */ //*********************************************************************************************************************************************************/ #endif // LIB_MQLPLUS_MQL4_COMPATIBILITY_INFOINTEGER_MQH_INCLUDED