add MQL5Test Workspace Content as BKP Solution ...
This commit is contained in:
+418
@@ -0,0 +1,418 @@
|
||||
///////////////////////////////////////////////////////
|
||||
//
|
||||
// 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;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user