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