Files
xMQL5/MQLTestWorkspace/BKPS/BKP/x121 old style indicators/Helpers/x-saherelm.x121.xmc.helper.mq5
T

418 lines
7.9 KiB
Plaintext

///////////////////////////////////////////////////////
//
// SaherElm IT Center MQL5 Class Library
// --------------------------------------
// Name: XMC Indicator Provider
// Description: Provides Features ...
//
//
// Maintainer:
// ------------
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
//
//////////////////////////////////////////////////////
//
// Global Properties ...
#property library
#property copyright "Copyright 2023, SaherElm IT Center"
#property link "https://www.saherelm.ir"
#property version "1.00"
#property strict
//
// START Import and Inclused requirements ...
//
//
// Includes ...
#include "../Libraries/x-saherelm.alert.lib.mq5"
#include "../Libraries/x-saherelm.models.lib.mq5"
#include "../Libraries/x-saherelm.common.lib.mq5"
//
// END Import and Inclused requirements ...
//
//
// START Definitions ...
//
//
// XMC Exported Buffers ...
enum ENUM_X_XMC_BUFFERS
{
//
X_MC_FAST_LINE = 0,
X_MC_SLOW_LINE = 1,
X_MC_VERIFIER_LINE = 2,
};
//
// END Definitions ...
//
//
// START Overrides ...
//
//
// END Overrides ...
//
class XSCXMCHelper
{
//
public:
//
// Properties ...
double fastBuffer[];
double slowBuffer[];
double verifierBuffer[];
//
// Constructor ...
void XSCXMCHelper() {
mSymbol = _Symbol;
mPeriod = _Period;
}
void XSCXMCHelper(
//
// Symbol ...
string symbol,
//
// Period ...
ENUM_TIMEFRAMES period,
//
// Buffer Reading ...
int numberOfItemsReadPerTick = 52,
//
// FAST ...
int fastMaLength = 9,
int fastMaShift = 0,
ENUM_MA_METHOD fastMaMethod = MODE_EMA,
ENUM_APPLIED_PRICE fastMaAppliedTo = PRICE_CLOSE,
//
// SLOW ...
int slowMaLength = 18,
int slowMaShift = 0,
ENUM_MA_METHOD slowMaMethod = MODE_EMA,
ENUM_APPLIED_PRICE slowMaAppliedTo = PRICE_CLOSE,
//
// VERIFIER ...
int verifierMaLength = 50,
int verifierMaShift = 0,
ENUM_MA_METHOD verifierMaMethod = MODE_EMA,
ENUM_APPLIED_PRICE verifierMaAppliedTo = PRICE_CLOSE
//
)
{
//
// Setting Requirements ...
//
// Symbol ...
mSymbol = symbol;
//
// Period ...
mPeriod = period;
//
// Number of Reading Buffer Items per Tick ...
mNumberOfItemsReadPerTick = numberOfItemsReadPerTick;
//
// FAST ...
mFastMaLength = fastMaLength;
mFastMaShift = fastMaShift;
mFastMaMethod = fastMaMethod;
mFastMaAppliedTo = fastMaAppliedTo;
//
// SLOW ...
mSlowMaLength = slowMaLength;
mSlowMaShift = slowMaShift;
mSlowMaMethod = slowMaMethod;
mSlowMaAppliedTo = slowMaAppliedTo;
//
// VERIFIER ...
mVerifierMaLength = verifierMaLength;
mVerifierMaShift = verifierMaShift;
mVerifierMaMethod = verifierMaMethod;
mVerifierMaAppliedTo = verifierMaAppliedTo;
//
mTag = "XMC " + mSymbol + ", " + ToString(mPeriod);
//
// Initial Handler ...
mHandler = iCustom(
mSymbol,
mPeriod,
"x-saherelm.x121.xmc",
//
// Inputs ...
//
// FAST ...
"",
mFastMaLength,
mFastMaShift,
mFastMaMethod,
mFastMaAppliedTo,
//
// SLOW ...
"",
mSlowMaLength,
mSlowMaShift,
mSlowMaMethod,
mSlowMaAppliedTo,
//
// VERIFIER ...
"",
mVerifierMaLength,
mVerifierMaShift,
mVerifierMaMethod,
mVerifierMaAppliedTo,
//
"",
false,
false,
false
//
);
if (mHandler == INVALID_HANDLE)
{
LogMessage("failed to Initialize Indicator: " + (string)GetLastError());
}
//
ArraySetAsSeries(fastBuffer, true);
ArraySetAsSeries(slowBuffer, true);
ArraySetAsSeries(verifierBuffer, true);
}
//
// DeConstructor ...
void ~XSCXMCHelper()
{
//
// Release Indicators ...
IndicatorRelease(mHandler);
}
//
// Reading Buffers ...
void ReadBuffers()
{
//
// FAST ...
CopyBuffer(
mHandler,
X_MC_FAST_LINE,
0,
mNumberOfItemsReadPerTick,
fastBuffer);
//
// SLOW ...
CopyBuffer(
mHandler,
X_MC_SLOW_LINE,
0,
mNumberOfItemsReadPerTick,
slowBuffer);
//
// VERIFIER ...
CopyBuffer(
mHandler,
X_MC_VERIFIER_LINE,
0,
mNumberOfItemsReadPerTick,
verifierBuffer);
}
//
// START Tools Functions ...
//
//
// Check Fast Over Slow ...
bool IsFastOverSlow(
int bar_index // Bar Index ...
) {
//
bool result = false;
//
if (!IsValidArraySize(bar_index)) {
return result;
}
//
result =
//
IsOver(
fastBuffer,
slowBuffer,
bar_index
)
//
;
//
return result;
}
//
// Check Fast Crossed Over Slow ...
bool IsFastCrossedOverSlow(
int bar_index // Bar Index ...
) {
//
bool result = false;
//
if (!IsValidArraySize(bar_index)) {
return result;
}
//
result =
//
IsCrossOver(
fastBuffer,
slowBuffer,
bar_index
)
//
;
//
return result;
}
//
// Check Fast Under Slow ...
bool IsFastUnderSlow(
int bar_index // Bar Index ...
) {
//
bool result = false;
//
if (!IsValidArraySize(bar_index)) {
return result;
}
//
result =
//
IsUnder(
fastBuffer,
slowBuffer,
bar_index
)
//
;
//
return result;
}
//
// Check Fast Crossed Under Slow ...
bool IsFastCrossedUnderSlow(
int bar_index // Bar Index ...
) {
//
bool result = false;
//
if (!IsValidArraySize(bar_index)) {
return result;
}
//
result =
//
IsCrossUnder(
fastBuffer,
slowBuffer,
bar_index
)
//
;
//
return result;
}
//
// END Tools Functions ...
//
//
protected:
//
private:
//
// Symbol ...
string mSymbol;
//
// Period ...
ENUM_TIMEFRAMES mPeriod;
//
// Buffer Reading ...
int mNumberOfItemsReadPerTick;
//
// FAST ...
int mFastMaLength;
int mFastMaShift;
ENUM_MA_METHOD mFastMaMethod;
ENUM_APPLIED_PRICE mFastMaAppliedTo;
//
// SLOW ...
int mSlowMaLength;
int mSlowMaShift;
ENUM_MA_METHOD mSlowMaMethod;
ENUM_APPLIED_PRICE mSlowMaAppliedTo;
//
// VERIFIER ...
int mVerifierMaLength;
int mVerifierMaShift;
ENUM_MA_METHOD mVerifierMaMethod;
ENUM_APPLIED_PRICE mVerifierMaAppliedTo;
//
string mTag;
//
int mHandler;
//
bool IsValidArraySize(int bar_index)
{
//
bool result = false;
//
if (bar_index < 0)
{
return result;
}
//
int rCount = ArraySize(fastBuffer);
result = rCount > bar_index + 1;
//
return result;
}
};