last ...
This commit is contained in:
@@ -2661,7 +2661,7 @@ struct X121SMCStrategyConditionParser
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Rejected Boxes ...
|
// Rejected Boxes ...
|
||||||
bool HasRejectedBocXConditions(
|
bool HasRejectedBoxConditions(
|
||||||
ENUM_X_CYCLES cycle,
|
ENUM_X_CYCLES cycle,
|
||||||
XSignalBox &box,
|
XSignalBox &box,
|
||||||
ENUM_X_DIRECTION &dir,
|
ENUM_X_DIRECTION &dir,
|
||||||
@@ -2952,7 +2952,7 @@ struct X121SMCStrategyConditionParser
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Activated Boxes ...
|
// Activated Boxes ...
|
||||||
bool HasActivatedBocXConditions(
|
bool HasActivatedBoxConditions(
|
||||||
ENUM_X_CYCLES cycle,
|
ENUM_X_CYCLES cycle,
|
||||||
XSignalBox &box,
|
XSignalBox &box,
|
||||||
ENUM_X_DIRECTION &dir,
|
ENUM_X_DIRECTION &dir,
|
||||||
@@ -3267,7 +3267,7 @@ struct X121SMCStrategyConditionParser
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Breaked Boxes ...
|
// Breaked Boxes ...
|
||||||
bool HasBreakedBocXConditions(
|
bool HasBreakedBoxConditions(
|
||||||
ENUM_X_CYCLES cycle,
|
ENUM_X_CYCLES cycle,
|
||||||
XSignalBox &box,
|
XSignalBox &box,
|
||||||
ENUM_X_DIRECTION &dir,
|
ENUM_X_DIRECTION &dir,
|
||||||
@@ -4501,16 +4501,16 @@ struct X121SMCStrategyConditionParser
|
|||||||
//
|
//
|
||||||
bool isBullishTKZone =
|
bool isBullishTKZone =
|
||||||
isIchIsBullish &&
|
isIchIsBullish &&
|
||||||
cBar.low < cXConditions.tenkanSenBuffer[cIndex] &&
|
cBar.low < cXConditions.tenkanSenBuffer[cIDX] &&
|
||||||
cBar.low > cXConditions.kijunSenBuffer[cIndex] &&
|
cBar.low > cXConditions.kijunSenBuffer[cIDX] &&
|
||||||
cBar.low < pBar.low &&
|
cBar.low < pBar.low &&
|
||||||
zBar.open > cBar.low;
|
zBar.open > cBar.low;
|
||||||
|
|
||||||
//
|
//
|
||||||
bool isBearishTKZone =
|
bool isBearishTKZone =
|
||||||
isIchIsBearish &&
|
isIchIsBearish &&
|
||||||
cBar.high > cXConditions.tenkanSenBuffer[cIndex] &&
|
cBar.high > cXConditions.tenkanSenBuffer[cIDX] &&
|
||||||
cBar.high < cXConditions.kijunSenBuffer[cIndex] &&
|
cBar.high < cXConditions.kijunSenBuffer[cIDX] &&
|
||||||
cBar.high > pBar.high &&
|
cBar.high > pBar.high &&
|
||||||
zBar.open < cBar.high;
|
zBar.open < cBar.high;
|
||||||
|
|
||||||
@@ -4563,14 +4563,17 @@ struct X121SMCStrategyConditionParser
|
|||||||
box.period = cBar.period;
|
box.period = cBar.period;
|
||||||
|
|
||||||
//
|
//
|
||||||
pivot = isBullish
|
double points = GetPoints(box.symbol);
|
||||||
? cBar.low - (points * 5)
|
|
||||||
: cBar.high + (points * 5);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
point = GetEntry(
|
double pivot = isBullish
|
||||||
|
? cBar.low - (points * 5)
|
||||||
|
: cBar.high + (points * 5);
|
||||||
|
|
||||||
|
//
|
||||||
|
double point = GetEntry(
|
||||||
cBar.symbol,
|
cBar.symbol,
|
||||||
signalBoxDir //
|
dir //
|
||||||
);
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -4591,12 +4594,306 @@ struct X121SMCStrategyConditionParser
|
|||||||
{
|
{
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check All Conditions ...
|
||||||
|
result =
|
||||||
|
box.IsValid() &&
|
||||||
|
HasDirection(dir) &&
|
||||||
|
(isBullish ||
|
||||||
|
isBearish);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Cleanup Resources ...
|
||||||
|
zBar.Clean();
|
||||||
|
cBar.Clean();
|
||||||
|
pBar.Clean();
|
||||||
|
pPBar.Clean();
|
||||||
|
cState.Clean();
|
||||||
|
cConditions.Clean();
|
||||||
|
cConditions.Clean();
|
||||||
|
ZeroMemory(cHelper);
|
||||||
|
cStateEvents.Clean();
|
||||||
|
cXConditions.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool HasXSTRConditions(
|
||||||
|
ENUM_X_CYCLES cycle,
|
||||||
|
XBoxZone &box,
|
||||||
|
ENUM_X_DIRECTION &dir,
|
||||||
|
X121SMCStrategySignalProviderData &provider,
|
||||||
|
int barIndex = 0 //
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
//
|
||||||
|
box.Clean();
|
||||||
|
dir = X_DIRECTION_NONE;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Fil Selected Data ...
|
||||||
|
XPOIState cState;
|
||||||
|
X121Conditions cXConditions;
|
||||||
|
XPOIStateEvents cStateEvents;
|
||||||
|
XC121SMCCycleHelper *cHelper;
|
||||||
|
X121SMCCycleConditions cConditions;
|
||||||
|
result = provider.SelectCycle(
|
||||||
|
cycle,
|
||||||
|
cState,
|
||||||
|
cStateEvents,
|
||||||
|
cXConditions,
|
||||||
|
cHelper,
|
||||||
|
cConditions //
|
||||||
|
);
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
cState.Clean();
|
||||||
|
ZeroMemory(cHelper);
|
||||||
|
cConditions.Clean();
|
||||||
|
cXConditions.Clean();
|
||||||
|
cStateEvents.Clean();
|
||||||
|
|
||||||
//
|
//
|
||||||
Print("Signal ...");
|
return result;
|
||||||
result = false;
|
}
|
||||||
isBearish = false;
|
Parse(cXConditions);
|
||||||
isBullish = false;
|
|
||||||
|
//
|
||||||
|
// Normalize Args ...
|
||||||
|
|
||||||
|
//
|
||||||
|
if (barIndex < 0)
|
||||||
|
{
|
||||||
|
barIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
int idx = -1;
|
||||||
|
int count = 0;
|
||||||
|
bool has = false;
|
||||||
|
|
||||||
|
//
|
||||||
|
int zIDX = barIndex;
|
||||||
|
int cIDX = zIDX + 1;
|
||||||
|
int pIDX = cIDX + 1;
|
||||||
|
int ppIDX = pIDX + 1;
|
||||||
|
|
||||||
|
//
|
||||||
|
bool isBullish = false;
|
||||||
|
bool isBearish = false;
|
||||||
|
|
||||||
|
//
|
||||||
|
XOHCL zBar;
|
||||||
|
XOHCL cBar;
|
||||||
|
XOHCL pBar;
|
||||||
|
XOHCL pPBar;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Initial Bars ...
|
||||||
|
result = zBar.Init(
|
||||||
|
cState.symbol,
|
||||||
|
cState.period,
|
||||||
|
barIndex //
|
||||||
|
);
|
||||||
|
result =
|
||||||
|
result &&
|
||||||
|
zBar.GetPreviousBar(cBar);
|
||||||
|
result =
|
||||||
|
result &&
|
||||||
|
cBar.GetPreviousBar(pBar);
|
||||||
|
result =
|
||||||
|
result &&
|
||||||
|
pBar.GetPreviousBar(pPBar);
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
zBar.Clean();
|
||||||
|
cBar.Clean();
|
||||||
|
pBar.Clean();
|
||||||
|
cState.Clean();
|
||||||
|
ZeroMemory(cHelper);
|
||||||
|
cConditions.Clean();
|
||||||
|
cXConditions.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Checking Conditions ...
|
||||||
|
//
|
||||||
|
// XDELTA ...
|
||||||
|
|
||||||
|
//
|
||||||
|
bool isDeltaSwitchedToBullish =
|
||||||
|
(cXConditions.isDeltaCrossedOverMa &&
|
||||||
|
cXConditions.isDeltaSwitchedToBullish);
|
||||||
|
bool isDeltaBullish =
|
||||||
|
(cXConditions.isDeltaOverMa &&
|
||||||
|
cXConditions.isDeltaBullish);
|
||||||
|
bool isDeltaIsBullish =
|
||||||
|
isDeltaBullish ||
|
||||||
|
isDeltaSwitchedToBullish;
|
||||||
|
|
||||||
|
//
|
||||||
|
bool isDeltaSwitchedToBearish =
|
||||||
|
(cXConditions.isDeltaCrossedUnderMa &&
|
||||||
|
cXConditions.isDeltaSwitchedToBearish);
|
||||||
|
bool isDeltaBearish =
|
||||||
|
(cXConditions.isDeltaUnderMa &&
|
||||||
|
cXConditions.isDeltaBearish);
|
||||||
|
bool isDeltaIsBearish =
|
||||||
|
isDeltaBearish ||
|
||||||
|
isDeltaSwitchedToBearish;
|
||||||
|
|
||||||
|
//
|
||||||
|
// XVOLUME ...
|
||||||
|
|
||||||
|
//
|
||||||
|
bool isVolumeSwitchedToBullish =
|
||||||
|
(cXConditions.isVolumeSwitchedToBullish &&
|
||||||
|
cXConditions.isBullishVolumeSwitchedToIncreased);
|
||||||
|
bool isVolumeBullish =
|
||||||
|
(cXConditions.isBullishVolumeIncreased &&
|
||||||
|
cXConditions.isBullishVolumeMaOverBearishVolumeMa);
|
||||||
|
bool isVolumeIsBullish =
|
||||||
|
isVolumeBullish ||
|
||||||
|
isVolumeSwitchedToBullish;
|
||||||
|
|
||||||
|
//
|
||||||
|
bool isVolumeSwitchedToBearish =
|
||||||
|
(cXConditions.isVolumeSwitchedToBearish &&
|
||||||
|
cXConditions.isBearishVolumeSwitchedToIncreased);
|
||||||
|
bool isVolumeBearish =
|
||||||
|
(cXConditions.isBullishVolumeMaUnderBearishVolumeMa &&
|
||||||
|
cXConditions.isBearishVolumeIncreased);
|
||||||
|
bool isVolumeIsBearish =
|
||||||
|
isVolumeBearish ||
|
||||||
|
isVolumeSwitchedToBearish;
|
||||||
|
|
||||||
|
//
|
||||||
|
// XSTR ...
|
||||||
|
bool isStrIsBullish =
|
||||||
|
(cXConditions.isStrBullish ||
|
||||||
|
cXConditions.isStrSwitchedToBullish);
|
||||||
|
bool isStrIsBearish =
|
||||||
|
(cXConditions.isStrBearish ||
|
||||||
|
cXConditions.isStrSwitchedToBearish);
|
||||||
|
|
||||||
|
//
|
||||||
|
// XFastMa ...
|
||||||
|
|
||||||
|
//
|
||||||
|
bool isFastMaOverStr =
|
||||||
|
(cXConditions.x3maFastBuffer[cIDX] > cXConditions.strBuffer[cIDX]);
|
||||||
|
|
||||||
|
//
|
||||||
|
bool isFastMaUnderStr =
|
||||||
|
(cXConditions.x3maFastBuffer[cIDX] < cXConditions.strBuffer[cIDX]);
|
||||||
|
|
||||||
|
//
|
||||||
|
bool isFastMaBullishReject =
|
||||||
|
cBar.low < pBar.low &&
|
||||||
|
cBar.low > cXConditions.strBuffer[cIDX] &&
|
||||||
|
cBar.low < cXConditions.x3maFastBuffer[cIDX] &&
|
||||||
|
cBar.GetDown() > cXConditions.x3maFastBuffer[cIDX];
|
||||||
|
|
||||||
|
//
|
||||||
|
bool isFastMaBearishReject =
|
||||||
|
cBar.high > pBar.high &&
|
||||||
|
cBar.high < cXConditions.strBuffer[cIDX] &&
|
||||||
|
cBar.high > cXConditions.x3maFastBuffer[cIDX] &&
|
||||||
|
cBar.GetUp() < cXConditions.x3maFastBuffer[cIDX];
|
||||||
|
|
||||||
|
//
|
||||||
|
// Summarize Conditions ...
|
||||||
|
|
||||||
|
//
|
||||||
|
isBullish =
|
||||||
|
//
|
||||||
|
// false
|
||||||
|
isStrIsBullish &&
|
||||||
|
isFastMaOverStr &&
|
||||||
|
// isDeltaIsBullish &&
|
||||||
|
// isVolumeIsBullish &&
|
||||||
|
isFastMaBullishReject
|
||||||
|
//
|
||||||
|
//
|
||||||
|
;
|
||||||
|
|
||||||
|
//
|
||||||
|
isBearish =
|
||||||
|
//
|
||||||
|
// false
|
||||||
|
isStrIsBearish &&
|
||||||
|
isFastMaUnderStr &&
|
||||||
|
// isDeltaIsBearish &&
|
||||||
|
// isVolumeIsBearish &&
|
||||||
|
isFastMaBearishReject
|
||||||
|
//
|
||||||
|
;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Filling Requirements ...
|
||||||
|
result =
|
||||||
|
isBullish ||
|
||||||
|
isBearish;
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
dir =
|
||||||
|
isBullish
|
||||||
|
? X_DIRECTION_BULLISH
|
||||||
|
: X_DIRECTION_BEARISH;
|
||||||
|
|
||||||
|
//
|
||||||
|
box.dir = dir;
|
||||||
|
box.from = pPBar.time;
|
||||||
|
box.to = TimeCurrent();
|
||||||
|
box.symbol = cBar.symbol;
|
||||||
|
box.period = cBar.period;
|
||||||
|
|
||||||
|
//
|
||||||
|
double points = GetPoints(box.symbol);
|
||||||
|
|
||||||
|
//
|
||||||
|
double pivot = cXConditions.strBuffer[cIDX];
|
||||||
|
// isBullish
|
||||||
|
// ? cBar.low - (points * 5)
|
||||||
|
// : cBar.high + (points * 5);
|
||||||
|
|
||||||
|
//
|
||||||
|
double point = GetEntry(
|
||||||
|
cBar.symbol,
|
||||||
|
dir //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
box.upper =
|
||||||
|
isBullish
|
||||||
|
? point
|
||||||
|
: pivot;
|
||||||
|
|
||||||
|
//
|
||||||
|
box.lower =
|
||||||
|
isBullish
|
||||||
|
? pivot
|
||||||
|
: point;
|
||||||
|
|
||||||
|
//
|
||||||
|
bool drawBoxes = true;
|
||||||
|
if (drawBoxes)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
+17
-20
@@ -24,11 +24,11 @@
|
|||||||
#include "../Classes/x-121.smc.market.cycle.helper.class.mq5"
|
#include "../Classes/x-121.smc.market.cycle.helper.class.mq5"
|
||||||
#include "../Libraries/x-121.smc.guard.lib.mq5"
|
#include "../Libraries/x-121.smc.guard.lib.mq5"
|
||||||
#include "../Libraries/x-121.smc.lib.mq5"
|
#include "../Libraries/x-121.smc.lib.mq5"
|
||||||
#include "./x-121.smc.xich.signal.lib.mq5"
|
#include "./x-121.smc.xind.signal.lib.mq5"
|
||||||
|
|
||||||
//
|
//
|
||||||
// Definition ...
|
// Definition ...
|
||||||
class XCX121SMCXICHSignalDetector : public XCBase
|
class XCX121SMCXINDSignalDetector : public XCBase
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
public:
|
public:
|
||||||
@@ -36,12 +36,12 @@ class XCX121SMCXICHSignalDetector : public XCBase
|
|||||||
// Props ...
|
// Props ...
|
||||||
bool useGuards;
|
bool useGuards;
|
||||||
double rfRewar;
|
double rfRewar;
|
||||||
X121SMCStrategyXICHSignalConditions mConditions;
|
X121SMCStrategyXINDSignalConditions mConditions;
|
||||||
X121SMCStrategyXICHSignalConditions mConditionsCollection[];
|
X121SMCStrategyXINDSignalConditions mConditionsCollection[];
|
||||||
|
|
||||||
//
|
//
|
||||||
// Constructor(s) ...
|
// Constructor(s) ...
|
||||||
XCX121SMCXICHSignalDetector(
|
XCX121SMCXINDSignalDetector(
|
||||||
string _symbol,
|
string _symbol,
|
||||||
ENUM_TIMEFRAMES _period //
|
ENUM_TIMEFRAMES _period //
|
||||||
)
|
)
|
||||||
@@ -54,7 +54,7 @@ class XCX121SMCXICHSignalDetector : public XCBase
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Deconstructor ...
|
// Deconstructor ...
|
||||||
~XCX121SMCXICHSignalDetector()
|
~XCX121SMCXINDSignalDetector()
|
||||||
{
|
{
|
||||||
DeInit();
|
DeInit();
|
||||||
}
|
}
|
||||||
@@ -199,7 +199,7 @@ class XCX121SMCXICHSignalDetector : public XCBase
|
|||||||
XBoxZone signalBox;
|
XBoxZone signalBox;
|
||||||
bool hasSignalBox = false;
|
bool hasSignalBox = false;
|
||||||
ENUM_X_DIRECTION signalBoxDir = X_DIRECTION_NONE;
|
ENUM_X_DIRECTION signalBoxDir = X_DIRECTION_NONE;
|
||||||
ENUM_X121SMC_XICH_PROVIDERS signalProvider = X121SMC_XICH_PROVIDER_NONE;
|
ENUM_X121SMC_XIND_PROVIDERS signalProvider = X121SMC_XIND_PROVIDER_NONE;
|
||||||
|
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
@@ -208,8 +208,8 @@ class XCX121SMCXICHSignalDetector : public XCBase
|
|||||||
//
|
//
|
||||||
// Provider XTkKumo ...
|
// Provider XTkKumo ...
|
||||||
X121SMCStrategyConditionParser cParser;
|
X121SMCStrategyConditionParser cParser;
|
||||||
hasSignalBox = cParser.HasXICHConditions(
|
hasSignalBox = cParser.HasXSTRConditions(
|
||||||
X_CYCLE_ANALYSE,
|
X_CYCLE_DECISION,
|
||||||
signalBox,
|
signalBox,
|
||||||
signalBoxDir,
|
signalBoxDir,
|
||||||
provider,
|
provider,
|
||||||
@@ -217,7 +217,7 @@ class XCX121SMCXICHSignalDetector : public XCBase
|
|||||||
);
|
);
|
||||||
if (hasSignalBox)
|
if (hasSignalBox)
|
||||||
{
|
{
|
||||||
signalProvider = X121SMC_XICH_PROVIDER_XTKKUMO;
|
signalProvider = X121SMC_XIND_PROVIDER_XSTR;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -298,20 +298,17 @@ class XCX121SMCXICHSignalDetector : public XCBase
|
|||||||
//
|
//
|
||||||
// Select and Provide SL Based on ...
|
// Select and Provide SL Based on ...
|
||||||
double iAtr = 0;
|
double iAtr = 0;
|
||||||
if (signalProvider == X121SMC_XICH_PROVIDER_XTKKUMO)
|
if (signalProvider == X121SMC_XIND_PROVIDER_XSTR)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
iAtr = provider.decisionXConditions.atrBuffer[1];
|
iAtr = provider.decisionXConditions.atrBuffer[1];
|
||||||
iAtr *= 0;
|
iAtr *= 0.5;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Fix rf Reward ...
|
// Fix rf Reward ...
|
||||||
rfRewar = 1.5;
|
rfRewar = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
Print("XICH ", ToString(signalBoxDir), " Signal Provided: ", EnumToString(signalProvider));
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Select Condition SL ...
|
// Select Condition SL ...
|
||||||
|
|
||||||
@@ -411,7 +408,7 @@ class XCX121SMCXICHSignalDetector : public XCBase
|
|||||||
// Detect Trigger Conditions ...
|
// Detect Trigger Conditions ...
|
||||||
bool DetectSignalTrigger(
|
bool DetectSignalTrigger(
|
||||||
//
|
//
|
||||||
X121SMCStrategyXICHSignalConditions &conditions,
|
X121SMCStrategyXINDSignalConditions &conditions,
|
||||||
//
|
//
|
||||||
X121SMCStrategySignalProviderData &provider,
|
X121SMCStrategySignalProviderData &provider,
|
||||||
//
|
//
|
||||||
@@ -534,7 +531,7 @@ class XCX121SMCXICHSignalDetector : public XCBase
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Set Provider for Common Guards ...
|
// Set Provider for Common Guards ...
|
||||||
string signalProvider = ToString(X121SMC_XICH_PROVIDER_XTKKUMO);
|
string signalProvider = ToString(X121SMC_XIND_PROVIDER_XTKKUMO);
|
||||||
|
|
||||||
//
|
//
|
||||||
int zIndex = 0;
|
int zIndex = 0;
|
||||||
@@ -1077,7 +1074,7 @@ class XCX121SMCXICHSignalDetector : public XCBase
|
|||||||
{
|
{
|
||||||
//
|
//
|
||||||
// Copy Original Items ...
|
// Copy Original Items ...
|
||||||
X121SMCStrategyXICHSignalConditions tmpItems[];
|
X121SMCStrategyXINDSignalConditions tmpItems[];
|
||||||
Copy(
|
Copy(
|
||||||
mConditionsCollection,
|
mConditionsCollection,
|
||||||
tmpItems //
|
tmpItems //
|
||||||
@@ -1091,7 +1088,7 @@ class XCX121SMCXICHSignalDetector : public XCBase
|
|||||||
for (int i = 0; i < count; i++)
|
for (int i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
X121SMCStrategyXICHSignalConditions iItem = tmpItems[i];
|
X121SMCStrategyXINDSignalConditions iItem = tmpItems[i];
|
||||||
|
|
||||||
//
|
//
|
||||||
bool canRemove = mConditions.dir == iItem.dir &&
|
bool canRemove = mConditions.dir == iItem.dir &&
|
||||||
+8
-7
@@ -28,10 +28,11 @@
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Provided Signals Enumeration ...
|
// Provided Signals Enumeration ...
|
||||||
enum ENUM_X121SMC_XICH_PROVIDERS
|
enum ENUM_X121SMC_XIND_PROVIDERS
|
||||||
{
|
{
|
||||||
X121SMC_XICH_PROVIDER_NONE,
|
X121SMC_XIND_PROVIDER_NONE,
|
||||||
X121SMC_XICH_PROVIDER_XTKKUMO,
|
X121SMC_XIND_PROVIDER_XSTR,
|
||||||
|
X121SMC_XIND_PROVIDER_XTKKUMO,
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -39,7 +40,7 @@ enum ENUM_X121SMC_XICH_PROVIDERS
|
|||||||
|
|
||||||
//
|
//
|
||||||
// XICH Signal Conditions ...
|
// XICH Signal Conditions ...
|
||||||
struct X121SMCStrategyXICHSignalConditions
|
struct X121SMCStrategyXINDSignalConditions
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// Props ...
|
// Props ...
|
||||||
@@ -70,11 +71,11 @@ struct X121SMCStrategyXICHSignalConditions
|
|||||||
XBoxZone signalBox;
|
XBoxZone signalBox;
|
||||||
|
|
||||||
//
|
//
|
||||||
ENUM_X121SMC_XICH_PROVIDERS provider;
|
ENUM_X121SMC_XIND_PROVIDERS provider;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Constructor ...
|
// Constructor ...
|
||||||
X121SMCStrategyXICHSignalConditions()
|
X121SMCStrategyXINDSignalConditions()
|
||||||
{
|
{
|
||||||
Clean();
|
Clean();
|
||||||
}
|
}
|
||||||
@@ -198,7 +199,7 @@ struct X121SMCStrategyXICHSignalConditions
|
|||||||
signalBox.Clean();
|
signalBox.Clean();
|
||||||
|
|
||||||
//
|
//
|
||||||
provider = X121SMC_XICH_PROVIDER_NONE;
|
provider = X121SMC_XIND_PROVIDER_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -2185,7 +2185,7 @@ struct X121SMCStrategyXWZWorkingZone
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
cPraser.Clean();
|
cParser.Clean();
|
||||||
|
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
#include "../Classes/x-121.smc.market.cycle.helper.class.mq5"
|
#include "../Classes/x-121.smc.market.cycle.helper.class.mq5"
|
||||||
|
|
||||||
//
|
//
|
||||||
#include "../Signals/x-121.smc.xich.signal.class.mq5"
|
#include "../Signals/x-121.smc.xind.signal.class.mq5"
|
||||||
#include "../Signals/x-121.smc.xwz.signal.class.mq5"
|
#include "../Signals/x-121.smc.xwz.signal.class.mq5"
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -43,11 +43,11 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
|||||||
//
|
//
|
||||||
// Props ...
|
// Props ...
|
||||||
bool useXWZSignal;
|
bool useXWZSignal;
|
||||||
bool useXICHSignal;
|
bool useXINDSignal;
|
||||||
bool useXWZSignalGuard;
|
bool useXWZSignalGuard;
|
||||||
bool useXICHSignalGuard;
|
bool useXINDSignalGuard;
|
||||||
XCX121SMCXWZSignalDetector *mXWZSignalDetector;
|
XCX121SMCXWZSignalDetector *mXWZSignalDetector;
|
||||||
XCX121SMCXICHSignalDetector *mXICHSignalDetector;
|
XCX121SMCXINDSignalDetector *mXINDSignalDetector;
|
||||||
X121SMCStrategySignalProviderData cycleProvider;
|
X121SMCStrategySignalProviderData cycleProvider;
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -70,7 +70,7 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
|||||||
);
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
mXICHSignalDetector = new XCX121SMCXICHSignalDetector(
|
mXINDSignalDetector = new XCX121SMCXINDSignalDetector(
|
||||||
_symbol,
|
_symbol,
|
||||||
_period //
|
_period //
|
||||||
);
|
);
|
||||||
@@ -131,7 +131,7 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
|||||||
|
|
||||||
//
|
//
|
||||||
ZeroMemory(mXWZSignalDetector);
|
ZeroMemory(mXWZSignalDetector);
|
||||||
ZeroMemory(mXICHSignalDetector);
|
ZeroMemory(mXINDSignalDetector);
|
||||||
|
|
||||||
//
|
//
|
||||||
cycleProvider.Destroy();
|
cycleProvider.Destroy();
|
||||||
@@ -214,7 +214,7 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
|||||||
|
|
||||||
//
|
//
|
||||||
bool hasXWZSignal = false;
|
bool hasXWZSignal = false;
|
||||||
bool hasXICHSignal = false;
|
bool hasXINDSignal = false;
|
||||||
|
|
||||||
//
|
//
|
||||||
X121SMCStrategyXWZSignalConditions mXWZConditions;
|
X121SMCStrategyXWZSignalConditions mXWZConditions;
|
||||||
@@ -229,15 +229,15 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
X121SMCStrategyXICHSignalConditions mXICHConditions;
|
X121SMCStrategyXINDSignalConditions mXICHConditions;
|
||||||
if (useXICHSignal && !hasSignal)
|
if (useXINDSignal && !hasSignal)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
hasXICHSignal = DetectXICHSignal(
|
hasXINDSignal = DetectXINDSignal(
|
||||||
conditions,
|
conditions,
|
||||||
mXICHConditions //
|
mXICHConditions //
|
||||||
);
|
);
|
||||||
hasSignal = hasXICHSignal;
|
hasSignal = hasXINDSignal;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -481,12 +481,12 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
|||||||
|
|
||||||
//
|
//
|
||||||
// XICH Guard Detection ...
|
// XICH Guard Detection ...
|
||||||
if (useXICHSignal &&
|
if (useXINDSignal &&
|
||||||
useXICHSignalGuard)
|
useXINDSignalGuard)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
X121SMCGuard xichGuards[];
|
X121SMCGuard xichGuards[];
|
||||||
bool hasGuard = mXICHSignalDetector.DetectGuards(
|
bool hasGuard = mXINDSignalDetector.DetectGuards(
|
||||||
xichGuards,
|
xichGuards,
|
||||||
positions,
|
positions,
|
||||||
cycleProvider //
|
cycleProvider //
|
||||||
@@ -730,9 +730,9 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
|||||||
|
|
||||||
//
|
//
|
||||||
// XICH Signal ...
|
// XICH Signal ...
|
||||||
bool DetectXICHSignal(
|
bool DetectXINDSignal(
|
||||||
X121SMCStrategyConditions &conditions,
|
X121SMCStrategyConditions &conditions,
|
||||||
X121SMCStrategyXICHSignalConditions &xICHConditions //
|
X121SMCStrategyXINDSignalConditions &xICHConditions //
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@@ -761,35 +761,35 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Detect Setup Conditions ...
|
// Detect Setup Conditions ...
|
||||||
datetime setupTime = mXICHSignalDetector.mConditions.setupTime;
|
datetime setupTime = mXINDSignalDetector.mConditions.setupTime;
|
||||||
bool isSetuped = mXICHSignalDetector.mConditions.IsSetuped();
|
bool isSetuped = mXINDSignalDetector.mConditions.IsSetuped();
|
||||||
ENUM_X_DIRECTION setupDir = mXICHSignalDetector.mConditions.dir;
|
ENUM_X_DIRECTION setupDir = mXINDSignalDetector.mConditions.dir;
|
||||||
if (!isSetuped)
|
if (!isSetuped)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// Detect Signal Setup ...
|
// Detect Signal Setup ...
|
||||||
isSetuped = mXICHSignalDetector.DetectSignalSetup(
|
isSetuped = mXINDSignalDetector.DetectSignalSetup(
|
||||||
cycleProvider //
|
cycleProvider //
|
||||||
);
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
setupDir = mXICHSignalDetector.mConditions.dir;
|
setupDir = mXINDSignalDetector.mConditions.dir;
|
||||||
setupTime = mXICHSignalDetector.mConditions.setupTime;
|
setupTime = mXINDSignalDetector.mConditions.setupTime;
|
||||||
|
|
||||||
//
|
//
|
||||||
if (isSetuped)
|
if (isSetuped)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
int items = mXICHSignalDetector
|
int items = mXINDSignalDetector
|
||||||
.AddConditionsIfNotExists();
|
.AddConditionsIfNotExists();
|
||||||
|
|
||||||
//
|
//
|
||||||
mXICHSignalDetector.mConditions.Clean();
|
mXINDSignalDetector.mConditions.Clean();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
int conditionsCount = ArraySize(mXICHSignalDetector.mConditionsCollection);
|
int conditionsCount = ArraySize(mXINDSignalDetector.mConditionsCollection);
|
||||||
result = IsValidSize(conditionsCount);
|
result = IsValidSize(conditionsCount);
|
||||||
if (!result)
|
if (!result)
|
||||||
{
|
{
|
||||||
@@ -799,12 +799,12 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
|||||||
//
|
//
|
||||||
// Looking For Conditions ...
|
// Looking For Conditions ...
|
||||||
int selectedIndex = 0;
|
int selectedIndex = 0;
|
||||||
X121SMCStrategyXICHSignalConditions mTmpConditions[];
|
X121SMCStrategyXINDSignalConditions mTmpConditions[];
|
||||||
Copy(
|
Copy(
|
||||||
mXICHSignalDetector.mConditionsCollection,
|
mXINDSignalDetector.mConditionsCollection,
|
||||||
mTmpConditions //
|
mTmpConditions //
|
||||||
);
|
);
|
||||||
X121SMCStrategyXICHSignalConditions mConditions;
|
X121SMCStrategyXINDSignalConditions mConditions;
|
||||||
for (int i = 0; i < conditionsCount; i++)
|
for (int i = 0; i < conditionsCount; i++)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@@ -815,7 +815,7 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
|||||||
{
|
{
|
||||||
//
|
//
|
||||||
// Detect Signal Trigger ...
|
// Detect Signal Trigger ...
|
||||||
canTrigger = mXICHSignalDetector
|
canTrigger = mXINDSignalDetector
|
||||||
.DetectSignalTrigger(
|
.DetectSignalTrigger(
|
||||||
mTmpConditions[i],
|
mTmpConditions[i],
|
||||||
cycleProvider //
|
cycleProvider //
|
||||||
@@ -831,7 +831,7 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
|||||||
{
|
{
|
||||||
//
|
//
|
||||||
ArrayRemove(
|
ArrayRemove(
|
||||||
mXICHSignalDetector.mConditionsCollection,
|
mXINDSignalDetector.mConditionsCollection,
|
||||||
i,
|
i,
|
||||||
1 //
|
1 //
|
||||||
);
|
);
|
||||||
@@ -864,7 +864,7 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
|||||||
//
|
//
|
||||||
// Remove Selected Index from Main Collection ...
|
// Remove Selected Index from Main Collection ...
|
||||||
ArrayRemove(
|
ArrayRemove(
|
||||||
mXICHSignalDetector.mConditionsCollection,
|
mXINDSignalDetector.mConditionsCollection,
|
||||||
selectedIndex,
|
selectedIndex,
|
||||||
1 //
|
1 //
|
||||||
);
|
);
|
||||||
@@ -921,8 +921,8 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
|||||||
useXWZSignalGuard = false;
|
useXWZSignalGuard = false;
|
||||||
|
|
||||||
//
|
//
|
||||||
useXICHSignal = true;
|
useXINDSignal = true;
|
||||||
useXICHSignalGuard = false;
|
useXINDSignalGuard = false;
|
||||||
|
|
||||||
//
|
//
|
||||||
string symbol = GetSymbol();
|
string symbol = GetSymbol();
|
||||||
@@ -1034,7 +1034,7 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
|||||||
x121Inputs.xpvInputs.showVales = showAll || true;
|
x121Inputs.xpvInputs.showVales = showAll || true;
|
||||||
x121Inputs.xpvInputs.showSupports = showAll || false;
|
x121Inputs.xpvInputs.showSupports = showAll || false;
|
||||||
x121Inputs.xpvInputs.showResistances = showAll || false;
|
x121Inputs.xpvInputs.showResistances = showAll || false;
|
||||||
x121Inputs.xpvInputs.showGoldenZones = showAll || false;
|
x121Inputs.xpvInputs.showGoldenZones = showAll || true;
|
||||||
|
|
||||||
//
|
//
|
||||||
// XHK ...
|
// XHK ...
|
||||||
@@ -1090,8 +1090,8 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
|||||||
|
|
||||||
//
|
//
|
||||||
// XICH ...
|
// XICH ...
|
||||||
x121Inputs.xichInputs.showTenkanSen = showAll || true;
|
x121Inputs.xichInputs.showTenkanSen = showAll || false;
|
||||||
x121Inputs.xichInputs.showKijunSen = showAll || true;
|
x121Inputs.xichInputs.showKijunSen = showAll || false;
|
||||||
x121Inputs.xichInputs.showChikouSpan = showAll || false;
|
x121Inputs.xichInputs.showChikouSpan = showAll || false;
|
||||||
x121Inputs.xichInputs.showSenkouSpanA = showAll || false;
|
x121Inputs.xichInputs.showSenkouSpanA = showAll || false;
|
||||||
x121Inputs.xichInputs.showSenkouSpanB = showAll || false;
|
x121Inputs.xichInputs.showSenkouSpanB = showAll || false;
|
||||||
|
|||||||
Reference in New Issue
Block a user