last ...
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
|
||||
//
|
||||
// OPEN ...
|
||||
double triggerDonOpenUpper = triggerConditions.x121Conditions.donOpenUpperBuffer[1];
|
||||
double triggerDonOpenLower = triggerConditions.x121Conditions.donOpenLowerBuffer[1];
|
||||
double triggerDonOpenUpperPrev = triggerConditions.x121Conditions.donOpenUpperBuffer[2];
|
||||
double triggerDonOpenLowerPrev = triggerConditions.x121Conditions.donOpenLowerBuffer[2];
|
||||
|
||||
//
|
||||
// HIGH ...
|
||||
double triggerDonHighUpper = triggerConditions.x121Conditions.donHighUpperBuffer[1];
|
||||
double triggerDonHighLower = triggerConditions.x121Conditions.donHighLowerBuffer[1];
|
||||
double triggerDonHighUpperPrev = triggerConditions.x121Conditions.donHighUpperBuffer[2];
|
||||
double triggerDonHighLowerPrev = triggerConditions.x121Conditions.donHighLowerBuffer[2];
|
||||
|
||||
//
|
||||
// CLOSE ...
|
||||
double triggerDonCloseUpper = triggerConditions.x121Conditions.donCloseUpperBuffer[1];
|
||||
double triggerDonCloseLower = triggerConditions.x121Conditions.donCloseLowerBuffer[1];
|
||||
double triggerDonCloseUpperPrev = triggerConditions.x121Conditions.donCloseUpperBuffer[2];
|
||||
double triggerDonCloseLowerPrev = triggerConditions.x121Conditions.donCloseLowerBuffer[2];
|
||||
|
||||
//
|
||||
// LOW ...
|
||||
double triggerDonLowUpper = triggerConditions.x121Conditions.donLowUpperBuffer[1];
|
||||
double triggerDonLowLower = triggerConditions.x121Conditions.donLowLowerBuffer[1];
|
||||
double triggerDonLowUpperPrev = triggerConditions.x121Conditions.donLowUpperBuffer[2];
|
||||
double triggerDonLowLowerPrev = triggerConditions.x121Conditions.donLowLowerBuffer[2];
|
||||
|
||||
//
|
||||
// Calculate PBar Rejected Don Upper and Lower ...
|
||||
|
||||
//
|
||||
bool isPBarRejectDonLowUpper = pBar.high > triggerDonLowUpperPrev;
|
||||
bool isPBarRejectDonOpenUpper = pBar.high > triggerDonOpenUpperPrev;
|
||||
bool isPBarRejectDonCloseUpper = pBar.high > triggerDonCloseUpperPrev;
|
||||
bool isPBarRejectedDonUpper = isPBarRejectDonLowUpper ||
|
||||
isPBarRejectDonOpenUpper ||
|
||||
isPBarRejectDonCloseUpper;
|
||||
|
||||
//
|
||||
bool isPBarRejectDonHighLower = pBar.low < triggerDonHighLowerPrev;
|
||||
bool isPBarRejectDonOpenLower = pBar.low < triggerDonOpenLowerPrev;
|
||||
bool isPBarRejectDonCloseLower = pBar.low < triggerDonCloseLowerPrev;
|
||||
bool isPBarRejectedDonLower = isPBarRejectDonHighLower ||
|
||||
isPBarRejectDonOpenLower ||
|
||||
isPBarRejectDonCloseLower;
|
||||
|
||||
//
|
||||
// Calculate PBar Breaked Don Upper and Lower ...
|
||||
|
||||
//
|
||||
bool isPBarBreakdDonLowUpper = pBar.GetUp() > triggerDonLowUpperPrev &&
|
||||
pBar.GetDown() < triggerDonLowUpperPrev;
|
||||
bool isPBarBreakdDonOpenUpper = pBar.GetUp() > triggerDonOpenUpperPrev &&
|
||||
pBar.GetDown() < triggerDonOpenUpperPrev;
|
||||
bool isPBarBreakdDonCloseUpper = pBar.GetUp() > triggerDonCloseUpperPrev &&
|
||||
pBar.GetDown() < triggerDonCloseUpperPrev;
|
||||
bool isPBarBreakedDonUpper = isPBarBreakdDonLowUpper ||
|
||||
isPBarBreakdDonOpenUpper ||
|
||||
isPBarBreakdDonCloseUpper;
|
||||
|
||||
//
|
||||
bool isPBarBreakdDonHighLower = pBar.GetUp() > triggerDonHighLowerPrev &&
|
||||
pBar.GetDown() < triggerDonHighLowerPrev;
|
||||
bool isPBarBreakdDonOpenLower = pBar.GetUp() > triggerDonOpenLowerPrev &&
|
||||
pBar.GetDown() < triggerDonOpenLowerPrev;
|
||||
bool isPBarBreakdDonCloseLower = pBar.GetUp() > triggerDonCloseLowerPrev &&
|
||||
pBar.GetDown() < triggerDonCloseLowerPrev;
|
||||
bool isPBarBreakedDonLower = isPBarBreakdDonHighLower ||
|
||||
isPBarBreakdDonOpenLower ||
|
||||
isPBarBreakdDonCloseLower;
|
||||
|
||||
//
|
||||
bool isRejectTriggerDonUpper =
|
||||
//
|
||||
// PBar ...
|
||||
isPBarBearishRejected &&
|
||||
isPBarRejectedDonUpper &&
|
||||
//
|
||||
// CBar ...
|
||||
isCBarBearishMomentumBar &&
|
||||
cBar.close < triggerDonLowUpper &&
|
||||
//
|
||||
triggerPeak == triggerDonHighUpper
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
bool isRejectTriggerDonLower =
|
||||
//
|
||||
// PBar ...
|
||||
isPBarBullishRejected &&
|
||||
isPBarRejectedDonLower &&
|
||||
//
|
||||
// CBar ...
|
||||
isCBarBullishMomentumBar &&
|
||||
cBar.close > triggerDonHighLower &&
|
||||
//
|
||||
triggerVale == triggerDonLowLower
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
if (isRejectTriggerDonUpper ||
|
||||
isRejectTriggerDonLower)
|
||||
{
|
||||
Print("Don Rejected ...");
|
||||
}
|
||||
|
||||
//
|
||||
bool isBreakedDonUpper =
|
||||
//
|
||||
false
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
bool isBreakedDonLower =
|
||||
//
|
||||
false
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
bool isEngulfedDonUpper =
|
||||
//
|
||||
false
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
bool isEngulfedDonLower =
|
||||
//
|
||||
false
|
||||
//
|
||||
;
|
||||
@@ -1023,9 +1023,9 @@ class XC121SMCExpert : public XCBaseExpert
|
||||
//
|
||||
// Initialize Trade Handler ...
|
||||
mTradeHandler = new XC121SMCTradeHandler(mTrader);
|
||||
mTradeHandler.SaveTrades(true);
|
||||
mTradeHandler.SaveSignals(true);
|
||||
mTradeHandler.SaveConditions(true);
|
||||
mTradeHandler.SaveTrades(false);
|
||||
mTradeHandler.SaveSignals(false);
|
||||
mTradeHandler.SaveConditions(false);
|
||||
|
||||
//
|
||||
ReConfigureTradeHandler();
|
||||
|
||||
@@ -700,7 +700,7 @@ bool DetectX121SMCXTWPVSiganlSetup(
|
||||
//
|
||||
// Detect Trend Based On Peaks and Vales ...
|
||||
ENUM_X_DIRECTION trend;
|
||||
bool hasTrend = analyseCycleHelper
|
||||
bool hasTrend = triggerCycleHelper
|
||||
.HasPVDirection(trend);
|
||||
bool hasBullishTrend = hasTrend &&
|
||||
IsBullish(trend);
|
||||
@@ -972,6 +972,16 @@ bool DetectX121SMCXTWPVSiganlSetup(
|
||||
double triggerPeak = triggerConditions.x121Conditions.peaksBuffer[1];
|
||||
double triggerVale = triggerConditions.x121Conditions.valesBuffer[1];
|
||||
|
||||
//
|
||||
bool isNewTriggerPeak = triggerConditions.x121Conditions.isNewPeak;
|
||||
bool isNewTriggerPeakOverLast = triggerConditions.x121Conditions.isNewPeakOverLast;
|
||||
bool isNewTriggerPeakUnderLast = triggerConditions.x121Conditions.isNewPeakUnderLast;
|
||||
|
||||
//
|
||||
bool isNewTriggerVale = triggerConditions.x121Conditions.isNewVale;
|
||||
bool isNewTriggerValeOverLast = triggerConditions.x121Conditions.isNewValeOverLast;
|
||||
bool isNewTriggerValeUnderLast = triggerConditions.x121Conditions.isNewValeUnderLast;
|
||||
|
||||
//
|
||||
int condition2MinPVDiffPoint = 30;
|
||||
bool isAnalysePeakDiffPointPassed = analysePeakDiff >= (condition2MinPVDiffPoint * points);
|
||||
@@ -1025,117 +1035,32 @@ bool DetectX121SMCXTWPVSiganlSetup(
|
||||
double triggerDonLowLowerPrev = triggerConditions.x121Conditions.donLowLowerBuffer[2];
|
||||
|
||||
//
|
||||
// Calculate PBar Rejected Don Upper and Lower ...
|
||||
double triggerAtr = triggerConditions.x121Conditions.atrBuffer[1];
|
||||
double triggerUpperAtr = triggerConditions.x121Conditions.atrUpperBuffer[1];
|
||||
double triggerLowerAtr = triggerConditions.x121Conditions.atrLowerBuffer[1];
|
||||
|
||||
//
|
||||
bool isPBarRejectDonLowUpper = pBar.high > triggerDonLowUpperPrev;
|
||||
bool isPBarRejectDonOpenUpper = pBar.high > triggerDonOpenUpperPrev;
|
||||
bool isPBarRejectDonCloseUpper = pBar.high > triggerDonCloseUpperPrev;
|
||||
bool isPBarRejectedDonUpper = isPBarRejectDonLowUpper ||
|
||||
isPBarRejectDonOpenUpper ||
|
||||
isPBarRejectDonCloseUpper;
|
||||
|
||||
//
|
||||
bool isPBarRejectDonHighLower = pBar.low < triggerDonHighLowerPrev;
|
||||
bool isPBarRejectDonOpenLower = pBar.low < triggerDonOpenLowerPrev;
|
||||
bool isPBarRejectDonCloseLower = pBar.low < triggerDonCloseLowerPrev;
|
||||
bool isPBarRejectedDonLower = isPBarRejectDonHighLower ||
|
||||
isPBarRejectDonOpenLower ||
|
||||
isPBarRejectDonCloseLower;
|
||||
|
||||
//
|
||||
// Calculate PBar Breaked Don Upper and Lower ...
|
||||
|
||||
//
|
||||
bool isPBarBreakdDonLowUpper = pBar.GetUp() > triggerDonLowUpperPrev &&
|
||||
pBar.GetDown() < triggerDonLowUpperPrev;
|
||||
bool isPBarBreakdDonOpenUpper = pBar.GetUp() > triggerDonOpenUpperPrev &&
|
||||
pBar.GetDown() < triggerDonOpenUpperPrev;
|
||||
bool isPBarBreakdDonCloseUpper = pBar.GetUp() > triggerDonCloseUpperPrev &&
|
||||
pBar.GetDown() < triggerDonCloseUpperPrev;
|
||||
bool isPBarBreakedDonUpper = isPBarBreakdDonLowUpper ||
|
||||
isPBarBreakdDonOpenUpper ||
|
||||
isPBarBreakdDonCloseUpper;
|
||||
|
||||
//
|
||||
bool isPBarBreakdDonHighLower = pBar.GetUp() > triggerDonHighLowerPrev &&
|
||||
pBar.GetDown() < triggerDonHighLowerPrev;
|
||||
bool isPBarBreakdDonOpenLower = pBar.GetUp() > triggerDonOpenLowerPrev &&
|
||||
pBar.GetDown() < triggerDonOpenLowerPrev;
|
||||
bool isPBarBreakdDonCloseLower = pBar.GetUp() > triggerDonCloseLowerPrev &&
|
||||
pBar.GetDown() < triggerDonCloseLowerPrev;
|
||||
bool isPBarBreakedDonLower = isPBarBreakdDonHighLower ||
|
||||
isPBarBreakdDonOpenLower ||
|
||||
isPBarBreakdDonCloseLower;
|
||||
|
||||
//
|
||||
bool isRejectDonUpper =
|
||||
bool isNewTriggerPeakOverAtrUpper =
|
||||
//
|
||||
// PBar ...
|
||||
isPBarBearishRejected &&
|
||||
isPBarRejectedDonUpper &&
|
||||
//
|
||||
// CBar ...
|
||||
isCBarBearishMomentumBar &&
|
||||
cBar.close < triggerDonLowUpper &&
|
||||
//
|
||||
triggerPeak == triggerDonHighUpper &&
|
||||
//
|
||||
true
|
||||
isNewTriggerPeak &&
|
||||
triggerPeak > triggerUpperAtr
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
bool isRejectDonLower =
|
||||
bool isNewTriggerValeUnderAtrLower =
|
||||
//
|
||||
// PBar ...
|
||||
isPBarBullishRejected &&
|
||||
isPBarRejectedDonLower &&
|
||||
//
|
||||
// CBar ...
|
||||
isCBarBullishMomentumBar &&
|
||||
cBar.close > triggerDonHighLower &&
|
||||
//
|
||||
triggerVale == triggerDonLowLower &&
|
||||
//
|
||||
true
|
||||
//
|
||||
;
|
||||
|
||||
// //
|
||||
// if (isRejectDonUpper ||
|
||||
// isRejectDonLower)
|
||||
// {
|
||||
// Print("Don Rejected ...");
|
||||
// }
|
||||
|
||||
//
|
||||
bool isBreakedDonUpper =
|
||||
//
|
||||
false
|
||||
isNewTriggerVale &&
|
||||
triggerVale < triggerLowerAtr
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
bool isBreakedDonLower =
|
||||
//
|
||||
false
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
bool isEngulfedDonUpper =
|
||||
//
|
||||
false
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
bool isEngulfedDonLower =
|
||||
//
|
||||
false
|
||||
//
|
||||
;
|
||||
if (isNewTriggerPeakOverAtrUpper ||
|
||||
isNewTriggerValeUnderAtrLower)
|
||||
{
|
||||
Print("ATR Break ...");
|
||||
}
|
||||
|
||||
//
|
||||
// Method 1 ...
|
||||
@@ -1144,7 +1069,7 @@ bool DetectX121SMCXTWPVSiganlSetup(
|
||||
// Bullish Conditions 1 ...
|
||||
bool bullishConditions1 =
|
||||
//
|
||||
// false &&
|
||||
false &&
|
||||
hasBullishTrend &&
|
||||
isBullishFiboPassed &&
|
||||
hasConsolidationZone &&
|
||||
@@ -1166,7 +1091,7 @@ bool DetectX121SMCXTWPVSiganlSetup(
|
||||
// Bearish Conditions 1 ...
|
||||
bool bearishConditions1 =
|
||||
//
|
||||
// false &&
|
||||
false &&
|
||||
hasBearishTrend &&
|
||||
isBearishFiboPassed &&
|
||||
hasConsolidationZone &&
|
||||
|
||||
@@ -266,9 +266,10 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
||||
|
||||
//
|
||||
bool canReplaceTarget =
|
||||
hasLong
|
||||
? signal.target > signal.tp
|
||||
: signal.target < signal.tp;
|
||||
signal.target > 0 &&
|
||||
(hasLong
|
||||
? signal.target > signal.tp
|
||||
: signal.target < signal.tp);
|
||||
if (canReplaceTarget)
|
||||
{
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user