add MQL5Test Workspace Content as BKP Solution ...
This commit is contained in:
+575
@@ -0,0 +1,575 @@
|
||||
///////////////////////////////////////////////////////
|
||||
//
|
||||
// SaherElm IT Center MQL5 Class Library
|
||||
// --------------------------------------
|
||||
// Name: XPPSR 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 ...
|
||||
//
|
||||
|
||||
//
|
||||
// XPERIOD Calculation Method ...
|
||||
// USED For Multiple Time Frames ...
|
||||
enum ENUM_X_PERIOD_METHOD
|
||||
{
|
||||
//
|
||||
X_PERIOD_NOTHING,
|
||||
//
|
||||
X_PERIOD_AUTO,
|
||||
//
|
||||
X_PERIOD_MANUALLY
|
||||
};
|
||||
|
||||
//
|
||||
// XPPSR Exported Buffers ...
|
||||
enum ENUM_X_XPPSR_BUFFERS
|
||||
{
|
||||
//
|
||||
// LEVEL 1 ...
|
||||
X_PPSR_L1_R_LINE = 0,
|
||||
X_PPSR_L1_R1_LINE = 1,
|
||||
X_PPSR_L1_R2_LINE = 2,
|
||||
X_PPSR_L1_S_LINE = 3,
|
||||
X_PPSR_L1_S1_LINE = 4,
|
||||
X_PPSR_L1_S2_LINE = 5,
|
||||
//
|
||||
// LEVEL 2 ...
|
||||
X_PPSR_L2_R_LINE = 6,
|
||||
X_PPSR_L2_R1_LINE = 7,
|
||||
X_PPSR_L2_R2_LINE = 8,
|
||||
X_PPSR_L2_S_LINE = 9,
|
||||
X_PPSR_L2_S1_LINE = 10,
|
||||
X_PPSR_L2_S2_LINE = 11,
|
||||
//
|
||||
// LEVEL 3 ...
|
||||
X_PPSR_L3_R_LINE = 12,
|
||||
X_PPSR_L3_R1_LINE = 13,
|
||||
X_PPSR_L3_R2_LINE = 14,
|
||||
X_PPSR_L3_S_LINE = 15,
|
||||
X_PPSR_L3_S1_LINE = 16,
|
||||
X_PPSR_L3_S2_LINE = 17,
|
||||
//
|
||||
// LEVEL 4 ...
|
||||
X_PPSR_L4_R_LINE = 18,
|
||||
X_PPSR_L4_R1_LINE = 19,
|
||||
X_PPSR_L4_R2_LINE = 20,
|
||||
X_PPSR_L4_S_LINE = 21,
|
||||
X_PPSR_L4_S1_LINE = 22,
|
||||
X_PPSR_L4_S2_LINE = 23,
|
||||
};
|
||||
|
||||
//
|
||||
// END Definitions ...
|
||||
//
|
||||
|
||||
//
|
||||
// START Overrides ...
|
||||
//
|
||||
|
||||
//
|
||||
// END Overrides ...
|
||||
//
|
||||
|
||||
class XSCXPPSRHelper
|
||||
{
|
||||
//
|
||||
public:
|
||||
//
|
||||
// Properties ...
|
||||
|
||||
//
|
||||
// LEVEL 1 ...
|
||||
double l1RBuffer[];
|
||||
double l1R1Buffer[];
|
||||
double l1R2Buffer[];
|
||||
double l1SBuffer[];
|
||||
double l1S1Buffer[];
|
||||
double l1S2Buffer[];
|
||||
|
||||
//
|
||||
// LEVEL 2 ...
|
||||
double l2RBuffer[];
|
||||
double l2R1Buffer[];
|
||||
double l2R2Buffer[];
|
||||
double l2SBuffer[];
|
||||
double l2S1Buffer[];
|
||||
double l2S2Buffer[];
|
||||
|
||||
//
|
||||
// LEVEL 3 ...
|
||||
double l3RBuffer[];
|
||||
double l3R1Buffer[];
|
||||
double l3R2Buffer[];
|
||||
double l3SBuffer[];
|
||||
double l3S1Buffer[];
|
||||
double l3S2Buffer[];
|
||||
|
||||
//
|
||||
// LEVEL 4 ...
|
||||
double l4RBuffer[];
|
||||
double l4R1Buffer[];
|
||||
double l4R2Buffer[];
|
||||
double l4SBuffer[];
|
||||
double l4S1Buffer[];
|
||||
double l4S2Buffer[];
|
||||
|
||||
//
|
||||
// Constructor ...
|
||||
void XSCXPPSRHelper()
|
||||
{
|
||||
mSymbol = _Symbol;
|
||||
mPeriod = _Period;
|
||||
}
|
||||
void XSCXPPSRHelper(
|
||||
//
|
||||
// Symbol ...
|
||||
string symbol,
|
||||
//
|
||||
// Period ...
|
||||
ENUM_TIMEFRAMES period,
|
||||
//
|
||||
// Buffer Reading ...
|
||||
int numberOfItemsReadPerTick = 52,
|
||||
//
|
||||
// LEVEL 1 ...
|
||||
ENUM_X_PERIOD_METHOD l1Method = X_PERIOD_AUTO,
|
||||
ENUM_TIMEFRAMES l1Period = NULL,
|
||||
ENUM_SERIESMODE l1HHMode = MODE_HIGH,
|
||||
ENUM_SERIESMODE l1LLMode = MODE_LOW,
|
||||
//
|
||||
// LEVEL 2 ...
|
||||
ENUM_X_PERIOD_METHOD l2Method = X_PERIOD_AUTO,
|
||||
ENUM_TIMEFRAMES l2Period = NULL,
|
||||
ENUM_SERIESMODE l2HHMode = MODE_HIGH,
|
||||
ENUM_SERIESMODE l2LLMode = MODE_LOW,
|
||||
//
|
||||
// LEVEL 3 ...
|
||||
ENUM_X_PERIOD_METHOD l3Method = X_PERIOD_AUTO,
|
||||
ENUM_TIMEFRAMES l3Period = NULL,
|
||||
ENUM_SERIESMODE l3HHMode = MODE_HIGH,
|
||||
ENUM_SERIESMODE l3LLMode = MODE_LOW,
|
||||
//
|
||||
// LEVEL 4 ...
|
||||
ENUM_X_PERIOD_METHOD l4Method = X_PERIOD_AUTO,
|
||||
ENUM_TIMEFRAMES l4Period = NULL,
|
||||
ENUM_SERIESMODE l4HHMode = MODE_HIGH,
|
||||
ENUM_SERIESMODE l4LLMode = MODE_LOW
|
||||
//
|
||||
)
|
||||
{
|
||||
//
|
||||
// Setting Requirements ...
|
||||
|
||||
//
|
||||
// Symbol ...
|
||||
mSymbol = symbol;
|
||||
|
||||
//
|
||||
// Period ...
|
||||
mPeriod = period;
|
||||
|
||||
//
|
||||
// Number of Reading Buffer Items per Tick ...
|
||||
mNumberOfItemsReadPerTick = numberOfItemsReadPerTick;
|
||||
|
||||
//
|
||||
// LEVEL 1 ...
|
||||
mL1Method = l1Method;
|
||||
mL1Period = l1Period;
|
||||
mL1HHMode = l1HHMode;
|
||||
mL1LLMode = l1LLMode;
|
||||
|
||||
//
|
||||
// LEVEL 2 ...
|
||||
mL2Method = l2Method;
|
||||
mL2Period = l2Period;
|
||||
mL2HHMode = l2HHMode;
|
||||
mL2LLMode = l2LLMode;
|
||||
|
||||
//
|
||||
// LEVEL 3 ...
|
||||
mL3Method = l3Method;
|
||||
mL3Period = l3Period;
|
||||
mL3HHMode = l3HHMode;
|
||||
mL3LLMode = l3LLMode;
|
||||
|
||||
//
|
||||
// LEVEL 4 ...
|
||||
mL4Method = l4Method;
|
||||
mL4Period = l4Period;
|
||||
mL4HHMode = l4HHMode;
|
||||
mL4LLMode = l4LLMode;
|
||||
|
||||
//
|
||||
mTag = "XPPSR " + mSymbol + ", " + ToString(mPeriod);
|
||||
|
||||
//
|
||||
// Initial Handler ...
|
||||
mHandler = iCustom(
|
||||
mSymbol,
|
||||
mPeriod,
|
||||
"x-saherelm.x121.xppsr",
|
||||
//
|
||||
// Inputs ...
|
||||
//
|
||||
// LEVEL 1 ...
|
||||
"",
|
||||
mL1Method,
|
||||
mL1Period,
|
||||
mL1HHMode,
|
||||
mL1LLMode,
|
||||
//
|
||||
// LEVEL 2 ...
|
||||
"",
|
||||
mL2Method,
|
||||
mL2Period,
|
||||
mL2HHMode,
|
||||
mL2LLMode,
|
||||
//
|
||||
// LEVEL 3 ...
|
||||
"",
|
||||
mL3Method,
|
||||
mL3Period,
|
||||
mL3HHMode,
|
||||
mL3LLMode,
|
||||
//
|
||||
// LEVEL 4 ...
|
||||
"",
|
||||
mL4Method,
|
||||
mL4Period,
|
||||
mL4HHMode,
|
||||
mL4LLMode,
|
||||
//
|
||||
"",
|
||||
"",
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
"",
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
//
|
||||
);
|
||||
if (mHandler == INVALID_HANDLE)
|
||||
{
|
||||
LogMessage("failed to Initialize Indicator: " + (string)GetLastError());
|
||||
}
|
||||
|
||||
//
|
||||
// LEVEL 1 ...
|
||||
ArraySetAsSeries(l1RBuffer, true);
|
||||
ArraySetAsSeries(l1R1Buffer, true);
|
||||
ArraySetAsSeries(l1R2Buffer, true);
|
||||
ArraySetAsSeries(l1SBuffer, true);
|
||||
ArraySetAsSeries(l1S1Buffer, true);
|
||||
ArraySetAsSeries(l1S2Buffer, true);
|
||||
|
||||
//
|
||||
// LEVEL 2 ...
|
||||
ArraySetAsSeries(l2RBuffer, true);
|
||||
ArraySetAsSeries(l2R1Buffer, true);
|
||||
ArraySetAsSeries(l2R2Buffer, true);
|
||||
ArraySetAsSeries(l2SBuffer, true);
|
||||
ArraySetAsSeries(l2S1Buffer, true);
|
||||
ArraySetAsSeries(l2S2Buffer, true);
|
||||
|
||||
//
|
||||
// LEVEL 3 ...
|
||||
ArraySetAsSeries(l3RBuffer, true);
|
||||
ArraySetAsSeries(l3R1Buffer, true);
|
||||
ArraySetAsSeries(l3R2Buffer, true);
|
||||
ArraySetAsSeries(l3SBuffer, true);
|
||||
ArraySetAsSeries(l3S1Buffer, true);
|
||||
ArraySetAsSeries(l3S2Buffer, true);
|
||||
|
||||
//
|
||||
// LEVEL 4 ...
|
||||
ArraySetAsSeries(l4RBuffer, true);
|
||||
ArraySetAsSeries(l4R1Buffer, true);
|
||||
ArraySetAsSeries(l4R2Buffer, true);
|
||||
ArraySetAsSeries(l4SBuffer, true);
|
||||
ArraySetAsSeries(l4S1Buffer, true);
|
||||
ArraySetAsSeries(l4S2Buffer, true);
|
||||
}
|
||||
|
||||
//
|
||||
// DeConstructor ...
|
||||
void ~XSCXPPSRHelper()
|
||||
{
|
||||
//
|
||||
// Release Indicators ...
|
||||
IndicatorRelease(mHandler);
|
||||
}
|
||||
|
||||
//
|
||||
// Reading Buffers ...
|
||||
void ReadBuffers()
|
||||
{
|
||||
//
|
||||
// LEVEL 1 ...
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L1_R_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l1RBuffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L1_R1_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l1R1Buffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L1_R2_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l1R2Buffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L1_S_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l1SBuffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L1_S1_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l1S1Buffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L1_S2_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l1S2Buffer);
|
||||
|
||||
//
|
||||
// LEVEL 2 ...
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L2_R_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l2RBuffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L2_R1_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l2R1Buffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L2_R2_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l2R2Buffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L2_S_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l2SBuffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L2_S1_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l2S1Buffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L2_S2_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l2S2Buffer);
|
||||
|
||||
//
|
||||
// LEVEL 3 ...
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L3_R_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l3RBuffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L3_R1_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l3R1Buffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L3_R2_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l3R2Buffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L3_S_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l3SBuffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L3_S1_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l3S1Buffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L3_S2_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l3S2Buffer);
|
||||
|
||||
//
|
||||
// LEVEL 4 ...
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L4_R_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l4RBuffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L4_R1_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l4R1Buffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L4_R2_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l4R2Buffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L4_S_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l4SBuffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L4_S1_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l4S1Buffer);
|
||||
CopyBuffer(
|
||||
mHandler,
|
||||
X_PPSR_L4_S2_LINE,
|
||||
0,
|
||||
mNumberOfItemsReadPerTick,
|
||||
l4S2Buffer);
|
||||
}
|
||||
|
||||
//
|
||||
// START Tools Functions ...
|
||||
//
|
||||
|
||||
//
|
||||
// END Tools Functions ...
|
||||
//
|
||||
|
||||
//
|
||||
protected:
|
||||
//
|
||||
private:
|
||||
//
|
||||
// Symbol ...
|
||||
string mSymbol;
|
||||
|
||||
//
|
||||
// Period ...
|
||||
ENUM_TIMEFRAMES mPeriod;
|
||||
|
||||
//
|
||||
// Buffer Reading ...
|
||||
int mNumberOfItemsReadPerTick;
|
||||
|
||||
//
|
||||
// LEVEL 1 ...
|
||||
ENUM_X_PERIOD_METHOD mL1Method;
|
||||
ENUM_TIMEFRAMES mL1Period;
|
||||
ENUM_SERIESMODE mL1HHMode;
|
||||
ENUM_SERIESMODE mL1LLMode;
|
||||
|
||||
//
|
||||
// LEVEL 2 ...
|
||||
ENUM_X_PERIOD_METHOD mL2Method;
|
||||
ENUM_TIMEFRAMES mL2Period;
|
||||
ENUM_SERIESMODE mL2HHMode;
|
||||
ENUM_SERIESMODE mL2LLMode;
|
||||
|
||||
//
|
||||
// LEVEL 3 ...
|
||||
ENUM_X_PERIOD_METHOD mL3Method;
|
||||
ENUM_TIMEFRAMES mL3Period;
|
||||
ENUM_SERIESMODE mL3HHMode;
|
||||
ENUM_SERIESMODE mL3LLMode;
|
||||
|
||||
//
|
||||
// LEVEL 4 ...
|
||||
ENUM_X_PERIOD_METHOD mL4Method;
|
||||
ENUM_TIMEFRAMES mL4Period;
|
||||
ENUM_SERIESMODE mL4HHMode;
|
||||
ENUM_SERIESMODE mL4LLMode;
|
||||
|
||||
//
|
||||
string mTag;
|
||||
|
||||
//
|
||||
int mHandler;
|
||||
|
||||
//
|
||||
bool IsValidArraySize(int bar_index)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
if (bar_index < 0)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
int rCount = ArraySize(l1RBuffer);
|
||||
result = rCount > bar_index + 1;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user