add MQL5Test Workspace Content as BKP Solution ...
This commit is contained in:
+314
@@ -0,0 +1,314 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// SaherElm IT Center MQL5 XMRBHLP Indicator Helper for Signal Providers
|
||||
// --------------------------------------------------------------------------
|
||||
//
|
||||
// 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 Includes ...
|
||||
//
|
||||
|
||||
//
|
||||
// Includes ...
|
||||
#include "../../Libraries/x-saherelm.alert.lib.mq5"
|
||||
#include "../../Libraries/x-saherelm.models.lib.mq5"
|
||||
#include "../../Libraries/x-saherelm.common.lib.mq5"
|
||||
|
||||
//
|
||||
// END Includes ...
|
||||
//
|
||||
|
||||
//
|
||||
// START Constants/Enums ...
|
||||
//
|
||||
|
||||
//
|
||||
// XMRB Exported Buffers ...
|
||||
enum ENUM_X_XMRB_BUFFERS
|
||||
{
|
||||
//
|
||||
X_MRB_FAST_LINE = 0,
|
||||
X_MRB_SLOW_LINE = 1,
|
||||
|
||||
//
|
||||
X_MRB_FAST_1_LINE = 2,
|
||||
X_MRB_FAST_2_LINE = 3,
|
||||
X_MRB_FAST_3_LINE = 4,
|
||||
X_MRB_FAST_4_LINE = 5,
|
||||
X_MRB_FAST_5_LINE = 6,
|
||||
|
||||
//
|
||||
X_MRB_SLOW_1_LINE = 7,
|
||||
X_MRB_SLOW_2_LINE = 8,
|
||||
X_MRB_SLOW_3_LINE = 9,
|
||||
X_MRB_SLOW_4_LINE = 10,
|
||||
X_MRB_SLOW_5_LINE = 11,
|
||||
};
|
||||
|
||||
//
|
||||
// END Constants/Enums ...
|
||||
//
|
||||
|
||||
//
|
||||
// START Definitions ...
|
||||
//
|
||||
|
||||
//
|
||||
double mrbFastBuffer[];
|
||||
double mrbSlowBuffer[];
|
||||
|
||||
//
|
||||
int mrbHandler = INVALID_HANDLE;
|
||||
|
||||
//
|
||||
// END Definitions ...
|
||||
//
|
||||
|
||||
//
|
||||
// START Handler Functions ...
|
||||
//
|
||||
|
||||
//
|
||||
bool XMRBHLPOnInit()
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
ArraySetAsSeries(mrbFastBuffer, true);
|
||||
ArraySetAsSeries(mrbSlowBuffer, true);
|
||||
|
||||
//
|
||||
// Initial Handler ...
|
||||
mrbHandler = iCustom(
|
||||
_Symbol,
|
||||
_Period,
|
||||
"x-saherelm.x121.xmrb",
|
||||
//
|
||||
// Inputs ...
|
||||
//
|
||||
"",
|
||||
3,
|
||||
5,
|
||||
//
|
||||
"",
|
||||
8,
|
||||
13,
|
||||
//
|
||||
"",
|
||||
21,
|
||||
34,
|
||||
//
|
||||
"",
|
||||
55,
|
||||
89,
|
||||
//
|
||||
"",
|
||||
144,
|
||||
233,
|
||||
//
|
||||
"",
|
||||
MODE_EMA,
|
||||
PRICE_CLOSE,
|
||||
//
|
||||
"",
|
||||
false,
|
||||
false,
|
||||
false
|
||||
//
|
||||
);
|
||||
result = mrbHandler != INVALID_HANDLE;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
void XMRBHLPOnDeInit()
|
||||
{
|
||||
//
|
||||
// Release Indicators ...
|
||||
IndicatorRelease(mrbHandler);
|
||||
}
|
||||
|
||||
//
|
||||
void XMRBHLPReadBuffers()
|
||||
{
|
||||
//
|
||||
// FAST ...
|
||||
CopyBuffer(
|
||||
mrbHandler,
|
||||
X_MRB_FAST_LINE,
|
||||
0,
|
||||
52,
|
||||
mrbFastBuffer);
|
||||
|
||||
//
|
||||
// SLOW ...
|
||||
CopyBuffer(
|
||||
mrbHandler,
|
||||
X_MRB_SLOW_LINE,
|
||||
0,
|
||||
52,
|
||||
mrbSlowBuffer);
|
||||
}
|
||||
|
||||
//
|
||||
// END Handler Functions ...
|
||||
//
|
||||
|
||||
//
|
||||
// START Helper Functions ...
|
||||
//
|
||||
|
||||
//
|
||||
// Check Fast Over Slow ...
|
||||
bool XMRBHLPIsFastOverSlow(
|
||||
int bar_index // Bar Index ...
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
if (!XMRBHLPIsValidArraySize(bar_index))
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
result =
|
||||
//
|
||||
IsOver(
|
||||
mrbFastBuffer,
|
||||
mrbSlowBuffer,
|
||||
bar_index)
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Check Fast Crossed Over Slow ...
|
||||
bool XMRBHLPIsFastCrossedOverSlow(
|
||||
int bar_index // Bar Index ...
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
if (!XMRBHLPIsValidArraySize(bar_index))
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
result =
|
||||
//
|
||||
IsCrossOver(
|
||||
mrbFastBuffer,
|
||||
mrbSlowBuffer,
|
||||
bar_index)
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Check Fast Under Slow ...
|
||||
bool XMRBHLPIsFastUnderSlow(
|
||||
int bar_index // Bar Index ...
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
if (!XMRBHLPIsValidArraySize(bar_index))
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
result =
|
||||
//
|
||||
IsUnder(
|
||||
mrbFastBuffer,
|
||||
mrbSlowBuffer,
|
||||
bar_index)
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Check Fast Crossed Under Slow ...
|
||||
bool XMRBHLPIsFastCrossedUnderSlow(
|
||||
int bar_index // Bar Index ...
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
if (!XMRBHLPIsValidArraySize(bar_index))
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
result =
|
||||
//
|
||||
IsCrossUnder(
|
||||
mrbFastBuffer,
|
||||
mrbSlowBuffer,
|
||||
bar_index)
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
bool XMRBHLPIsValidArraySize(int bar_index)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
if (bar_index < 0)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
int rCount = ArraySize(mrbFastBuffer);
|
||||
result = rCount > bar_index + 1;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// END Helper Functions ...
|
||||
//
|
||||
Reference in New Issue
Block a user