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 ...
|
// Initialize Trade Handler ...
|
||||||
mTradeHandler = new XC121SMCTradeHandler(mTrader);
|
mTradeHandler = new XC121SMCTradeHandler(mTrader);
|
||||||
mTradeHandler.SaveTrades(true);
|
mTradeHandler.SaveTrades(false);
|
||||||
mTradeHandler.SaveSignals(true);
|
mTradeHandler.SaveSignals(false);
|
||||||
mTradeHandler.SaveConditions(true);
|
mTradeHandler.SaveConditions(false);
|
||||||
|
|
||||||
//
|
//
|
||||||
ReConfigureTradeHandler();
|
ReConfigureTradeHandler();
|
||||||
|
|||||||
@@ -700,7 +700,7 @@ bool DetectX121SMCXTWPVSiganlSetup(
|
|||||||
//
|
//
|
||||||
// Detect Trend Based On Peaks and Vales ...
|
// Detect Trend Based On Peaks and Vales ...
|
||||||
ENUM_X_DIRECTION trend;
|
ENUM_X_DIRECTION trend;
|
||||||
bool hasTrend = analyseCycleHelper
|
bool hasTrend = triggerCycleHelper
|
||||||
.HasPVDirection(trend);
|
.HasPVDirection(trend);
|
||||||
bool hasBullishTrend = hasTrend &&
|
bool hasBullishTrend = hasTrend &&
|
||||||
IsBullish(trend);
|
IsBullish(trend);
|
||||||
@@ -972,6 +972,16 @@ bool DetectX121SMCXTWPVSiganlSetup(
|
|||||||
double triggerPeak = triggerConditions.x121Conditions.peaksBuffer[1];
|
double triggerPeak = triggerConditions.x121Conditions.peaksBuffer[1];
|
||||||
double triggerVale = triggerConditions.x121Conditions.valesBuffer[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;
|
int condition2MinPVDiffPoint = 30;
|
||||||
bool isAnalysePeakDiffPointPassed = analysePeakDiff >= (condition2MinPVDiffPoint * points);
|
bool isAnalysePeakDiffPointPassed = analysePeakDiff >= (condition2MinPVDiffPoint * points);
|
||||||
@@ -1025,117 +1035,32 @@ bool DetectX121SMCXTWPVSiganlSetup(
|
|||||||
double triggerDonLowLowerPrev = triggerConditions.x121Conditions.donLowLowerBuffer[2];
|
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 isNewTriggerPeakOverAtrUpper =
|
||||||
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 =
|
|
||||||
//
|
//
|
||||||
// PBar ...
|
isNewTriggerPeak &&
|
||||||
isPBarBearishRejected &&
|
triggerPeak > triggerUpperAtr
|
||||||
isPBarRejectedDonUpper &&
|
|
||||||
//
|
|
||||||
// CBar ...
|
|
||||||
isCBarBearishMomentumBar &&
|
|
||||||
cBar.close < triggerDonLowUpper &&
|
|
||||||
//
|
|
||||||
triggerPeak == triggerDonHighUpper &&
|
|
||||||
//
|
|
||||||
true
|
|
||||||
//
|
//
|
||||||
;
|
;
|
||||||
|
|
||||||
//
|
//
|
||||||
bool isRejectDonLower =
|
bool isNewTriggerValeUnderAtrLower =
|
||||||
//
|
//
|
||||||
// PBar ...
|
isNewTriggerVale &&
|
||||||
isPBarBullishRejected &&
|
triggerVale < triggerLowerAtr
|
||||||
isPBarRejectedDonLower &&
|
|
||||||
//
|
|
||||||
// CBar ...
|
|
||||||
isCBarBullishMomentumBar &&
|
|
||||||
cBar.close > triggerDonHighLower &&
|
|
||||||
//
|
|
||||||
triggerVale == triggerDonLowLower &&
|
|
||||||
//
|
|
||||||
true
|
|
||||||
//
|
|
||||||
;
|
|
||||||
|
|
||||||
// //
|
|
||||||
// if (isRejectDonUpper ||
|
|
||||||
// isRejectDonLower)
|
|
||||||
// {
|
|
||||||
// Print("Don Rejected ...");
|
|
||||||
// }
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isBreakedDonUpper =
|
|
||||||
//
|
|
||||||
false
|
|
||||||
//
|
//
|
||||||
;
|
;
|
||||||
|
|
||||||
//
|
//
|
||||||
bool isBreakedDonLower =
|
if (isNewTriggerPeakOverAtrUpper ||
|
||||||
//
|
isNewTriggerValeUnderAtrLower)
|
||||||
false
|
{
|
||||||
//
|
Print("ATR Break ...");
|
||||||
;
|
}
|
||||||
|
|
||||||
//
|
|
||||||
bool isEngulfedDonUpper =
|
|
||||||
//
|
|
||||||
false
|
|
||||||
//
|
|
||||||
;
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isEngulfedDonLower =
|
|
||||||
//
|
|
||||||
false
|
|
||||||
//
|
|
||||||
;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Method 1 ...
|
// Method 1 ...
|
||||||
@@ -1144,7 +1069,7 @@ bool DetectX121SMCXTWPVSiganlSetup(
|
|||||||
// Bullish Conditions 1 ...
|
// Bullish Conditions 1 ...
|
||||||
bool bullishConditions1 =
|
bool bullishConditions1 =
|
||||||
//
|
//
|
||||||
// false &&
|
false &&
|
||||||
hasBullishTrend &&
|
hasBullishTrend &&
|
||||||
isBullishFiboPassed &&
|
isBullishFiboPassed &&
|
||||||
hasConsolidationZone &&
|
hasConsolidationZone &&
|
||||||
@@ -1166,7 +1091,7 @@ bool DetectX121SMCXTWPVSiganlSetup(
|
|||||||
// Bearish Conditions 1 ...
|
// Bearish Conditions 1 ...
|
||||||
bool bearishConditions1 =
|
bool bearishConditions1 =
|
||||||
//
|
//
|
||||||
// false &&
|
false &&
|
||||||
hasBearishTrend &&
|
hasBearishTrend &&
|
||||||
isBearishFiboPassed &&
|
isBearishFiboPassed &&
|
||||||
hasConsolidationZone &&
|
hasConsolidationZone &&
|
||||||
|
|||||||
@@ -266,9 +266,10 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
|||||||
|
|
||||||
//
|
//
|
||||||
bool canReplaceTarget =
|
bool canReplaceTarget =
|
||||||
hasLong
|
signal.target > 0 &&
|
||||||
? signal.target > signal.tp
|
(hasLong
|
||||||
: signal.target < signal.tp;
|
? signal.target > signal.tp
|
||||||
|
: signal.target < signal.tp);
|
||||||
if (canReplaceTarget)
|
if (canReplaceTarget)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
|||||||
Reference in New Issue
Block a user