Files
mql-zmq/Include/Mql/Lang/Mql.mqh
T

106 lines
5.1 KiB
Plaintext

//+------------------------------------------------------------------+
//| Module: Lang/Mql.mqh |
//| This file is part of the mql4-lib project: |
//| https://github.com/dingmaotu/mql4-lib |
//| |
//| Copyright 2017 Li Ding <dingmaotu@126.com> |
//| |
//| Licensed under the Apache License, Version 2.0 (the "License"); |
//| you may not use this file except in compliance with the License. |
//| You may obtain a copy of the License at |
//| |
//| http://www.apache.org/licenses/LICENSE-2.0 |
//| |
//| Unless required by applicable law or agreed to in writing, |
//| software distributed under the License is distributed on an |
//| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, |
//| either express or implied. |
//| See the License for the specific language governing permissions |
//| and limitations under the License. |
//+------------------------------------------------------------------+
#property strict
#import "stdlib.ex4"
string ErrorDescription(int error_code);
int RGB(int red_value,int green_value,int blue_value);
bool CompareDoubles(double number1,double number2);
string DoubleToStrMorePrecision(double number,int precision);
string IntegerToHexString(int integer_number);
#import
//+------------------------------------------------------------------+
//| Mql language specific methods |
//+------------------------------------------------------------------+
class Mql
{
public:
static int getLastError() {return GetLastError();}
static string getErrorMessage(int errorCode) {return ErrorDescription(errorCode);}
static string doubleToString(double value,int precision) {return DoubleToStrMorePrecision(value,precision);}
static string integerToHexString(int value) {return IntegerToHexString(value);}
static int rgb(int red,int green,int blue) {return RGB(red,green,blue);}
static bool isEqual(double a,double b) {return CompareDoubles(a,b);}
static bool isStopped() {return IsStopped();}
static int getCodePage() {return MQLInfoInteger(MQL_CODEPAGE);}
static ENUM_PROGRAM_TYPE getProgramType() {return(ENUM_PROGRAM_TYPE)MQLInfoInteger(MQL_PROGRAM_TYPE);}
static bool isScript() {return Mql::getProgramType()==PROGRAM_SCRIPT;}
static bool isExpert() {return Mql::getProgramType()==PROGRAM_EXPERT;}
static bool isIndicator() {return Mql::getProgramType()==PROGRAM_INDICATOR;}
static bool isDllAllowed() {return MQLInfoInteger(MQL_DLLS_ALLOWED)!=0;}
static bool isTradeAllowed() {return MQLInfoInteger(MQL_TRADE_ALLOWED)!=0;}
static bool isSignalsAllowed() {return MQLInfoInteger(MQL_SIGNALS_ALLOWED)!=0;}
static bool isDebug() {return MQLInfoInteger(MQL_DEBUG)!=0;}
static bool isProfiling() {return MQLInfoInteger(MQL_PROFILER)!=0;}
static bool isTesting() {return MQLInfoInteger(MQL_TESTER)!=0;}
static bool isOptimizing() {return MQLInfoInteger(MQL_OPTIMIZATION)!=0;}
static bool isVisual() {return MQLInfoInteger(MQL_VISUAL_MODE)!=0;}
static bool isFrameMode() {return MQLInfoInteger(MQL_FRAME_MODE)!=0;}
static ENUM_LICENSE_TYPE getLicenseType() {return(ENUM_LICENSE_TYPE)MQLInfoInteger(MQL_LICENSE_TYPE);}
static bool isFreeLicense() {return Mql::getLicenseType()==LICENSE_FREE;}
static bool isDemoLicense() {return Mql::getLicenseType()==LICENSE_DEMO;}
static bool isFullLicense() {return Mql::getLicenseType()==LICENSE_FULL;}
static bool isTimeLicense() {return Mql::getLicenseType()==LICENSE_TIME;}
static string getProgramName() {return MQLInfoString(MQL_PROGRAM_NAME);}
static string getProgramPath() {return MQLInfoString(MQL_PROGRAM_PATH);}
};
#define ObjectAttr(Type, Private, Public) \
public:\
Type get##Public() const {return m_##Private;}\
void set##Public(Type value) {m_##Private=value;}\
private:\
Type m_##Private\
#define ObjectAttrRead(Type, Private, Public) \
public:\
Type get##Public() const {return m_##Private;}\
private:\
Type m_##Private\
#define ObjectAttrWrite(Type, Private, Public) \
public:\
void set##Public(Type value) {m_##Private=value;}\
private:\
Type m_##Private\
#ifdef _DEBUG
#define Debug(msg) Print(">>> DEBUG: In ",__FUNCTION__,"(",__FILE__,":",__LINE__,") [", msg, "]")
#else
#define Debug(msg)
#endif
//--- Execute some code in the global scope
#define BEGIN_EXECUTE(Name) class __Execute##Name\
{\
public:__Execute##Name()\
{
#define END_EXECUTE(Name) \
}\
}\
__execute##Name;
//+------------------------------------------------------------------+