last ...
This commit is contained in:
@@ -6509,7 +6509,7 @@ struct XFVGOrderBlock
|
||||
//
|
||||
result =
|
||||
//
|
||||
dir = valueDir
|
||||
dir == valueDir
|
||||
//
|
||||
&&
|
||||
//
|
||||
|
||||
@@ -834,6 +834,7 @@ bool TestPOIState(
|
||||
}
|
||||
|
||||
//
|
||||
// Detect an FVG for Order Block ...
|
||||
for (int j = fvgsCount - 1; j >= 0; j--)
|
||||
{
|
||||
//
|
||||
|
||||
@@ -671,6 +671,10 @@ bool DetectX121SMCXTWPVSiganlTrigger(
|
||||
double decisionVale = decisionConditions.x121Conditions.valesBuffer[1];
|
||||
double isNewDecisionVale = decisionConditions.x121Conditions.isNewVale;
|
||||
|
||||
//
|
||||
bool isDecisionRSICrossedOverOverSold = decisionConditions.x121Conditions.isRSICrossedOverOverSold;
|
||||
bool isDecisionRSICrossedUnderOverBought = decisionConditions.x121Conditions.isRSICrossedUnderOverBought;
|
||||
|
||||
//
|
||||
// Waits For Price to Go Inside FVG ...
|
||||
bool isPriceInsideOB = IsPriceInsideZone(
|
||||
@@ -711,14 +715,18 @@ bool DetectX121SMCXTWPVSiganlTrigger(
|
||||
isBullish =
|
||||
isBullish &&
|
||||
cBar.IsBullish() &&
|
||||
isNewDecisionVale;
|
||||
decisionVale < fvgOBUpper &&
|
||||
decisionVale > fvgOBLower &&
|
||||
isDecisionRSICrossedOverOverSold;
|
||||
|
||||
//
|
||||
// Detect Bearish Conditions ...
|
||||
isBearish =
|
||||
isBearish &&
|
||||
cBar.IsBearish() &&
|
||||
isNewDecisionPeak;
|
||||
decisionPeak < fvgOBUpper &&
|
||||
decisionPeak > fvgOBLower &&
|
||||
isDecisionRSICrossedUnderOverBought;
|
||||
|
||||
//
|
||||
result = isBullish ||
|
||||
|
||||
@@ -536,6 +536,10 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
double cLL = cBar.FindLowest(7, MODE_LOW);
|
||||
double cHH = cBar.FindHighest(7, MODE_HIGH);
|
||||
|
||||
//
|
||||
datetime cTime = TimeCurrent();
|
||||
|
||||
@@ -572,12 +576,21 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
||||
if (isSetuped)
|
||||
{
|
||||
//
|
||||
AddRef(
|
||||
int items = AddX121SMCXTWPVConditionsIfNotExists(
|
||||
mXTWPVConditions,
|
||||
mXTWPVConditionsCollection);
|
||||
mXTWPVConditionsCollection //
|
||||
);
|
||||
|
||||
//
|
||||
mXTWPVConditions.Clean();
|
||||
|
||||
//
|
||||
// Try to Normalize Conditions Collection ...
|
||||
int maxAllowed = 6;
|
||||
CleanupArray(
|
||||
mXTWPVConditionsCollection,
|
||||
maxAllowed //
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -592,18 +605,38 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
||||
//
|
||||
// Looking For Conditions ...
|
||||
int selectedIndex = 0;
|
||||
X121SMCStrategyXTWPVSignalConditions mTmpConditions[];
|
||||
Copy(
|
||||
mXTWPVConditionsCollection,
|
||||
mTmpConditions //
|
||||
);
|
||||
X121SMCStrategyXTWPVSignalConditions mConditions;
|
||||
for (int i = 0; i < conditionsCount; i++)
|
||||
{
|
||||
//
|
||||
// Update Conditions ...
|
||||
mXTWPVConditionsCollection[i].UpdateOrderBlocks();
|
||||
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 = mXTWPVConditionsCollection[i].fvgOB;
|
||||
XFVGOrderBlock iFVGOB = mTmpConditions[i].fvgOB;
|
||||
XCBaseObject *drawnObjects[];
|
||||
mPOIDrawer.DrawFVGOrderBlock(
|
||||
iFVGOB,
|
||||
@@ -611,16 +644,37 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
||||
);
|
||||
AddObjectsIfNotExists(drawnObjects);
|
||||
|
||||
//
|
||||
// Check Broken Order Blocks and Remove them ...
|
||||
bool isBreaked =
|
||||
isBullish
|
||||
? (cBar.close < iLower ||
|
||||
pBar.close < iLower)
|
||||
: (cBar.close > iUpper ||
|
||||
cBar.close > iUpper);
|
||||
if (isBreaked)
|
||||
{
|
||||
//
|
||||
ArrayRemove(
|
||||
mXTWPVConditionsCollection,
|
||||
i,
|
||||
1 //
|
||||
);
|
||||
|
||||
//
|
||||
continue;
|
||||
}
|
||||
|
||||
//
|
||||
// Check Triggers ...
|
||||
bool canTrigger = mXTWPVConditionsCollection[i].CanTrigger();
|
||||
datetime triggerTime = mXTWPVConditionsCollection[i].triggerTime;
|
||||
bool canTrigger = mTmpConditions[i].CanTrigger();
|
||||
datetime triggerTime = mTmpConditions[i].triggerTime;
|
||||
if (!canTrigger)
|
||||
{
|
||||
//
|
||||
// Detect Signal Trigger ...
|
||||
canTrigger = DetectX121SMCXTWPVSiganlTrigger(
|
||||
mXTWPVConditionsCollection[i],
|
||||
mTmpConditions[i],
|
||||
symbol,
|
||||
period,
|
||||
mTriggerCycleHelper,
|
||||
@@ -635,11 +689,11 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
||||
result = canTrigger;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
continue;
|
||||
}
|
||||
|
||||
//
|
||||
triggerTime = mXTWPVConditionsCollection[i].triggerTime;
|
||||
triggerTime = mTmpConditions[i].triggerTime;
|
||||
}
|
||||
|
||||
//
|
||||
@@ -647,7 +701,7 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
||||
{
|
||||
//
|
||||
selectedIndex = i;
|
||||
mConditions = mXTWPVConditionsCollection[i];
|
||||
mConditions = mTmpConditions[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user