last ...
This commit is contained in:
@@ -676,12 +676,12 @@ bool DetectX121SMCXOBGPVSiganlTrigger(
|
||||
double isNewDecisionVale = decisionConditions.x121Conditions.isNewVale;
|
||||
|
||||
//
|
||||
bool isTriggerRSICrossedOverOverSold = triggerConditions.x121Conditions.isRSICrossedOverOverSold;
|
||||
bool isTriggerRSICrossedUnderOverBought = triggerConditions.x121Conditions.isRSICrossedUnderOverBought;
|
||||
bool isTriggerRSICrossedOverOverSold = triggerConditions.x121Conditions.isRsiCrossedOverOverSold;
|
||||
bool isTriggerRSICrossedUnderOverBought = triggerConditions.x121Conditions.isRsiCrossedUnderOverBought;
|
||||
|
||||
//
|
||||
bool isDecisionRSICrossedOverOverSold = decisionConditions.x121Conditions.isRSICrossedOverOverSold;
|
||||
bool isDecisionRSICrossedUnderOverBought = decisionConditions.x121Conditions.isRSICrossedUnderOverBought;
|
||||
bool isDecisionRSICrossedOverOverSold = decisionConditions.x121Conditions.isRsiCrossedOverOverSold;
|
||||
bool isDecisionRSICrossedUnderOverBought = decisionConditions.x121Conditions.isRsiCrossedUnderOverBought;
|
||||
|
||||
//
|
||||
// Waits For Price to Go Inside FVG ...
|
||||
|
||||
@@ -50,6 +50,7 @@ struct X121SMCStrategyXOBSPVSignalConditions
|
||||
|
||||
//
|
||||
double pivot;
|
||||
XPriceZones priceZone;
|
||||
|
||||
//
|
||||
// Constructor ...
|
||||
@@ -167,6 +168,9 @@ struct X121SMCStrategyXOBSPVSignalConditions
|
||||
{
|
||||
//
|
||||
pivot = 0;
|
||||
|
||||
//
|
||||
priceZone.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
@@ -408,169 +412,213 @@ bool DetectX121SMCXOBSPVSiganlSetup(
|
||||
}
|
||||
|
||||
//
|
||||
bool isStrSwitchedToBullish = analyseConditions.x121Conditions.isStrSwitchedToBullish;
|
||||
bool isStrSwitchedToBearish = analyseConditions.x121Conditions.isStrSwitchedToBearish;
|
||||
double decisionPeak = decisionConditions.x121Conditions.peaksBuffer[1];
|
||||
double decisionVale = decisionConditions.x121Conditions.valesBuffer[1];
|
||||
|
||||
//
|
||||
if (isStrSwitchedToBullish ||
|
||||
isStrSwitchedToBearish)
|
||||
// Find Price Inside Zone ...
|
||||
XPriceZones priceZone = conditions.priceZone;
|
||||
bool hasPriceZones = conditions.priceZone.IsValid();
|
||||
if (!hasPriceZones)
|
||||
{
|
||||
Print("Str State Changed ...");
|
||||
//
|
||||
hasPriceZones = CalculatePriceInsideZones(
|
||||
priceZone,
|
||||
analyseState,
|
||||
cBar //
|
||||
);
|
||||
|
||||
//
|
||||
if (hasPriceZones)
|
||||
{
|
||||
//
|
||||
// Validate Price Zone ...
|
||||
double upper = 0;
|
||||
double lower = 0;
|
||||
hasPriceZones = priceZone.GetBoundary(
|
||||
X_DIRECTION_ALL,
|
||||
upper,
|
||||
lower //
|
||||
);
|
||||
result = hasPriceZones;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
bool isValid = decisionPeak <= upper ||
|
||||
decisionVale >= lower;
|
||||
hasPriceZones = isValid;
|
||||
result = hasPriceZones;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
conditions.priceZone = priceZone;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
X121SMCCycleConditions conditionState = consolidationConditions;
|
||||
X121SMCCycleConditions conditionStatePrev = consolidationConditionsPrev;
|
||||
// Detect Str Change Direction ...
|
||||
|
||||
//
|
||||
XOHCL cCBar;
|
||||
result = cCBar.Init(
|
||||
conditionState.symbol,
|
||||
conditionState.period,
|
||||
cIndex //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
bool isDecisionSarBullish = decisionConditions.x121Conditions.isSarBullish;
|
||||
bool isDecisionSarBearish = decisionConditions.x121Conditions.isSarBearish;
|
||||
|
||||
//
|
||||
XOHCL cPBar;
|
||||
result = cCBar.GetPreviousBar(cPBar);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
bool isDecisionStrBullish = decisionConditions.x121Conditions.isStrBullish;
|
||||
bool isDecisionStrBearish = decisionConditions.x121Conditions.isStrBearish;
|
||||
|
||||
//
|
||||
// Engulf ...
|
||||
ENUM_X_DIRECTION cCBarEngulfDir;
|
||||
bool isCCBarEngulfed = consolidationCycleHelper
|
||||
.mBarAnalyser
|
||||
.IsEngulfBar(
|
||||
cCBar,
|
||||
cCBarEngulfDir,
|
||||
0 // Extended ...
|
||||
);
|
||||
bool isCCBarBullishEngulfed =
|
||||
isCCBarEngulfed &&
|
||||
IsBullish(cCBarEngulfDir);
|
||||
bool isCCBarBearishEngulfed =
|
||||
isCCBarEngulfed &&
|
||||
IsBearish(cCBarEngulfDir);
|
||||
bool isDecisionSarCrossedOverVale = decisionConditions.x121Conditions.isSarCrossedOverVale;
|
||||
bool isDecisionSarCrossedUnderPeak = decisionConditions.x121Conditions.isSarCrossedUnderPeak;
|
||||
|
||||
//
|
||||
// Momentum ...
|
||||
ENUM_X_DIRECTION cCBarMomentumDir;
|
||||
bool isCCBarMomentum = consolidationCycleHelper
|
||||
.mBarAnalyser
|
||||
.IsMomentumBar(
|
||||
cCBar,
|
||||
cCBarMomentumDir,
|
||||
1 // Extended ...
|
||||
);
|
||||
bool isCCBarBullishMomentum =
|
||||
isCCBarMomentum &&
|
||||
IsBullish(cCBarMomentumDir);
|
||||
bool isCCBarBearishMomentum =
|
||||
isCCBarMomentum &&
|
||||
IsBearish(cCBarMomentumDir);
|
||||
bool isDecisionStrCrossedOverVale = decisionConditions.x121Conditions.isStrCrossedOverVale;
|
||||
bool isDecisionStrCrossedUnderPeak = decisionConditions.x121Conditions.isStrCrossedUnderPeak;
|
||||
|
||||
//
|
||||
// Reject ...
|
||||
ENUM_X_DIRECTION cCBarRejectDir;
|
||||
bool isCCBarRejected = consolidationCycleHelper
|
||||
.mBarAnalyser
|
||||
.IsRejectionBar(
|
||||
cCBar,
|
||||
cCBarRejectDir,
|
||||
1 // Extended ...
|
||||
);
|
||||
bool isCCBarBullishRejected =
|
||||
isCCBarRejected &&
|
||||
IsBullish(cCBarRejectDir);
|
||||
bool isCCBarBearishRejected =
|
||||
isCCBarRejected &&
|
||||
IsBearish(cCBarRejectDir);
|
||||
bool isDecisionPeakOverAtrUpper = decisionConditions.x121Conditions.isPeakOverAtrUpper;
|
||||
bool isDecisionValeUnderAtrLower = decisionConditions.x121Conditions.isValeUnderAtrLower;
|
||||
|
||||
//
|
||||
// Bar Checking Summary ...
|
||||
bool isDecisionVWapBullishState = decisionConditions.x121Conditions.isVWapBullishState;
|
||||
bool isDecisionVWapSwitchedToBullishState = decisionConditions.x121Conditions.isVWapSwitchedToBullishState;
|
||||
|
||||
//
|
||||
// Bullish ...
|
||||
bool isCCBarPassedBullish =
|
||||
//
|
||||
isCCBarBullishEngulfed ||
|
||||
isCCBarBullishMomentum ||
|
||||
isCCBarBullishRejected
|
||||
//
|
||||
;
|
||||
bool isDecisionVWapBullishOrdered = decisionConditions.x121Conditions.isVWapBullishOrdered;
|
||||
bool isDecisionVWapSwitchedToBullishOrdered = decisionConditions.x121Conditions.isVWapSwitchedToBullishOrdered;
|
||||
|
||||
//
|
||||
// Bearish ...
|
||||
bool isCCBarPassedBearish =
|
||||
//
|
||||
isCCBarBearishEngulfed ||
|
||||
isCCBarBearishMomentum ||
|
||||
isCCBarBearishRejected
|
||||
//
|
||||
;
|
||||
bool isDecisionVWapBearishState = decisionConditions.x121Conditions.isVWapBearishState;
|
||||
bool isDecisionVWapSwitchedToBearishState = decisionConditions.x121Conditions.isVWapSwitchedToBearishState;
|
||||
|
||||
//
|
||||
double cPeakPrev = conditionStatePrev.x121Conditions.peaksBuffer[0];
|
||||
double cValePrev = conditionStatePrev.x121Conditions.valesBuffer[0];
|
||||
bool isDecisionVWapBearishOrdered = decisionConditions.x121Conditions.isVWapBearishOrdered;
|
||||
bool isDecisionVWapSwitchedToBearishOrdered = decisionConditions.x121Conditions.isVWapSwitchedToBearishOrdered;
|
||||
|
||||
//
|
||||
double cPeak = conditionState.x121Conditions.peaksBuffer[1];
|
||||
double cVale = conditionState.x121Conditions.valesBuffer[1];
|
||||
bool isDecisionStrUpperOverPeak = decisionConditions.x121Conditions.isStrUpperOverPeak;
|
||||
bool isDecisionStrLowerOverVale = decisionConditions.x121Conditions.isStrLowerOverVale;
|
||||
|
||||
//
|
||||
bool isCPeakSame = cPeak == cPeakPrev;
|
||||
bool isCValeSame = cVale == cValePrev;
|
||||
bool isDecisionStrUpperUnderPeak = decisionConditions.x121Conditions.isStrUpperUnderPeak;
|
||||
bool isDecisionStrLowerUnderVale = decisionConditions.x121Conditions.isStrLowerUnderVale;
|
||||
|
||||
//
|
||||
bool isCNewPeakPrev = conditionStatePrev.x121Conditions.isNewPeak;
|
||||
bool isCNewPeakOverLastPrev = conditionStatePrev.x121Conditions.isNewPeakOverLast;
|
||||
bool isCNewPeakUnderLastPrev = conditionStatePrev.x121Conditions.isNewPeakUnderLast;
|
||||
bool isDecisionDonLowUpperLesserThanDonCloseUpper =
|
||||
decisionConditions.x121Conditions.donLowUpperBuffer[1] <
|
||||
decisionConditions.x121Conditions.donCloseUpperBuffer[1];
|
||||
|
||||
//
|
||||
bool isCNewValePrev = conditionStatePrev.x121Conditions.isNewVale;
|
||||
bool isCNewValeOverLastPrev = conditionStatePrev.x121Conditions.isNewValeOverLast;
|
||||
bool isCNewValeUnderLastPrev = conditionStatePrev.x121Conditions.isNewValeUnderLast;
|
||||
bool isDecisionDonHighLowerGreaterThanDonCloseLower =
|
||||
decisionConditions.x121Conditions.donHighLowerBuffer[1] <
|
||||
decisionConditions.x121Conditions.donCloseLowerBuffer[1];
|
||||
|
||||
//
|
||||
bool isCRSIOverSold = conditionState.x121Conditions.isRSIOverSold;
|
||||
bool isCRSICrossedOverOverSold = conditionState.x121Conditions.isRSICrossedOverOverSold;
|
||||
bool isCRSICrossedUnderOverSold = conditionState.x121Conditions.isRSICrossedUnderOverSold;
|
||||
|
||||
//
|
||||
bool isCRSIOverBought = conditionState.x121Conditions.isRSIOverBought;
|
||||
bool isCRSICrossedOverOverBought = conditionState.x121Conditions.isRSICrossedOverOverBought;
|
||||
bool isCRSICrossedUnderOverBought = conditionState.x121Conditions.isRSICrossedUnderOverBought;
|
||||
|
||||
//
|
||||
bool isCRSIOverSoldPrev = conditionStatePrev.x121Conditions.isRSIOverSold;
|
||||
bool isCRSICrossedOverOverSoldPrev = conditionStatePrev.x121Conditions.isRSICrossedOverOverSold;
|
||||
bool isCRSICrossedUnderOverSoldPrev = conditionStatePrev.x121Conditions.isRSICrossedUnderOverSold;
|
||||
|
||||
//
|
||||
bool isCRSIOverBoughtPrev = conditionStatePrev.x121Conditions.isRSIOverBought;
|
||||
bool isCRSICrossedOverOverBoughtPrev = conditionStatePrev.x121Conditions.isRSICrossedOverOverBought;
|
||||
bool isCRSICrossedUnderOverBoughtPrev = conditionStatePrev.x121Conditions.isRSICrossedUnderOverBought;
|
||||
// Summarize Conditions ...
|
||||
|
||||
//
|
||||
isBullish =
|
||||
//
|
||||
isCNewValePrev &&
|
||||
isCCBarPassedBullish
|
||||
isDecisionValeUnderAtrLower
|
||||
//
|
||||
&&
|
||||
//
|
||||
isDecisionDonHighLowerGreaterThanDonCloseLower
|
||||
//
|
||||
&&
|
||||
//
|
||||
(
|
||||
//
|
||||
isDecisionVWapBullishState ||
|
||||
isDecisionVWapBullishOrdered
|
||||
//
|
||||
)
|
||||
//
|
||||
&&
|
||||
//
|
||||
(
|
||||
//
|
||||
isDecisionStrUpperOverPeak ||
|
||||
isDecisionStrLowerOverVale
|
||||
//
|
||||
)
|
||||
//
|
||||
&&
|
||||
//
|
||||
(
|
||||
//
|
||||
(
|
||||
//
|
||||
isDecisionStrBullish &&
|
||||
isDecisionSarCrossedOverVale
|
||||
//
|
||||
)
|
||||
//
|
||||
||
|
||||
//
|
||||
(
|
||||
//
|
||||
isDecisionSarBullish &&
|
||||
isDecisionStrCrossedOverVale
|
||||
//
|
||||
)
|
||||
//
|
||||
)
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
isBearish =
|
||||
//
|
||||
isCNewPeakPrev &&
|
||||
isCCBarPassedBearish
|
||||
isDecisionPeakOverAtrUpper
|
||||
//
|
||||
&&
|
||||
//
|
||||
isDecisionDonLowUpperLesserThanDonCloseUpper
|
||||
//
|
||||
&&
|
||||
//
|
||||
(
|
||||
//
|
||||
isDecisionVWapBearishState ||
|
||||
isDecisionVWapBearishOrdered
|
||||
//
|
||||
)
|
||||
//
|
||||
&&
|
||||
//
|
||||
(
|
||||
//
|
||||
isDecisionStrUpperUnderPeak ||
|
||||
isDecisionStrLowerUnderVale
|
||||
//
|
||||
)
|
||||
//
|
||||
&&
|
||||
//
|
||||
(
|
||||
//
|
||||
(
|
||||
//
|
||||
isDecisionStrBearish &&
|
||||
isDecisionSarCrossedUnderPeak
|
||||
//
|
||||
)
|
||||
//
|
||||
||
|
||||
//
|
||||
(
|
||||
//
|
||||
isDecisionSarBearish &&
|
||||
isDecisionStrCrossedUnderPeak //
|
||||
)
|
||||
//
|
||||
)
|
||||
//
|
||||
;
|
||||
|
||||
@@ -582,12 +630,6 @@ bool DetectX121SMCXOBSPVSiganlSetup(
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
conditions.pivot =
|
||||
isBullish
|
||||
? conditionState.x121Conditions.valesBuffer[1]
|
||||
: conditionState.x121Conditions.peaksBuffer[1];
|
||||
|
||||
//
|
||||
conditions.setupTime = cTime;
|
||||
conditions.dir =
|
||||
@@ -615,7 +657,7 @@ bool DetectX121SMCXOBSPVSiganlTrigger(
|
||||
XC121SMCCycleHelper *consolidationCycleHelper,
|
||||
XC121SMCCycleHelper *visionCycleHelper,
|
||||
//
|
||||
int maxAllowedSetupAge = 576 //
|
||||
int maxAllowedSetupAge = 60 //
|
||||
//
|
||||
)
|
||||
{
|
||||
@@ -817,25 +859,29 @@ bool DetectX121SMCXOBSPVSiganlTrigger(
|
||||
// Trigger Conditions ...
|
||||
|
||||
//
|
||||
// Looking for STR Direction Change ...
|
||||
double decisionLastBullishStr = decisionCycleHelper.mX121Helper.xstrHelper.GetLastSTR(X_DIRECTION_BULLISH);
|
||||
double decisionLastBearishStr = decisionCycleHelper.mX121Helper.xstrHelper.GetLastSTR(X_DIRECTION_BEARISH);
|
||||
|
||||
//
|
||||
bool isStrSwitchedToBullish = analyseConditions.x121Conditions.isStrSwitchedToBullish;
|
||||
bool isStrSwitchedToBearish = analyseConditions.x121Conditions.isStrSwitchedToBearish;
|
||||
bool isDecisionLastBearishStrBreakedUp = IsBarBreak(
|
||||
decisionLastBearishStr,
|
||||
X_DIRECTION_BULLISH,
|
||||
cBar //
|
||||
);
|
||||
|
||||
//
|
||||
result = isStrSwitchedToBullish ||
|
||||
isStrSwitchedToBearish;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
bool isDecisionLastBullishStrBreakedDown = IsBarBreak(
|
||||
decisionLastBullishStr,
|
||||
X_DIRECTION_BEARISH,
|
||||
cBar //
|
||||
);
|
||||
|
||||
//
|
||||
// Detect Bullish Conditions ...
|
||||
isBullish =
|
||||
//
|
||||
false
|
||||
isBullish &&
|
||||
isDecisionLastBearishStrBreakedUp
|
||||
//
|
||||
;
|
||||
|
||||
@@ -843,7 +889,8 @@ bool DetectX121SMCXOBSPVSiganlTrigger(
|
||||
// Detect Bearish Conditions ...
|
||||
isBearish =
|
||||
//
|
||||
false
|
||||
isBearish &&
|
||||
isDecisionLastBullishStrBreakedDown
|
||||
//
|
||||
;
|
||||
|
||||
@@ -854,6 +901,13 @@ bool DetectX121SMCXOBSPVSiganlTrigger(
|
||||
{
|
||||
//
|
||||
// Cleanup Setup Conditions ...
|
||||
int setupAge = conditions.GetSetupAge();
|
||||
if (IsValidSize(setupAge) &&
|
||||
IsValidSize(maxAllowedSetupAge) &&
|
||||
setupAge >= maxAllowedSetupAge)
|
||||
{
|
||||
conditions.Clean();
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
@@ -899,15 +953,15 @@ bool DetectX121SMCXOBSPVSiganlTrigger(
|
||||
double sls[];
|
||||
|
||||
//
|
||||
double atr = triggerConditions.x121Conditions.atrBuffer[1];
|
||||
double peak = triggerConditions.x121Conditions.peaksBuffer[1];
|
||||
double vale = triggerConditions.x121Conditions.valesBuffer[1];
|
||||
double iAtr = triggerConditions.x121Conditions.atrBuffer[1];
|
||||
double iPeak = triggerConditions.x121Conditions.peaksBuffer[1];
|
||||
double iVale = triggerConditions.x121Conditions.valesBuffer[1];
|
||||
|
||||
//
|
||||
if (isBullish)
|
||||
{
|
||||
//
|
||||
double lowerVale = triggerCycleHelper.mX121Helper.xpvHelper.GetLowerVale(vale);
|
||||
double lowerVale = triggerCycleHelper.mX121Helper.xpvHelper.GetLowerVale(iVale);
|
||||
if (lowerVale > 0)
|
||||
{
|
||||
//
|
||||
@@ -919,14 +973,14 @@ bool DetectX121SMCXOBSPVSiganlTrigger(
|
||||
|
||||
//
|
||||
Add(
|
||||
vale,
|
||||
iVale,
|
||||
sls //
|
||||
);
|
||||
}
|
||||
else if (isBearish)
|
||||
{
|
||||
//
|
||||
double higherPeak = triggerCycleHelper.mX121Helper.xpvHelper.GetHigherPeak(peak);
|
||||
double higherPeak = triggerCycleHelper.mX121Helper.xpvHelper.GetHigherPeak(iPeak);
|
||||
if (higherPeak > 0)
|
||||
{
|
||||
//
|
||||
@@ -938,7 +992,7 @@ bool DetectX121SMCXOBSPVSiganlTrigger(
|
||||
|
||||
//
|
||||
Add(
|
||||
peak,
|
||||
iPeak,
|
||||
sls //
|
||||
);
|
||||
}
|
||||
@@ -949,8 +1003,8 @@ bool DetectX121SMCXOBSPVSiganlTrigger(
|
||||
|
||||
//
|
||||
double sl = isBullish
|
||||
? slsMin - atr
|
||||
: slsMax + atr;
|
||||
? slsMin - iAtr
|
||||
: slsMax + iAtr;
|
||||
double risk = MathAbs(entry - sl);
|
||||
double targetDelta = 2 * (risk / 3);
|
||||
if (target == 0)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -185,7 +185,7 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
||||
|
||||
//
|
||||
bool useTestSignal = false;
|
||||
bool useXOBGPVSignal = false;
|
||||
bool useXOBGPVSignal = true;
|
||||
bool useXOBSPVSignal = true;
|
||||
|
||||
//
|
||||
@@ -874,58 +874,6 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
||||
X121SMCStrategyXOBSPVSignalConditions mConditions;
|
||||
for (int i = 0; i < conditionsCount; i++)
|
||||
{
|
||||
//
|
||||
// Update Conditions ...
|
||||
// mTmpConditions[i].UpdateOrderBlocks();
|
||||
|
||||
//
|
||||
// Retrieve Required Data ...
|
||||
// ENUM_X_DIRECTION iDir = mTmpConditions[i].dir;
|
||||
// bool isIBullish = IsBullish(iDir);
|
||||
// double iUpper = 0;
|
||||
// double iLower = 0;
|
||||
// bool iHasBoundary = mTmpConditions[i].fvgOB.GetBoundary(
|
||||
// iUpper,
|
||||
// iLower //
|
||||
// );
|
||||
// if (!iHasBoundary)
|
||||
// {
|
||||
// continue;
|
||||
// }
|
||||
|
||||
//
|
||||
// Draw Conditions ...
|
||||
|
||||
//
|
||||
// XFVGOrderBlock iFVGOB = mTmpConditions[i].fvgOB;
|
||||
// XCBaseObject *drawnObjects[];
|
||||
// mPOIDrawer.DrawFVGOrderBlock(
|
||||
// iFVGOB,
|
||||
// drawnObjects //
|
||||
// );
|
||||
// AddObjectsIfNotExists(drawnObjects);
|
||||
|
||||
//
|
||||
// Check Broken Order Blocks and Remove them ...
|
||||
// bool isBreaked =
|
||||
// isBullish
|
||||
// ? (cBar.high < iLower ||
|
||||
// pBar.high < iLower)
|
||||
// : (cBar.low > iUpper ||
|
||||
// cBar.low > iUpper);
|
||||
// if (isBreaked)
|
||||
// {
|
||||
// //
|
||||
// ArrayRemove(
|
||||
// mXOBSPVConditionsCollection,
|
||||
// i,
|
||||
// 1 //
|
||||
// );
|
||||
|
||||
// //
|
||||
// continue;
|
||||
// }
|
||||
|
||||
//
|
||||
// Check Triggers ...
|
||||
bool canTrigger = mTmpConditions[i].CanTrigger();
|
||||
@@ -950,6 +898,17 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
||||
result = canTrigger;
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
bool isISetuped = mTmpConditions[i].IsSetuped();
|
||||
if (!isISetuped)
|
||||
{
|
||||
//
|
||||
ArrayRemove(
|
||||
mXOBSPVConditionsCollection,
|
||||
i,
|
||||
1 //
|
||||
);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1057,7 +1016,7 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
||||
x121Inputs.Default();
|
||||
|
||||
//
|
||||
x121Inputs.showRSI = true;
|
||||
x121Inputs.showRSI = false;
|
||||
|
||||
//
|
||||
bool isInited = false;
|
||||
@@ -1082,27 +1041,27 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
||||
|
||||
//
|
||||
// XATR ...
|
||||
x121Inputs.xatrInputs.showATRUpper = true;
|
||||
x121Inputs.xatrInputs.showATRLower = true;
|
||||
x121Inputs.xatrInputs.showATRUpper = false;
|
||||
x121Inputs.xatrInputs.showATRLower = false;
|
||||
|
||||
//
|
||||
// XSTR ...
|
||||
x121Inputs.xstrInputs.showStr = true;
|
||||
x121Inputs.xstrInputs.showStrUpper = true;
|
||||
x121Inputs.xstrInputs.showStrLower = true;
|
||||
x121Inputs.xstrInputs.showStrUpper = false;
|
||||
x121Inputs.xstrInputs.showStrLower = false;
|
||||
|
||||
//
|
||||
// XDON ...
|
||||
x121Inputs.xdonInputs.showOpen = false;
|
||||
x121Inputs.xdonInputs.showClose = false;
|
||||
x121Inputs.xdonInputs.showLow = false;
|
||||
x121Inputs.xdonInputs.showHigh = false;
|
||||
x121Inputs.xdonInputs.showClose = true;
|
||||
x121Inputs.xdonInputs.showLow = true;
|
||||
x121Inputs.xdonInputs.showHigh = true;
|
||||
|
||||
//
|
||||
// XVWAP ...
|
||||
x121Inputs.xvwapInputs.showVWapFast = true;
|
||||
x121Inputs.xvwapInputs.showVWapMedium = true;
|
||||
x121Inputs.xvwapInputs.showVWapSlow = true;
|
||||
x121Inputs.xvwapInputs.showVWapFast = false;
|
||||
x121Inputs.xvwapInputs.showVWapMedium = false;
|
||||
x121Inputs.xvwapInputs.showVWapSlow = false;
|
||||
|
||||
//
|
||||
// Initialize Cycle Helpers ...
|
||||
|
||||
Reference in New Issue
Block a user