Complete XSMC SMPV Strategy and Prepare for Testing Phase 1 ...
This commit is contained in:
@@ -148,7 +148,15 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
||||
|
||||
//
|
||||
// Detect Signal Conditions ...
|
||||
result = DetectConditions(conditions);
|
||||
result = DetectSamePeaksAndValesSignal(conditions);
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
// TODO: Enable this ...
|
||||
// result = DetectVWAPSignal(conditions);
|
||||
}
|
||||
|
||||
//
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
@@ -164,14 +172,14 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
||||
//
|
||||
hasLong =
|
||||
//
|
||||
IsBullish(conditions.marketStructureDir)
|
||||
IsBullish(conditions.signalDir)
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
hasShort =
|
||||
//
|
||||
IsBearish(conditions.marketStructureDir)
|
||||
IsBearish(conditions.signalDir)
|
||||
//
|
||||
;
|
||||
|
||||
@@ -435,14 +443,17 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Signalling Functions ...
|
||||
|
||||
/**
|
||||
* Detect and Parse Market Conditions ...
|
||||
* Detect and Parse Market Conditions for Signalling ...
|
||||
*
|
||||
* @param conditions: X121SMCStrategyConditions instance Reference ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool DetectConditions(
|
||||
bool DetectSamePeaksAndValesSignal(
|
||||
X121SMCStrategyConditions &conditions //
|
||||
)
|
||||
{
|
||||
@@ -453,6 +464,10 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
||||
string symbol = GetSymbol();
|
||||
ENUM_TIMEFRAMES period = GetPeriod();
|
||||
|
||||
//
|
||||
ENUM_X_121_SMC_PROVIDERS provider = X_121_SMC_PROVIDER_SMPV;
|
||||
string providerStr = ToString(provider);
|
||||
|
||||
//
|
||||
int zIndex = 0;
|
||||
int cIndex = zIndex + 1;
|
||||
@@ -511,9 +526,86 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
||||
hasSamePeaks ||
|
||||
hasSameVales;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Check Peaks And Vales Order ...
|
||||
bool hasPeakBreak = false;
|
||||
bool hasValeBreak = false;
|
||||
|
||||
//
|
||||
// Retrieve Last Sar Change ...
|
||||
XOHCL cSarChangeBar;
|
||||
XOHCL pSarChangeBar;
|
||||
XValueChange cSarChange; // Current Sar Change (IsDirect) ...
|
||||
XValueChange pSarChange; // Prev Sar Change (Direct) ...
|
||||
XValueChange sarChanges[];
|
||||
int sarChangesCount = mTriggerCycleHelper
|
||||
.FillSarChanges(sarChanges);
|
||||
if (IsValidSize(sarChangesCount) &&
|
||||
sarChangesCount > 2)
|
||||
{
|
||||
//
|
||||
conditions.Clean();
|
||||
cSarChange = sarChanges[sarChangesCount - 1];
|
||||
pSarChange = sarChanges[sarChangesCount - 2];
|
||||
|
||||
//
|
||||
result = cSarChange.FillBar(
|
||||
cSarChangeBar,
|
||||
symbol,
|
||||
period //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
result = pSarChange.FillBar(
|
||||
pSarChangeBar,
|
||||
symbol,
|
||||
period //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
int start = cSarChangeBar.Index();
|
||||
int end = pSarChangeBar.Index();
|
||||
for (int i = start; i < end; i++)
|
||||
{
|
||||
//
|
||||
ENUM_X_CYCLE_EVENTS iEvents[];
|
||||
X121SMCCycleConditions iConditions;
|
||||
result = mTriggerCycleHelper.GetConditions(
|
||||
iEvents,
|
||||
iConditions,
|
||||
i //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
//
|
||||
hasPeakBreak =
|
||||
iConditions.x121Conditions.isNewPeakOverLast;
|
||||
hasValeBreak =
|
||||
iConditions.x121Conditions.isNewValeUnderLast;
|
||||
result = hasPeakBreak ||
|
||||
hasValeBreak;
|
||||
if (result)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -521,13 +613,12 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
||||
// Check Sar State ...
|
||||
ENUM_X_DIRECTION sarDir;
|
||||
result = DetectSarState(
|
||||
provider,
|
||||
sarDir,
|
||||
conditions //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
conditions.Clean();
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -535,38 +626,167 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
||||
// Check VWAP State ...
|
||||
ENUM_X_DIRECTION vwapDir;
|
||||
result = DetectVWapState(
|
||||
provider,
|
||||
vwapDir,
|
||||
conditions //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
conditions.Clean();
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
bool isBullish =
|
||||
//
|
||||
hasSamePeaks &&
|
||||
hasPeakBreak &&
|
||||
IsBullish(sarDir) &&
|
||||
IsBullish(vwapDir)
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
bool isBearish =
|
||||
//
|
||||
hasSameVales &&
|
||||
hasValeBreak &&
|
||||
IsBearish(sarDir) &&
|
||||
IsBearish(vwapDir)
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
result =
|
||||
isBullish ||
|
||||
isBearish;
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Set SL, Provider and Direction ...
|
||||
conditions.signalDir =
|
||||
isBullish
|
||||
? X_DIRECTION_BULLISH
|
||||
: X_DIRECTION_BEARISH;
|
||||
conditions.provider = providerStr;
|
||||
|
||||
//
|
||||
// Detect SL and TP ...
|
||||
conditions.sl =
|
||||
isBullish
|
||||
? pSarChangeBar.low
|
||||
: pSarChangeBar.high;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Detect and Parse Market Conditions for Signalling ...
|
||||
*
|
||||
* @param conditions: X121SMCStrategyConditions instance Reference ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool DetectVWAPSignal(
|
||||
X121SMCStrategyConditions &conditions //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
string symbol = GetSymbol();
|
||||
ENUM_TIMEFRAMES period = GetPeriod();
|
||||
|
||||
//
|
||||
int zIndex = 0;
|
||||
int cIndex = zIndex + 1;
|
||||
int pIndex = cIndex + 1;
|
||||
int ppIndex = pIndex + 1;
|
||||
|
||||
//
|
||||
XOHCL zBar;
|
||||
result = zBar.Init(
|
||||
symbol,
|
||||
period,
|
||||
zIndex //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
XOHCL cBar;
|
||||
result = cBar.Init(
|
||||
symbol,
|
||||
period,
|
||||
cIndex //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
string msg = NULL;
|
||||
|
||||
//
|
||||
double bid = GetBid(symbol);
|
||||
datetime cTime = TimeCurrent();
|
||||
|
||||
//
|
||||
ENUM_X_121_SMC_PROVIDERS provider = X_121_SMC_PROVIDER_VWAPC;
|
||||
string providerStr = ToString(provider);
|
||||
|
||||
//
|
||||
// Check Candlestic State ...
|
||||
ENUM_X_DIRECTION candlesticDir;
|
||||
result = DetectCandlestic(
|
||||
provider,
|
||||
candlesticDir,
|
||||
conditions //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
conditions.Clean();
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
Print("Has Same Peaks or Vales ...");
|
||||
// Check Sar State ...
|
||||
ENUM_X_DIRECTION sarDir;
|
||||
result = DetectSarState(
|
||||
provider,
|
||||
sarDir,
|
||||
conditions //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Check VWAP State ...
|
||||
ENUM_X_DIRECTION vwapDir;
|
||||
result = DetectVWapState(
|
||||
provider,
|
||||
vwapDir,
|
||||
conditions //
|
||||
);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
Print("VWap Signal ...");
|
||||
|
||||
//
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
conditions.Clean();
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -574,6 +794,9 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Helper Functions ...
|
||||
|
||||
/**
|
||||
* Detect Where Cycles has Same Peaks ...
|
||||
*
|
||||
@@ -753,12 +976,14 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
||||
/**
|
||||
* Detect Sar State for Signalling ...
|
||||
*
|
||||
* @param forProvider: ENUM_X_121_SMC_PROVIDERS member ...
|
||||
* @param dir: ENUM_X_DIRECTION member Reference ...
|
||||
* @param conditions: X121SMCStrategyConditions instance, Reference ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool DetectSarState(
|
||||
ENUM_X_121_SMC_PROVIDERS forProvider,
|
||||
ENUM_X_DIRECTION &dir,
|
||||
X121SMCStrategyConditions &conditions //
|
||||
)
|
||||
@@ -770,44 +995,57 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
||||
dir = X_DIRECTION_NONE;
|
||||
|
||||
//
|
||||
bool isBullish =
|
||||
//
|
||||
// Check One of Verification or Consolidation Cycles Must be Sar Bullish ...
|
||||
(conditions.verificationConditions.x121Conditions.isSarBullish ||
|
||||
conditions.consolidationConditions.x121Conditions.isSarBullish)
|
||||
//
|
||||
&&
|
||||
//
|
||||
// Decision and Analyse Cycles Must be Bullish ...
|
||||
(conditions.decisionConditions.x121Conditions.isSarBullish &&
|
||||
conditions.analyseConditions.x121Conditions.isSarBullish)
|
||||
//
|
||||
&&
|
||||
//
|
||||
// Trigger State Must be Bearish ...
|
||||
conditions.triggerConditions.x121Conditions.isSarBearish
|
||||
//
|
||||
;
|
||||
bool isBullish = false;
|
||||
bool isBearish = false;
|
||||
|
||||
//
|
||||
bool isBearish =
|
||||
if (forProvider == X_121_SMC_PROVIDER_SMPV)
|
||||
{
|
||||
//
|
||||
// Check One of Verification or Consolidation Cycles Must be Sar Bearish ...
|
||||
(conditions.verificationConditions.x121Conditions.isSarBearish ||
|
||||
conditions.consolidationConditions.x121Conditions.isSarBearish)
|
||||
isBullish =
|
||||
//
|
||||
// Check One of Verification or Consolidation Cycles Must be Sar Bullish ...
|
||||
(conditions.verificationConditions.x121Conditions.isSarBullish ||
|
||||
conditions.consolidationConditions.x121Conditions.isSarBullish)
|
||||
//
|
||||
&&
|
||||
//
|
||||
// Decision and Analyse Cycles Must be Bullish ...
|
||||
(conditions.decisionConditions.x121Conditions.isSarBullish &&
|
||||
conditions.analyseConditions.x121Conditions.isSarBullish)
|
||||
//
|
||||
&&
|
||||
//
|
||||
// Trigger State Must be Bearish ...
|
||||
conditions.triggerConditions.x121Conditions.isSarBearish
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
&&
|
||||
//
|
||||
// Decision and Analyse Cycles Must be Bearish ...
|
||||
(conditions.decisionConditions.x121Conditions.isSarBearish &&
|
||||
conditions.analyseConditions.x121Conditions.isSarBearish)
|
||||
//
|
||||
&&
|
||||
//
|
||||
// Trigger State Must be Bullish ...
|
||||
conditions.triggerConditions.x121Conditions.isSarBullish
|
||||
//
|
||||
;
|
||||
isBearish =
|
||||
//
|
||||
// Check One of Verification or Consolidation Cycles Must be Sar Bearish ...
|
||||
(conditions.verificationConditions.x121Conditions.isSarBearish ||
|
||||
conditions.consolidationConditions.x121Conditions.isSarBearish)
|
||||
//
|
||||
&&
|
||||
//
|
||||
// Decision and Analyse Cycles Must be Bearish ...
|
||||
(conditions.decisionConditions.x121Conditions.isSarBearish &&
|
||||
conditions.analyseConditions.x121Conditions.isSarBearish)
|
||||
//
|
||||
&&
|
||||
//
|
||||
// Trigger State Must be Bullish ...
|
||||
conditions.triggerConditions.x121Conditions.isSarBullish
|
||||
//
|
||||
;
|
||||
}
|
||||
|
||||
//
|
||||
if (forProvider == X_121_SMC_PROVIDER_VWAPC)
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
result = isBullish ||
|
||||
@@ -830,12 +1068,14 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
||||
/**
|
||||
* Detect Sar State for Signalling ...
|
||||
*
|
||||
* @param forProvider: ENUM_X_121_SMC_PROVIDERS member ...
|
||||
* @param dir: ENUM_X_DIRECTION member Reference ...
|
||||
* @param conditions: X121SMCStrategyConditions instance, Reference ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool DetectVWapState(
|
||||
ENUM_X_121_SMC_PROVIDERS forProvider,
|
||||
ENUM_X_DIRECTION &dir,
|
||||
X121SMCStrategyConditions &conditions //
|
||||
)
|
||||
@@ -847,54 +1087,67 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
||||
dir = X_DIRECTION_NONE;
|
||||
|
||||
//
|
||||
bool isBullish =
|
||||
//
|
||||
// Trigger, Decision and Analyse Cycles Must be in Direction Order and State ...
|
||||
//
|
||||
// Orders ...
|
||||
(conditions.triggerConditions.x121Conditions.isVWapBullishOrdered &&
|
||||
conditions.decisionConditions.x121Conditions.isVWapBullishOrdered &&
|
||||
conditions.analyseConditions.x121Conditions.isVWapBullishOrdered)
|
||||
//
|
||||
&&
|
||||
//
|
||||
// State ...
|
||||
(conditions.triggerConditions.x121Conditions.isVWapBullishState &&
|
||||
conditions.decisionConditions.x121Conditions.isVWapBullishState &&
|
||||
conditions.analyseConditions.x121Conditions.isVWapBullishState)
|
||||
//
|
||||
&&
|
||||
//
|
||||
// One of Verification and Consolidation must Be in Direction State ...
|
||||
(conditions.verificationConditions.x121Conditions.isVWapBullishState ||
|
||||
conditions.consolidationConditions.x121Conditions.isVWapBullishState)
|
||||
//
|
||||
;
|
||||
bool isBullish = false;
|
||||
bool isBearish = false;
|
||||
|
||||
//
|
||||
bool isBearish =
|
||||
if (forProvider == X_121_SMC_PROVIDER_SMPV)
|
||||
{
|
||||
//
|
||||
// Trigger, Decision and Analyse Cycles Must be in Direction Order and State ...
|
||||
isBullish =
|
||||
//
|
||||
// Trigger, Decision and Analyse Cycles Must be in Direction Order and State ...
|
||||
//
|
||||
// Orders ...
|
||||
(conditions.triggerConditions.x121Conditions.isVWapBullishOrdered &&
|
||||
conditions.decisionConditions.x121Conditions.isVWapBullishOrdered &&
|
||||
conditions.analyseConditions.x121Conditions.isVWapBullishOrdered)
|
||||
//
|
||||
&&
|
||||
//
|
||||
// State ...
|
||||
(conditions.triggerConditions.x121Conditions.isVWapBullishState &&
|
||||
conditions.decisionConditions.x121Conditions.isVWapBullishState &&
|
||||
conditions.analyseConditions.x121Conditions.isVWapBullishState)
|
||||
//
|
||||
&&
|
||||
//
|
||||
// One of Verification and Consolidation must Be in Direction State ...
|
||||
(conditions.verificationConditions.x121Conditions.isVWapBullishState ||
|
||||
conditions.consolidationConditions.x121Conditions.isVWapBullishState)
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
// Orders ...
|
||||
(conditions.triggerConditions.x121Conditions.isVWapBearishOrdered &&
|
||||
conditions.decisionConditions.x121Conditions.isVWapBearishOrdered &&
|
||||
conditions.analyseConditions.x121Conditions.isVWapBearishOrdered)
|
||||
//
|
||||
&&
|
||||
//
|
||||
// State ...
|
||||
(conditions.triggerConditions.x121Conditions.isVWapBearishState &&
|
||||
conditions.decisionConditions.x121Conditions.isVWapBearishState &&
|
||||
conditions.analyseConditions.x121Conditions.isVWapBearishState)
|
||||
//
|
||||
&&
|
||||
//
|
||||
// One of Verification and Consolidation must Be in Direction State ...
|
||||
(conditions.verificationConditions.x121Conditions.isVWapBearishState ||
|
||||
conditions.consolidationConditions.x121Conditions.isVWapBearishState)
|
||||
//
|
||||
;
|
||||
isBearish =
|
||||
//
|
||||
// Trigger, Decision and Analyse Cycles Must be in Direction Order and State ...
|
||||
//
|
||||
// Orders ...
|
||||
(conditions.triggerConditions.x121Conditions.isVWapBearishOrdered &&
|
||||
conditions.decisionConditions.x121Conditions.isVWapBearishOrdered &&
|
||||
conditions.analyseConditions.x121Conditions.isVWapBearishOrdered)
|
||||
//
|
||||
&&
|
||||
//
|
||||
// State ...
|
||||
(conditions.triggerConditions.x121Conditions.isVWapBearishState &&
|
||||
conditions.decisionConditions.x121Conditions.isVWapBearishState &&
|
||||
conditions.analyseConditions.x121Conditions.isVWapBearishState)
|
||||
//
|
||||
&&
|
||||
//
|
||||
// One of Verification and Consolidation must Be in Direction State ...
|
||||
(conditions.verificationConditions.x121Conditions.isVWapBearishState ||
|
||||
conditions.consolidationConditions.x121Conditions.isVWapBearishState)
|
||||
//
|
||||
;
|
||||
}
|
||||
|
||||
//
|
||||
if (forProvider == X_121_SMC_PROVIDER_VWAPC)
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
result = isBullish ||
|
||||
@@ -914,7 +1167,17 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Detect Candlestic Patters for Signalling ...
|
||||
*
|
||||
* @param forProvider: ENUM_X_121_SMC_PROVIDERS member ...
|
||||
* @param dir: ENUM_X_DIRECTION member Reference ...
|
||||
* @param conditions: X121SMCStrategyConditions instance, Reference ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool DetectCandlestic(
|
||||
ENUM_X_121_SMC_PROVIDERS forProvider,
|
||||
ENUM_X_DIRECTION &dir,
|
||||
X121SMCStrategyConditions &conditions //
|
||||
)
|
||||
@@ -925,14 +1188,18 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
||||
//
|
||||
dir = X_DIRECTION_NONE;
|
||||
|
||||
//
|
||||
string symbol = GetSymbol();
|
||||
ENUM_TIMEFRAMES period = GetPeriod();
|
||||
|
||||
//
|
||||
int cIndex = 1;
|
||||
int pIndex = cIndex + 1;
|
||||
|
||||
//
|
||||
// Select Specified Cycle Helper ...
|
||||
XC121SMCCycleHelper *cycleHelper = mTriggerCycleHelper;
|
||||
|
||||
//
|
||||
string symbol = GetSymbol();
|
||||
ENUM_TIMEFRAMES period = cycleHelper.GetPeriod();
|
||||
|
||||
//
|
||||
XOHCL cBar;
|
||||
result = cBar.Init(
|
||||
@@ -945,6 +1212,38 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Momentum Bar ...
|
||||
ENUM_X_DIRECTION cBarMomentumDir;
|
||||
bool isCBarMomentum = cycleHelper.mBarAnalyser.IsMomentumBar(
|
||||
cBar,
|
||||
cBarMomentumDir //
|
||||
);
|
||||
|
||||
//
|
||||
// Rejection Bar ...
|
||||
ENUM_X_DIRECTION cBarRejectionDir;
|
||||
bool isCBarRejection = cycleHelper.mBarAnalyser.IsRejectionBar(
|
||||
cBar,
|
||||
cBarRejectionDir //
|
||||
);
|
||||
|
||||
//
|
||||
// Engulf Bar ...
|
||||
ENUM_X_DIRECTION cBarEngulfDir;
|
||||
bool isCBarEngulf = cycleHelper.mBarAnalyser.IsEngulfBar(
|
||||
cBar,
|
||||
cBarEngulfDir //
|
||||
);
|
||||
|
||||
//
|
||||
// Pin Bar ...
|
||||
ENUM_X_DIRECTION cBarPinDir;
|
||||
bool isCBarPin = cycleHelper.mBarAnalyser.IsPinBar(
|
||||
cBar,
|
||||
cBarPinDir //
|
||||
);
|
||||
|
||||
//
|
||||
XOHCL pBar;
|
||||
result = pBar.Init(
|
||||
@@ -958,40 +1257,300 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
||||
}
|
||||
|
||||
//
|
||||
ENUM_X_DIRECTION cBarMomentumDir;
|
||||
bool isCBarMomentum = mTriggerCycleHelper.mBarAnalyser.
|
||||
IsMomentumBar(
|
||||
cBar,
|
||||
cBarMomentumDir //
|
||||
// Momentum Bar ...
|
||||
ENUM_X_DIRECTION pBarMomentumDir;
|
||||
bool isPBarMomentum = cycleHelper.mBarAnalyser.IsMomentumBar(
|
||||
pBar,
|
||||
pBarMomentumDir //
|
||||
);
|
||||
|
||||
//
|
||||
ENUM_X_DIRECTION cBarRejectionDir;
|
||||
bool isCBarRejection = mTriggerCycleHelper.mBarAnalyser.
|
||||
IsRejectionBar(
|
||||
cBar,
|
||||
cBarRejectionDir //
|
||||
// Rejection Bar ...
|
||||
ENUM_X_DIRECTION pBarRejectionDir;
|
||||
bool isPBarRejection = cycleHelper.mBarAnalyser.IsRejectionBar(
|
||||
pBar,
|
||||
pBarRejectionDir //
|
||||
);
|
||||
|
||||
//
|
||||
bool isBullish =
|
||||
//
|
||||
// pBar is Rejection and cBar is Momentum ...
|
||||
// pBar is Momentum and cBar is Rejection ...
|
||||
// cBar is Momentum and Rejection ...
|
||||
//
|
||||
//
|
||||
;
|
||||
// Engulf Bar ...
|
||||
ENUM_X_DIRECTION pBarEngulfDir;
|
||||
bool isPBarEngulf = cycleHelper.mBarAnalyser.IsEngulfBar(
|
||||
pBar,
|
||||
pBarEngulfDir //
|
||||
);
|
||||
|
||||
//
|
||||
bool isBearish =
|
||||
// Pin Bar ...
|
||||
ENUM_X_DIRECTION pBarPinDir;
|
||||
bool isPBarPin = cycleHelper.mBarAnalyser.IsPinBar(
|
||||
pBar,
|
||||
pBarPinDir //
|
||||
);
|
||||
|
||||
//
|
||||
bool isBullish = false;
|
||||
bool isBearish = false;
|
||||
|
||||
//
|
||||
if (forProvider == X_121_SMC_PROVIDER_VWAPC)
|
||||
{
|
||||
//
|
||||
// pBar is Rejection and cBar is Momentum ...
|
||||
// pBar is Momentum and cBar is Rejection ...
|
||||
// cBar is Momentum and Rejection ...
|
||||
isBullish =
|
||||
//
|
||||
// pBar is Pin and cBar is Momentum or Rejection or Engulf
|
||||
(
|
||||
//
|
||||
(isPBarPin &&
|
||||
IsBullish(pBarPinDir) &&
|
||||
(
|
||||
//
|
||||
(isCBarMomentum &&
|
||||
IsBullish(cBarMomentumDir))
|
||||
//
|
||||
||
|
||||
//
|
||||
(isCBarRejection &&
|
||||
IsBullish(cBarRejectionDir))
|
||||
//
|
||||
||
|
||||
//
|
||||
(isCBarEngulf &&
|
||||
IsBullish(cBarEngulfDir))
|
||||
//
|
||||
)
|
||||
//
|
||||
)
|
||||
//
|
||||
||
|
||||
//
|
||||
// pBar is Engulf and cBar is Momentum or Rejection or Pin ...
|
||||
(isPBarEngulf &&
|
||||
IsBullish(pBarEngulfDir) &&
|
||||
(
|
||||
//
|
||||
(isCBarMomentum &&
|
||||
IsBullish(cBarMomentumDir))
|
||||
//
|
||||
||
|
||||
//
|
||||
(isCBarRejection &&
|
||||
IsBullish(cBarRejectionDir))
|
||||
//
|
||||
||
|
||||
//
|
||||
(isCBarPin &&
|
||||
IsBullish(cBarPinDir))
|
||||
//
|
||||
)
|
||||
//
|
||||
)
|
||||
//
|
||||
||
|
||||
//
|
||||
// pBar is Rejection and cBar is Momentum or Engulf or Pin ...
|
||||
(isPBarRejection &&
|
||||
IsBullish(pBarRejectionDir) &&
|
||||
(
|
||||
//
|
||||
(isCBarMomentum &&
|
||||
IsBullish(cBarMomentumDir))
|
||||
//
|
||||
||
|
||||
//
|
||||
(isCBarEngulf &&
|
||||
IsBullish(cBarEngulfDir))
|
||||
//
|
||||
||
|
||||
//
|
||||
(isCBarPin &&
|
||||
IsBullish(cBarPinDir))
|
||||
//
|
||||
)
|
||||
//
|
||||
)
|
||||
//
|
||||
||
|
||||
//
|
||||
// pBar is Momentum and cBar is Rejection or Engulf or Pin ...
|
||||
(isPBarMomentum &&
|
||||
IsBullish(pBarMomentumDir) &&
|
||||
(
|
||||
//
|
||||
(isCBarRejection &&
|
||||
IsBullish(cBarRejectionDir))
|
||||
//
|
||||
||
|
||||
//
|
||||
(isCBarEngulf &&
|
||||
IsBullish(cBarEngulfDir))
|
||||
//
|
||||
||
|
||||
//
|
||||
(isCBarPin &&
|
||||
IsBullish(cBarPinDir))
|
||||
//
|
||||
)
|
||||
//
|
||||
)
|
||||
//
|
||||
||
|
||||
//
|
||||
// cBar is Pin and Momentum and Rejection and Engulf ...
|
||||
(
|
||||
//
|
||||
(isCBarPin &&
|
||||
IsBullish(cBarPinDir))
|
||||
//
|
||||
&&
|
||||
//
|
||||
(isCBarMomentum &&
|
||||
IsBullish(cBarMomentumDir))
|
||||
//
|
||||
&&
|
||||
//
|
||||
(isCBarRejection &&
|
||||
IsBullish(cBarRejectionDir))
|
||||
//
|
||||
&&
|
||||
//
|
||||
(isCBarEngulf &&
|
||||
IsBullish(cBarEngulfDir))
|
||||
//
|
||||
)
|
||||
//
|
||||
)
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
//
|
||||
;
|
||||
isBearish =
|
||||
//
|
||||
// pBar is Pin and cBar is Momentum or Rejection or Engulf
|
||||
(
|
||||
//
|
||||
(isPBarPin &&
|
||||
IsBearish(pBarPinDir) &&
|
||||
(
|
||||
//
|
||||
(isCBarMomentum &&
|
||||
IsBearish(cBarMomentumDir))
|
||||
//
|
||||
||
|
||||
//
|
||||
(isCBarRejection &&
|
||||
IsBearish(cBarRejectionDir))
|
||||
//
|
||||
||
|
||||
//
|
||||
(isCBarEngulf &&
|
||||
IsBearish(cBarEngulfDir))
|
||||
//
|
||||
)
|
||||
//
|
||||
)
|
||||
//
|
||||
||
|
||||
//
|
||||
// pBar is Engulf and cBar is Momentum or Rejection or Pin ...
|
||||
(isPBarEngulf &&
|
||||
IsBearish(pBarEngulfDir) &&
|
||||
(
|
||||
//
|
||||
(isCBarMomentum &&
|
||||
IsBearish(cBarMomentumDir))
|
||||
//
|
||||
||
|
||||
//
|
||||
(isCBarRejection &&
|
||||
IsBearish(cBarRejectionDir))
|
||||
//
|
||||
||
|
||||
//
|
||||
(isCBarPin &&
|
||||
IsBearish(cBarPinDir))
|
||||
//
|
||||
)
|
||||
//
|
||||
)
|
||||
//
|
||||
||
|
||||
//
|
||||
// pBar is Rejection and cBar is Momentum or Engulf or Pin ...
|
||||
(isPBarRejection &&
|
||||
IsBearish(pBarRejectionDir) &&
|
||||
(
|
||||
//
|
||||
(isCBarMomentum &&
|
||||
IsBearish(cBarMomentumDir))
|
||||
//
|
||||
||
|
||||
//
|
||||
(isCBarEngulf &&
|
||||
IsBearish(cBarEngulfDir))
|
||||
//
|
||||
||
|
||||
//
|
||||
(isCBarPin &&
|
||||
IsBearish(cBarPinDir))
|
||||
//
|
||||
)
|
||||
//
|
||||
)
|
||||
//
|
||||
||
|
||||
//
|
||||
// pBar is Momentum and cBar is Rejection or Engulf or Pin ...
|
||||
(isPBarMomentum &&
|
||||
IsBearish(pBarMomentumDir) &&
|
||||
(
|
||||
//
|
||||
(isCBarRejection &&
|
||||
IsBearish(cBarRejectionDir))
|
||||
//
|
||||
||
|
||||
//
|
||||
(isCBarEngulf &&
|
||||
IsBearish(cBarEngulfDir))
|
||||
//
|
||||
||
|
||||
//
|
||||
(isCBarPin &&
|
||||
IsBearish(cBarPinDir))
|
||||
//
|
||||
)
|
||||
//
|
||||
)
|
||||
//
|
||||
||
|
||||
//
|
||||
// cBar is Pin and Momentum and Rejection and Engulf ...
|
||||
(
|
||||
//
|
||||
(isCBarPin &&
|
||||
IsBearish(cBarPinDir))
|
||||
//
|
||||
&&
|
||||
//
|
||||
(isCBarMomentum &&
|
||||
IsBearish(cBarMomentumDir))
|
||||
//
|
||||
&&
|
||||
//
|
||||
(isCBarRejection &&
|
||||
IsBearish(cBarRejectionDir))
|
||||
//
|
||||
&&
|
||||
//
|
||||
(isCBarEngulf &&
|
||||
IsBearish(cBarEngulfDir))
|
||||
//
|
||||
)
|
||||
//
|
||||
)
|
||||
//
|
||||
;
|
||||
}
|
||||
|
||||
//
|
||||
result = isBullish ||
|
||||
|
||||
Reference in New Issue
Block a user