Prepare requirements, add DrwaState in X121SMCBaseStrategy class ...
This commit is contained in:
@@ -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
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user