Prepare requirements, add DrwaState in X121SMCBaseStrategy class ...
This commit is contained in:
+191
-120
@@ -1356,81 +1356,115 @@ class XCPOIDetector : public XCBaseAlert
|
||||
while (canContinue)
|
||||
{
|
||||
//
|
||||
// Swing Highs ...
|
||||
swingHighsCount = DetectRequiredSwingHighs(barIndex);
|
||||
if (swingHighsCount == requiredPOIs)
|
||||
// Swings ...
|
||||
int swingRange = SwingRange();
|
||||
if (swingRange > 0)
|
||||
{
|
||||
ArrayReverse(mSwingHighs);
|
||||
//
|
||||
// Swing Highs ...
|
||||
swingHighsCount = DetectRequiredSwingHighs(barIndex);
|
||||
if (swingHighsCount == requiredPOIs)
|
||||
{
|
||||
ArrayReverse(mSwingHighs);
|
||||
}
|
||||
|
||||
//
|
||||
// Swing Lows ...
|
||||
swingLowsCount = DetectRequiredSwingLows(barIndex);
|
||||
if (swingLowsCount == requiredPOIs)
|
||||
{
|
||||
ArrayReverse(mSwingLows);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Swing Lows ...
|
||||
swingLowsCount = DetectRequiredSwingLows(barIndex);
|
||||
if (swingHighsCount == requiredPOIs)
|
||||
bool canLookupMomentumBars =
|
||||
MomentumBarExtendRange() >= 0 &&
|
||||
MomentumBarBodyPercent() > 0;
|
||||
if (canLookupMomentumBars)
|
||||
{
|
||||
ArrayReverse(mSwingLows);
|
||||
//
|
||||
//
|
||||
// Bullish Momentum Bars ...
|
||||
bullishMomentumBarsCount = DetectRequiredBullishMomentumBars(barIndex);
|
||||
if (bullishMomentumBarsCount == requiredPOIs)
|
||||
{
|
||||
ArrayReverse(mBullishMomentumBars);
|
||||
}
|
||||
|
||||
//
|
||||
// Bearish Momentum Bars ...
|
||||
bearishMomentumBarsCount = DetectRequiredBearishMomentumBars(barIndex);
|
||||
if (bearishMomentumBarsCount == requiredPOIs)
|
||||
{
|
||||
ArrayReverse(mBearishMomentumBars);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Bullish Momentum Bars ...
|
||||
bullishMomentumBarsCount = DetectRequiredBullishMomentumBars(barIndex);
|
||||
if (bullishMomentumBarsCount == requiredPOIs)
|
||||
bool canLookupRejectionBars =
|
||||
RejectionBarExtendRange() >= 0 &&
|
||||
RejectionBarShadowPercent() > 0;
|
||||
if (canLookupRejectionBars)
|
||||
{
|
||||
ArrayReverse(mBullishMomentumBars);
|
||||
//
|
||||
//
|
||||
// Bullish Rejection Bars ...
|
||||
bullishRejectionBarsCount = DetectRequiredBullishRejectionBars(barIndex);
|
||||
if (bullishRejectionBarsCount == requiredPOIs)
|
||||
{
|
||||
ArrayReverse(mBullishRejectionBars);
|
||||
}
|
||||
|
||||
//
|
||||
// Bearish Rejection Bars ...
|
||||
bearishRejectionBarsCount = DetectRequiredBearishRejectionBars(barIndex);
|
||||
if (bearishRejectionBarsCount == requiredPOIs)
|
||||
{
|
||||
ArrayReverse(mBearishRejectionBars);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Bearish Momentum Bars ...
|
||||
bearishMomentumBarsCount = DetectRequiredBearishMomentumBars(barIndex);
|
||||
if (bearishMomentumBarsCount == requiredPOIs)
|
||||
// Support and Resistance Zones ...
|
||||
int supResRange = SupportAndResistanceRange();
|
||||
if (supResRange > 0)
|
||||
{
|
||||
ArrayReverse(mBearishMomentumBars);
|
||||
//
|
||||
// Support Zone(s) ...
|
||||
supportZonesCount = DetectRequiredSupportZones(barIndex);
|
||||
if (supportZonesCount == requiredPOIs)
|
||||
{
|
||||
ArrayReverse(mSupportZones);
|
||||
}
|
||||
|
||||
//
|
||||
// Resistance Zone(s) ...
|
||||
resistanceZonesCount = DetectRequiredResistanceZones(barIndex);
|
||||
if (resistanceZonesCount == requiredPOIs)
|
||||
{
|
||||
ArrayReverse(mResistanceZones);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Bullish Rejection Bars ...
|
||||
bullishRejectionBarsCount = DetectRequiredBullishRejectionBars(barIndex);
|
||||
if (bullishRejectionBarsCount == requiredPOIs)
|
||||
// Supply and Demand Zones ...
|
||||
int supDemRange = SupplyAndDemandRange();
|
||||
if (supDemRange > 0)
|
||||
{
|
||||
ArrayReverse(mBullishRejectionBars);
|
||||
}
|
||||
//
|
||||
supplyZonesCount = DetectRequiredSupplyZones(barIndex);
|
||||
if (supplyZonesCount == requiredPOIs)
|
||||
{
|
||||
ArrayReverse(mSupplyZones);
|
||||
}
|
||||
|
||||
//
|
||||
// Bearish Rejection Bars ...
|
||||
bearishRejectionBarsCount = DetectRequiredBearishRejectionBars(barIndex);
|
||||
if (bearishRejectionBarsCount == requiredPOIs)
|
||||
{
|
||||
ArrayReverse(mBearishRejectionBars);
|
||||
}
|
||||
|
||||
//
|
||||
// Support Zone(s) ...
|
||||
supportZonesCount = DetectRequiredSupportZones(barIndex);
|
||||
if (supportZonesCount == requiredPOIs)
|
||||
{
|
||||
ArrayReverse(mSupportZones);
|
||||
}
|
||||
|
||||
//
|
||||
// Resistance Zone(s) ...
|
||||
resistanceZonesCount = DetectRequiredResistanceZones(barIndex);
|
||||
if (resistanceZonesCount == requiredPOIs)
|
||||
{
|
||||
ArrayReverse(mResistanceZones);
|
||||
}
|
||||
|
||||
//
|
||||
supplyZonesCount = DetectRequiredSupplyZones(barIndex);
|
||||
if (supplyZonesCount == requiredPOIs)
|
||||
{
|
||||
ArrayReverse(mSupplyZones);
|
||||
}
|
||||
|
||||
//
|
||||
demandZonesCount = DetectRequiredDemandZones(barIndex);
|
||||
if (demandZonesCount == requiredPOIs)
|
||||
{
|
||||
ArrayReverse(mDemandZones);
|
||||
//
|
||||
demandZonesCount = DetectRequiredDemandZones(barIndex);
|
||||
if (demandZonesCount == requiredPOIs)
|
||||
{
|
||||
ArrayReverse(mDemandZones);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
@@ -1477,76 +1511,113 @@ class XCPOIDetector : public XCBaseAlert
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Swings ...
|
||||
bool canContinueSwingHighs =
|
||||
swingRange > 0
|
||||
? swingHighsCount < requiredPOIs
|
||||
: false;
|
||||
bool canContinueSwingLows =
|
||||
swingRange > 0
|
||||
? swingLowsCount < requiredPOIs
|
||||
: false;
|
||||
|
||||
//
|
||||
// Support and Resistance Zones ...
|
||||
bool canContinueSupportZones =
|
||||
supResRange > 0
|
||||
? supportZonesCount < requiredPOIs
|
||||
: false;
|
||||
bool canContinueResistanceZones =
|
||||
supResRange > 0
|
||||
? resistanceZonesCount < requiredPOIs
|
||||
: false;
|
||||
|
||||
//
|
||||
// Supply and Demand Zones ...
|
||||
bool canContinueSupplyZones =
|
||||
supDemRange > 0
|
||||
? supplyZonesCount < requiredPOIs
|
||||
: false;
|
||||
bool canContinueDemandZones =
|
||||
supDemRange > 0
|
||||
? demandZonesCount < requiredPOIs
|
||||
: false;
|
||||
|
||||
//
|
||||
// Order Blocks ...
|
||||
bool canContinueBullishOrderBlocks =
|
||||
obSameBars > 0
|
||||
? bullishOrderBlocksCount < requiredPOIs
|
||||
: false;
|
||||
bool canContinueBearishOrderBlocks =
|
||||
obSameBars > 0
|
||||
? bearishOrderBlocksCount < requiredPOIs
|
||||
: false;
|
||||
|
||||
//
|
||||
// Fair Value Gaps ...
|
||||
bool canContinueBullishFairValueGaps =
|
||||
fvgSameBars > 0
|
||||
? bullishFairValueGapsCount < requiredPOIs
|
||||
: false;
|
||||
bool canContinueBearishFairValueGaps =
|
||||
fvgSameBars > 0
|
||||
? bearishFairValueGapsCount < requiredPOIs
|
||||
: false;
|
||||
|
||||
//
|
||||
// Rejection Bars ...
|
||||
bool canContinueBullishRejectionBars =
|
||||
canLookupRejectionBars
|
||||
? bullishRejectionBarsCount < requiredPOIs
|
||||
: false;
|
||||
bool canContinueBearishRejectionBars =
|
||||
canLookupRejectionBars
|
||||
? bearishRejectionBarsCount < requiredPOIs
|
||||
: false;
|
||||
|
||||
//
|
||||
// Momentum Bars ...
|
||||
bool canContinueBullishMomentumBars =
|
||||
canLookupMomentumBars
|
||||
? bullishMomentumBarsCount < requiredPOIs
|
||||
: false;
|
||||
bool canContinueBearishMomentumBars =
|
||||
canLookupMomentumBars
|
||||
? bearishMomentumBarsCount < requiredPOIs
|
||||
: false;
|
||||
|
||||
//
|
||||
canContinue =
|
||||
//
|
||||
// Swing Highs ...
|
||||
swingHighsCount < requiredPOIs
|
||||
// Swings ...
|
||||
canContinueSwingHighs ||
|
||||
canContinueSwingLows ||
|
||||
//
|
||||
||
|
||||
// Support and Resistance Zones ...
|
||||
canContinueSupportZones ||
|
||||
canContinueResistanceZones ||
|
||||
//
|
||||
// Swing Lows ...
|
||||
swingLowsCount < requiredPOIs
|
||||
// Supply and Demand Zones ...
|
||||
canContinueSupplyZones ||
|
||||
canContinueDemandZones ||
|
||||
//
|
||||
||
|
||||
// Order Blocks ...
|
||||
canContinueBullishOrderBlocks ||
|
||||
canContinueBearishOrderBlocks ||
|
||||
//
|
||||
// Bullish Momentum Bars ...
|
||||
bullishMomentumBarsCount < requiredPOIs
|
||||
// Fair Value Gaps ...
|
||||
canContinueBullishFairValueGaps ||
|
||||
canContinueBearishFairValueGaps ||
|
||||
//
|
||||
||
|
||||
// Rejection Bars ...
|
||||
canContinueBullishRejectionBars ||
|
||||
canContinueBearishRejectionBars ||
|
||||
//
|
||||
// Bearish Momentum Bars ...
|
||||
bearishMomentumBarsCount < requiredPOIs
|
||||
//
|
||||
||
|
||||
//
|
||||
// Bullish Rejection Bars ...
|
||||
bullishRejectionBarsCount < requiredPOIs
|
||||
//
|
||||
||
|
||||
//
|
||||
// Bearish Rejection Bars ...
|
||||
bearishRejectionBarsCount < requiredPOIs
|
||||
//
|
||||
||
|
||||
//
|
||||
// Support Zones ...
|
||||
supportZonesCount < requiredPOIs
|
||||
//
|
||||
||
|
||||
//
|
||||
// Resistance Zones ...
|
||||
resistanceZonesCount < requiredPOIs
|
||||
//
|
||||
||
|
||||
//
|
||||
// Supply Zones ...
|
||||
supplyZonesCount < requiredPOIs
|
||||
//
|
||||
||
|
||||
//
|
||||
// Demand Zones ...
|
||||
demandZonesCount < requiredPOIs
|
||||
//
|
||||
||
|
||||
//
|
||||
// Bullish Order Blocks ...
|
||||
bullishOrderBlocksCount < requiredPOIs
|
||||
//
|
||||
||
|
||||
//
|
||||
// Bearish Order Blocks ...
|
||||
bearishOrderBlocksCount < requiredPOIs
|
||||
//
|
||||
||
|
||||
//
|
||||
// Bullish Fair Value Gaps ...
|
||||
bullishFairValueGapsCount < requiredPOIs
|
||||
//
|
||||
||
|
||||
//
|
||||
// Bearish Fair Value Gaps ...
|
||||
bearishFairValueGapsCount < requiredPOIs
|
||||
// Momentum Bars ...
|
||||
canContinueBullishMomentumBars ||
|
||||
canContinueBearishMomentumBars
|
||||
//
|
||||
;
|
||||
if (canContinue)
|
||||
@@ -2158,7 +2229,7 @@ class XCPOIDetector : public XCBaseAlert
|
||||
//
|
||||
Add(
|
||||
swing,
|
||||
mSwingHighs //
|
||||
mSwingLows //
|
||||
);
|
||||
|
||||
// //
|
||||
@@ -2240,7 +2311,7 @@ class XCPOIDetector : public XCBaseAlert
|
||||
DetectSwingLow(bar);
|
||||
|
||||
//
|
||||
result = ArraySize(mSwingHighs);
|
||||
result = ArraySize(mSwingLows);
|
||||
|
||||
//
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user