last ...
This commit is contained in:
@@ -49,9 +49,8 @@ struct X121SMCStrategyXTWPVSignalConditions
|
||||
datetime triggerTime;
|
||||
|
||||
//
|
||||
// ENUM_X_DIRECTION orderBlockDir;
|
||||
// XCOrderBlock *bullishOrderBlocks[];
|
||||
// XCOrderBlock *bearishOrderBlocks[];
|
||||
XFVGOrderBlock bullishOrderBlocks[];
|
||||
XFVGOrderBlock bearishOrderBlocks[];
|
||||
|
||||
//
|
||||
// Constructor ...
|
||||
@@ -168,9 +167,39 @@ struct X121SMCStrategyXTWPVSignalConditions
|
||||
void ExtensionClean()
|
||||
{
|
||||
//
|
||||
// Clean(bullishOrderBlocks);
|
||||
// Clean(bearishOrderBlocks);
|
||||
// orderBlockDir = X_DIRECTION_NONE;
|
||||
Clean(bullishOrderBlocks);
|
||||
Clean(bearishOrderBlocks);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update Order Blocks Date ...
|
||||
*/
|
||||
void UpdateOrderBlocks() {
|
||||
//
|
||||
int count = 0;
|
||||
datetime cTime = TimeCurrent();
|
||||
|
||||
//
|
||||
count = ArraySize(bullishOrderBlocks);
|
||||
if (IsValidSize(count)) {
|
||||
//
|
||||
for (int i = 0; i < count; i++) {
|
||||
//
|
||||
bullishOrderBlocks[i].orderBlock.To(cTime);
|
||||
bullishOrderBlocks[i].fairValueGap.To(cTime);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
count = ArraySize(bearishOrderBlocks);
|
||||
if (IsValidSize(count)) {
|
||||
//
|
||||
for (int i = 0; i < count; i++) {
|
||||
//
|
||||
bearishOrderBlocks[i].orderBlock.To(cTime);
|
||||
bearishOrderBlocks[i].fairValueGap.To(cTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
@@ -192,9 +221,7 @@ bool DetectX121SMCXTWPVSiganlSetup(
|
||||
XC121SMCCycleHelper *analyseCycleHelper,
|
||||
XC121SMCCycleHelper *verificationCycleHelper,
|
||||
XC121SMCCycleHelper *consolidationCycleHelper,
|
||||
XC121SMCCycleHelper *visionCycleHelper,
|
||||
//
|
||||
XCPOIDrawer *drawer //
|
||||
XC121SMCCycleHelper *visionCycleHelper
|
||||
//
|
||||
)
|
||||
{
|
||||
@@ -393,7 +420,6 @@ bool DetectX121SMCXTWPVSiganlSetup(
|
||||
XFVGOrderBlock bullishOrderBlocks[];
|
||||
XFVGOrderBlock bearishOrderBlocks[];
|
||||
bool isTested = TestPOIState(
|
||||
drawer,
|
||||
forDir,
|
||||
bullishOrderBlocks,
|
||||
bearishOrderBlocks,
|
||||
@@ -402,6 +428,15 @@ bool DetectX121SMCXTWPVSiganlSetup(
|
||||
decisionState //
|
||||
);
|
||||
|
||||
//
|
||||
isBullish =
|
||||
isTested &&
|
||||
IsBullish(forDir);
|
||||
//
|
||||
isBearish =
|
||||
isTested &&
|
||||
IsBearish(forDir);
|
||||
|
||||
//
|
||||
result = isBullish ||
|
||||
isBearish;
|
||||
@@ -410,6 +445,17 @@ bool DetectX121SMCXTWPVSiganlSetup(
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
conditions.dir = forDir;
|
||||
Copy(
|
||||
bullishOrderBlocks,
|
||||
conditions.bullishOrderBlocks //
|
||||
);
|
||||
Copy(
|
||||
bearishOrderBlocks,
|
||||
conditions.bearishOrderBlocks //
|
||||
);
|
||||
|
||||
//
|
||||
conditions.setupTime = cTime;
|
||||
conditions.dir =
|
||||
@@ -437,7 +483,7 @@ bool DetectX121SMCXTWPVSiganlTrigger(
|
||||
XC121SMCCycleHelper *consolidationCycleHelper,
|
||||
XC121SMCCycleHelper *visionCycleHelper,
|
||||
//
|
||||
int maxAllowedSetupAge = 60 //
|
||||
int maxAllowedSetupAge = 0 //
|
||||
//
|
||||
)
|
||||
{
|
||||
@@ -638,6 +684,91 @@ bool DetectX121SMCXTWPVSiganlTrigger(
|
||||
//
|
||||
// Trigger Conditions ...
|
||||
|
||||
//
|
||||
// Waits For Price to Go Inside FVG ...
|
||||
XFVGOrderBlock fvgOrderBlock;
|
||||
bool isPriceInsideOB = false;
|
||||
bool isPriceInsideFVG = false;
|
||||
if (isBullish)
|
||||
{
|
||||
//
|
||||
int count = ArraySize(conditions.bullishOrderBlocks);
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
//
|
||||
XFVGOrderBlock iModel = conditions.bullishOrderBlocks[i];
|
||||
|
||||
//
|
||||
isPriceInsideOB = IsPriceInsideZone(
|
||||
cBar,
|
||||
iModel.orderBlock //
|
||||
);
|
||||
|
||||
//
|
||||
isPriceInsideFVG = IsPriceInsideZone(
|
||||
cBar,
|
||||
iModel.fairValueGap //
|
||||
);
|
||||
|
||||
//
|
||||
if (isPriceInsideOB &&
|
||||
isPriceInsideFVG)
|
||||
{
|
||||
//
|
||||
fvgOrderBlock = iModel;
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
isPriceInsideOB = false;
|
||||
isPriceInsideFVG = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
int count = ArraySize(conditions.bearishOrderBlocks);
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
//
|
||||
XFVGOrderBlock iModel = conditions.bearishOrderBlocks[i];
|
||||
|
||||
//
|
||||
isPriceInsideOB = IsPriceInsideZone(
|
||||
cBar,
|
||||
iModel.orderBlock //
|
||||
);
|
||||
|
||||
//
|
||||
isPriceInsideFVG = IsPriceInsideZone(
|
||||
cBar,
|
||||
iModel.fairValueGap //
|
||||
);
|
||||
|
||||
//
|
||||
if (isPriceInsideOB &&
|
||||
isPriceInsideFVG)
|
||||
{
|
||||
//
|
||||
fvgOrderBlock = iModel;
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
isPriceInsideOB = false;
|
||||
isPriceInsideFVG = false;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
result = isPriceInsideOB &&
|
||||
isPriceInsideFVG &&
|
||||
fvgOrderBlock.IsValid();
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Detect Bullish Conditions ...
|
||||
isBullish =
|
||||
@@ -657,13 +788,13 @@ bool DetectX121SMCXTWPVSiganlTrigger(
|
||||
{
|
||||
//
|
||||
// Cleanup Setup Conditions ...
|
||||
int setupAge = conditions.GetSetupAge();
|
||||
if (IsValidSize(setupAge) &&
|
||||
IsValidSize(maxAllowedSetupAge) &&
|
||||
setupAge >= maxAllowedSetupAge)
|
||||
{
|
||||
conditions.Clean();
|
||||
}
|
||||
// int setupAge = conditions.GetSetupAge();
|
||||
// if (IsValidSize(setupAge) &&
|
||||
// IsValidSize(maxAllowedSetupAge) &&
|
||||
// setupAge >= maxAllowedSetupAge)
|
||||
// {
|
||||
// conditions.Clean();
|
||||
// }
|
||||
|
||||
//
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user