Prepare requirements, add DrwaState in X121SMCBaseStrategy class ...

This commit is contained in:
2024-11-15 13:44:05 +03:30
parent 069f899f8a
commit d5ead24335
6 changed files with 746 additions and 134 deletions
+6 -6
View File
@@ -442,7 +442,7 @@ class XCSwingLowObject : public XCSwingObject
//
// Momentum ...
class XCMomentumObject : public XCBarArrowObject
class XCMomentumBarObject : public XCBarArrowObject
{
//
public:
@@ -523,7 +523,7 @@ class XCMomentumObject : public XCBarArrowObject
//
// Bullish Momentum Bar ...
class XCBullishMomentumObject : public XCMomentumObject
class XCBullishMomentumBarObject : public XCMomentumBarObject
{
//
public:
@@ -587,7 +587,7 @@ class XCBullishMomentumObject : public XCMomentumObject
//
// Bearish Momentum Bar ...
class XCBearishMomentumObject : public XCMomentumObject
class XCBearishMomentumBarObject : public XCMomentumBarObject
{
//
public:
@@ -651,7 +651,7 @@ class XCBearishMomentumObject : public XCMomentumObject
//
// Rejection ...
class XCRejectionObject : public XCBarArrowObject
class XCRejectionBarObject : public XCBarArrowObject
{
//
public:
@@ -732,7 +732,7 @@ class XCRejectionObject : public XCBarArrowObject
//
// Bullish Rejection Bar ...
class XCBullishRejectionObject : public XCRejectionObject
class XCBullishRejectionBarObject : public XCRejectionBarObject
{
//
public:
@@ -796,7 +796,7 @@ class XCBullishRejectionObject : public XCRejectionObject
//
// Bearish Rejection Bar ...
class XCBearishRejectionObject : public XCRejectionObject
class XCBearishRejectionBarObject : public XCRejectionBarObject
{
//
public:
+191 -120
View File
@@ -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;
+8 -8
View File
@@ -1511,7 +1511,7 @@ class XCPOIDrawer : public XCBase
*/
bool CreateBullishMomentumBar(
XCMomentumBar &momentumBar,
XCBullishMomentumObject *&object //
XCBullishMomentumBarObject *&object //
)
{
//
@@ -1540,7 +1540,7 @@ class XCPOIDrawer : public XCBase
color crl = BullishMomentumBarColor();
//
object = new XCBullishMomentumObject();
object = new XCBullishMomentumBarObject();
result = object.Create(
chartID,
window,
@@ -1574,7 +1574,7 @@ class XCPOIDrawer : public XCBase
*/
bool CreateBearishMomentumBar(
XCMomentumBar &momentumBar,
XCBearishMomentumObject *&object //
XCBearishMomentumBarObject *&object //
)
{
//
@@ -1603,7 +1603,7 @@ class XCPOIDrawer : public XCBase
color crl = BearishMomentumBarColor();
//
object = new XCBearishMomentumObject();
object = new XCBearishMomentumBarObject();
result = object.Create(
chartID,
window,
@@ -1640,7 +1640,7 @@ class XCPOIDrawer : public XCBase
*/
bool CreateBullishRejectionBar(
XCRejectionBar &rejectionBar,
XCBullishRejectionObject *&object //
XCBullishRejectionBarObject *&object //
)
{
//
@@ -1669,7 +1669,7 @@ class XCPOIDrawer : public XCBase
color crl = BullishRejectionBarColor();
//
object = new XCBullishRejectionObject();
object = new XCBullishRejectionBarObject();
result = object.Create(
chartID,
window,
@@ -1703,7 +1703,7 @@ class XCPOIDrawer : public XCBase
*/
bool CreateBearishRejectionBar(
XCRejectionBar &rejectionBar,
XCBearishRejectionObject *&object //
XCBearishRejectionBarObject *&object //
)
{
//
@@ -1732,7 +1732,7 @@ class XCPOIDrawer : public XCBase
color crl = BearishRejectionBarColor();
//
object = new XCBearishRejectionObject();
object = new XCBearishRejectionBarObject();
result = object.Create(
chartID,
window,