This commit is contained in:
2024-07-17 19:23:17 +03:30
parent 3294ea9f21
commit b4bc3774b0
6 changed files with 1355 additions and 131 deletions
+1 -1
View File
@@ -6411,7 +6411,7 @@ bool CalculateTPSLByPoint(
}
//
bool CalculateTPSLBtPrice(
bool CalculateTPSLByPrice(
double &mSL, // Hold SL
double &mTP, // Hold TP
ENUM_POSITION_TYPE mType, // Position Type Long (Buy) / Short (Sell)
+745 -28
View File
@@ -26,6 +26,693 @@
//
// Definitions ...
string XTLSHammerToken = "XHammer";
string XTLSSupportToken = "XSupport";
string XTLSSwingLowToken = "XSwingLow";
string XTLSSwingHighToken = "XSwingHigh";
string XTLSResistanceToken = "XResistance";
string XTLSBullishFVGToken = "XBullishFVG";
string XTLSBearishFVGToken = "XBearishFVG";
string XTLSMorningStarToken = "XMorningStar";
string XTLSEveningStarToken = "XEveningStar";
string XTLSShootingStarToken = "XShootingStar";
string XTLSBullishTrendToken = "XBullishTrend";
string XTLSBearishTrendToken = "XBearishTrend";
string XTLSBullishEngulfingToken = "XBullishEngulfing";
string XTLSBearishEngulfingToken = "XBearishEngulfing";
string XTLSBullishOrderBlockToken = "XBullishOrderBlock";
string XTLSBearishOrderBlockToken = "XBearishOrderBlock";
//
// Helper Tools ...
//
bool IsSupportBreaked(
XOHCL &bar, // Support Bar
bool _verifyPressure = true, // Verify Candlestick Patterns for Prove Pressure
bool checkShootingStar = true, // Check Shooting Star Pattern for Pressure Verifications
bool checkEveningStar = true, // Check Evening Star Pattern for Pressure Verifications
bool checkBearishEngulfingStar = true, // Check Bearish Engulfing Pattern for Pressure Verifications
double _threshold = 0, // Upper and Lower threshold of Pivot
double _breakVerificationPoint = 15, // Price Distance for Verify Pivot Break
int _loopback = 3 // Verification Loopback
)
{
//
bool result = false;
//
if (_breakVerificationPoint < 0)
{
_breakVerificationPoint = 15;
}
//
result = bar.IsValid();
if (!result)
{
return result;
}
//
double points = GetPoints(bar.symbol);
//
double threshold = 0;
if (_threshold > 0)
{
threshold = _threshold * points;
}
//
double price = GetBid(bar.symbol);
//
// Check Price is Below of Support High ...
result = price < bar.high + threshold;
if (!result)
{
return result;
}
//
// Check Break Verification ...
if (_breakVerificationPoint > 0)
{
//
result = (bar.high + threshold) - price >= _breakVerificationPoint * points;
if (!result)
{
return result;
}
}
//
if (_verifyPressure && _loopback > 0)
{
//
// Verify Pressure by Candlestick Patterns ...
// We need last 3 Candle ...
//
for (int i = 0; i < _loopback; i++)
{
//
XOHCL iBar;
result = iBar.Init(
bar.symbol,
bar.period,
i //
);
if (!result)
{
break;
}
//
// Shooting Star ...
bool isShootingStar = !checkShootingStar
? false
: iBar.IsShootingStar();
if (isShootingStar)
{
//
DrawShootingStar(
iBar,
ChartID() //
);
}
//
// Evening Star ...
bool isEveningStar = !checkEveningStar
? false
: iBar.IsEveningStar();
if (isEveningStar)
{
//
DrawEveningStar(
iBar,
ChartID() //
);
}
//
// BearishEngulfing ...
bool isBearishEngulfing = !checkBearishEngulfingStar
? false
: iBar.IsBearishEngulfing();
if (isBearishEngulfing)
{
//
DrawBearishEngulfing(
iBar,
ChartID() //
);
}
//
result =
//
isShootingStar
//
||
//
isEveningStar
//
||
//
isBearishEngulfing
//
;
if (result)
{
break;
}
}
}
//
return result;
}
//
bool IsSupportRejected(
XOHCL &bar, // Support Bar
bool _verifyPressure = true, // Verify Candlestick Patterns for Prove Pressure
bool checkHammer = true, // Check Hammer Pattern for Pressure Verifications
bool checkMorningStar = true, // Check Morning Star Pattern for Pressure Verifications
bool checkBullishEngulfing = true, // Check Bullish Engulfing Pattern for Pressure Verifications
double _threshold = 0, // Upper and Lower threshold of Pivot
double _breakVerificationPoint = 15, // Price Distance for Verify Pivot Break
int _loopback = 3 // Verification Loopback
)
{
//
bool result = false;
//
if (_breakVerificationPoint < 0)
{
_breakVerificationPoint = 15;
}
//
result = bar.IsValid();
if (!result)
{
return result;
}
//
double points = GetPoints(bar.symbol);
//
double threshold = 0;
if (_threshold > 0)
{
threshold = _threshold * points;
}
//
double price = GetBid(bar.symbol);
//
XOHCL cBar;
result = cBar.Init(
bar.symbol,
bar.period,
0 //
);
if (!result)
{
return result;
}
//
double ll2 = cBar.FindLowest(
2,
MODE_LOW //
);
//
// Check Price is Below of Support High ...
result =
//
price > bar.high + threshold &&
(
//
ll2 < bar.high
//
||
//
ll2 < bar.high - threshold
//
||
//
(threshold > 0 && MathAbs(ll2 - price) > 0 && MathAbs(ll2 - price) <= threshold)
//
)
//
;
if (!result)
{
return result;
}
//
// Check Break Verification ...
if (_breakVerificationPoint > 0)
{
//
result = MathAbs((bar.high + threshold) - price) >= _breakVerificationPoint * points;
if (!result)
{
return result;
}
}
//
if (_verifyPressure && _loopback > 0)
{
//
// Verify Pressure by Candlestick Patterns ...
// We need last 3 Candle ...
//
for (int i = 0; i < _loopback; i++)
{
//
XOHCL iBar;
result = iBar.Init(
bar.symbol,
bar.period,
i //
);
if (!result)
{
break;
}
//
// Hammer ...
bool isHammer = !checkHammer
? false
: iBar.IsHammer();
if (isHammer)
{
//
DrawHammer(
iBar,
ChartID() //
);
}
//
// Morning Star ...
bool isMorningStar = !checkMorningStar
? false
: iBar.IsMorningStar();
if (isMorningStar)
{
//
DrawMorningStar(
iBar,
ChartID() //
);
}
//
// BullishEngulfing ...
bool isBullishEngulfing = !checkBullishEngulfing
? false
: iBar.IsBullishEngulfing();
if (isBullishEngulfing)
{
//
DrawBullishEngulfing(
iBar,
ChartID() //
);
}
//
result =
//
isHammer
//
||
//
isMorningStar
//
||
//
isBullishEngulfing
//
;
if (result)
{
break;
}
}
}
//
return result;
}
//
bool IsResistanceBreaked(
XOHCL &bar, // Resistance Bar
bool _verifyPressure = true, // Verify Candlestick Patterns for Prove Pressure
bool checkHammer = true, // Check Hammer Pattern for Pressure Verifications
bool checkMorningStar = true, // Check Morning Star Pattern for Pressure Verifications
bool checkBullishEngulfing = true, // Check Bullish Engulfing Pattern for Pressure Verifications
double _threshold = 0, // Upper and Lower threshold of Pivot
double _breakVerificationPoint = 15, // Price Distance for Verify Pivot Break
int _loopback = 3 // Verification Loopback
)
{
//
bool result = false;
//
if (_breakVerificationPoint < 0)
{
_breakVerificationPoint = 15;
}
//
result = bar.IsValid();
if (!result)
{
return result;
}
//
double points = GetPoints(bar.symbol);
//
double threshold = 0;
if (_threshold > 0)
{
threshold = _threshold * points;
}
//
double price = GetBid(bar.symbol);
//
// Check Price is Below of Support High ...
result = price > bar.low - threshold;
if (!result)
{
return result;
}
//
// Check Break Verification ...
if (_breakVerificationPoint > 0)
{
//
result = price - (bar.low - threshold) >= _breakVerificationPoint * points;
if (!result)
{
return result;
}
}
//
if (_verifyPressure && _loopback > 0)
{
//
// Verify Pressure by Candlestick Patterns ...
// We need last 3 Candle ...
//
for (int i = 0; i < _loopback; i++)
{
//
XOHCL iBar;
result = iBar.Init(
bar.symbol,
bar.period,
i //
);
if (!result)
{
break;
}
//
// Hammer ...
bool isHammer = !checkHammer
? false
: iBar.IsHammer();
if (isHammer)
{
//
DrawHammer(
iBar,
ChartID() //
);
}
//
// Morning Star ...
bool isMorningStar = !checkMorningStar
? false
: iBar.IsMorningStar();
if (isMorningStar)
{
//
DrawMorningStar(
iBar,
ChartID() //
);
}
//
// BullishEngulfing ...
bool isBullishEngulfing = !checkBullishEngulfing
? false
: iBar.IsBullishEngulfing();
if (isBullishEngulfing)
{
//
DrawBullishEngulfing(
iBar,
ChartID() //
);
}
//
result =
//
isHammer
//
||
//
isMorningStar
//
||
//
isBullishEngulfing
//
;
if (result)
{
break;
}
}
}
//
return result;
}
//
bool IsResistanceRejected(
XOHCL &bar, // Resistance Bar
bool _verifyPressure = true, // Verify Candlestick Patterns for Prove Pressure
bool checkShootingStar = true, // Check Shooting Star Pattern for Pressure Verifications
bool checkEveningStar = true, // Check Evening Star Pattern for Pressure Verifications
bool checkBearishEngulfingStar = true, // Check Bearish Engulfing Pattern for Pressure Verifications
double _threshold = 0, // Upper and Lower threshold of Pivot
double _breakVerificationPoint = 15, // Price Distance for Verify Pivot Break
int _loopback = 3 // Verification Loopback
)
{
//
bool result = false;
//
if (_breakVerificationPoint < 0)
{
_breakVerificationPoint = 15;
}
//
result = bar.IsValid();
if (!result)
{
return result;
}
//
double points = GetPoints(bar.symbol);
//
double threshold = 0;
if (_threshold > 0)
{
threshold = _threshold * points;
}
//
double price = GetBid(bar.symbol);
//
XOHCL cBar;
result = cBar.Init(
bar.symbol,
bar.period,
0 //
);
if (!result)
{
return result;
}
//
double hh2 = cBar.FindHighest(
2,
MODE_HIGH //
);
//
// Check Price is Below of Support High ...
result =
//
price < bar.low - threshold &&
(
//
hh2 > bar.low
//
||
//
hh2 > bar.low - threshold
//
||
//
(threshold > 0 && MathAbs(hh2 - price) > 0 && MathAbs(hh2 - price) <= threshold))
//
;
if (!result)
{
return result;
}
//
// Check Break Verification ...
if (_breakVerificationPoint > 0)
{
//
result = MathAbs((bar.low - threshold) - price) >= _breakVerificationPoint * points;
if (!result)
{
return result;
}
}
//
if (_verifyPressure && _loopback > 0)
{
//
// Verify Pressure by Candlestick Patterns ...
// We need last 3 Candle ...
//
for (int i = 0; i < _loopback; i++)
{
//
XOHCL iBar;
result = iBar.Init(
bar.symbol,
bar.period,
i //
);
if (!result)
{
break;
}
//
// Shooting Star ...
bool isShootingStar = !checkShootingStar
? false
: iBar.IsShootingStar();
if (isShootingStar)
{
//
DrawShootingStar(
iBar,
ChartID() //
);
}
//
// Evening Star ...
bool isEveningStar = !checkEveningStar
? false
: iBar.IsEveningStar();
if (isEveningStar)
{
//
DrawEveningStar(
iBar,
ChartID() //
);
}
//
// BearishEngulfing ...
bool isBearishEngulfing = !checkBearishEngulfingStar
? false
: iBar.IsBearishEngulfing();
if (isBearishEngulfing)
{
//
DrawBearishEngulfing(
iBar,
ChartID() //
);
}
//
result =
//
isShootingStar
//
||
//
isEveningStar
//
||
//
isBearishEngulfing
//
;
if (result)
{
break;
}
}
}
//
return result;
}
//
// Drawing Tools ...
@@ -36,7 +723,7 @@
//
string GetHammerTag(XOHCL &bar)
{
return "Hammer-" + GetBarTimeTag(bar);
return XTLSHammerToken + "-" + GetBarTimeTag(bar);
}
//
@@ -84,7 +771,7 @@ void RemoveHammer(XOHCL &bar)
//
string GetShootingStarTag(XOHCL &bar)
{
return "ShootingStar-" + GetBarTimeTag(bar);
return XTLSShootingStarToken + "-" + GetBarTimeTag(bar);
}
//
@@ -132,7 +819,7 @@ void RemoveShootingStar(XOHCL &bar)
//
string GetBullishEngulfingTag(XOHCL &bar)
{
return "BullishEngulfing-" + GetBarTimeTag(bar);
return XTLSBullishEngulfingToken + "-" + GetBarTimeTag(bar);
}
//
@@ -190,7 +877,7 @@ void RemoveBullishEngulfing(XOHCL &bar)
//
string GetBearishEngulfingTag(XOHCL &bar)
{
return "BearishEngulfing-" + GetBarTimeTag(bar);
return XTLSBearishEngulfingToken + "-" + GetBarTimeTag(bar);
}
//
@@ -248,7 +935,7 @@ void RemoveBearishEngulfing(XOHCL &bar)
//
string GetMorningStarTag(XOHCL &bar)
{
return "MorningStar-" + GetBarTimeTag(bar);
return XTLSMorningStarToken + "-" + GetBarTimeTag(bar);
}
//
@@ -296,7 +983,7 @@ void RemoveMorningStar(XOHCL &bar)
//
string GetEveningStarTag(XOHCL &bar)
{
return "EveningStar-" + GetBarTimeTag(bar);
return XTLSEveningStarToken + "-" + GetBarTimeTag(bar);
}
//
@@ -344,7 +1031,7 @@ void RemoveEveningStar(XOHCL &bar)
//
string GetSwingHighTag(XOHCL &bar)
{
return "SwingHigh-" + GetBarTimeTag(bar);
return XTLSSwingHighToken + "-" + GetBarTimeTag(bar);
}
//
@@ -392,7 +1079,7 @@ void RemoveSwingHigh(XOHCL &bar)
//
string GetSwingLowTag(XOHCL &bar)
{
return "SwingLow-" + GetBarTimeTag(bar);
return XTLSSwingLowToken + "-" + GetBarTimeTag(bar);
}
//
@@ -440,7 +1127,7 @@ void RemoveSwingLow(XOHCL &bar)
//
string GetBullishFVGTag(XOHCL &bar)
{
return "BullishFVG-" + GetBarTimeTag(bar);
return XTLSBullishFVGToken + "-" + GetBarTimeTag(bar);
}
//
@@ -508,7 +1195,7 @@ void RemoveBullishFVG(XOHCL &bar)
//
string GetBearishFVGTag(XOHCL &bar)
{
return "BearishFVG-" + GetBarTimeTag(bar);
return XTLSBearishFVGToken + "-" + GetBarTimeTag(bar);
}
//
@@ -576,7 +1263,7 @@ void RemoveBearishFVG(XOHCL &bar)
//
string GetBullishOrderBlockTag(XOHCL &bar)
{
return "BullishOrderBlock-" + GetBarTimeTag(bar);
return XTLSBullishOrderBlockToken + "-" + GetBarTimeTag(bar);
}
//
@@ -613,7 +1300,8 @@ bool DrawBullishOrderBlock(
false,
ray //
);
if (!result) {
if (!result)
{
return result;
}
@@ -634,7 +1322,8 @@ bool DrawBullishOrderBlock(
false,
ray //
);
if (!result) {
if (!result)
{
return result;
}
@@ -654,7 +1343,7 @@ void RemoveBullishOrderBlock(XOHCL &bar)
//
string GetBearishOrderBlockTag(XOHCL &bar)
{
return "BearishOrderBlock-" + GetBarTimeTag(bar);
return XTLSBearishOrderBlockToken + "-" + GetBarTimeTag(bar);
}
//
@@ -691,7 +1380,8 @@ bool DrawBearishOrderBlock(
false,
ray //
);
if (!result) {
if (!result)
{
return result;
}
@@ -712,7 +1402,8 @@ bool DrawBearishOrderBlock(
false,
ray //
);
if (!result) {
if (!result)
{
return result;
}
@@ -732,7 +1423,7 @@ void RemoveBearishOrderBlock(XOHCL &bar)
//
string GetSupportTag(XOHCL &bar)
{
return "Support-" + GetBarTimeTag(bar);
return XTLSSupportToken + "-" + GetBarTimeTag(bar);
}
//
@@ -839,7 +1530,7 @@ void RemoveSupport(XOHCL &bar)
//
string GetResistanceTag(XOHCL &bar)
{
return "Resistance-" + GetBarTimeTag(bar);
return XTLSResistanceToken + "-" + GetBarTimeTag(bar);
}
//
@@ -946,7 +1637,7 @@ void RemoveResistance(XOHCL &bar)
//
string GetBullishTrendTag(XOHCL &bar)
{
return "BullishTrend-" + GetBarTimeTag(bar);
return XTLSBullishTrendToken + "-" + GetBarTimeTag(bar);
}
//
@@ -960,9 +1651,9 @@ bool DrawBullishTrend(
color clr = clrAqua,
ENUM_LINE_STYLE style = STYLE_DOT,
uint width = 1,
uchar swingHighArrow = 202,
uchar swingHighArrow = 108,
color swingHighColor = clrAqua,
uchar swingLowArrow = 202,
uchar swingLowArrow = 108,
color swingLowColor = clrMagenta //
)
{
@@ -997,7 +1688,8 @@ bool DrawBullishTrend(
false,
ray //
);
if (!result) {
if (!result)
{
return result;
}
@@ -1022,7 +1714,8 @@ bool DrawBullishTrend(
false,
ray //
);
if (!result) {
if (!result)
{
return result;
}
@@ -1098,7 +1791,7 @@ void RemoveBullishTrend(XOHCL &bar)
//
string GetBearishTrendTag(XOHCL &bar)
{
return "BearishTrend-" + GetBarTimeTag(bar);
return XTLSBearishTrendToken + "-" + GetBarTimeTag(bar);
}
//
@@ -1112,9 +1805,9 @@ bool DrawBearishTrend(
color clr = clrMagenta,
ENUM_LINE_STYLE style = STYLE_DOT,
uint width = 1,
uchar swingHighArrow = 202,
uchar swingHighArrow = 108,
color swingHighColor = clrMagenta,
uchar swingLowArrow = 202,
uchar swingLowArrow = 108,
color swingLowColor = clrAqua //
)
{
@@ -1149,7 +1842,8 @@ bool DrawBearishTrend(
false,
ray //
);
if (!result) {
if (!result)
{
return result;
}
@@ -1174,7 +1868,8 @@ bool DrawBearishTrend(
false,
ray //
);
if (!result) {
if (!result)
{
return result;
}
@@ -1244,6 +1939,28 @@ void RemoveBearishTrend(XOHCL &bar)
RemoveDraws(GetBearishTrendTag(bar));
}
//
void RemoveAllToolsDraws()
{
//
RemoveDraws(XTLSHammerToken);
RemoveDraws(XTLSSupportToken);
RemoveDraws(XTLSSwingLowToken);
RemoveDraws(XTLSSwingHighToken);
RemoveDraws(XTLSBullishFVGToken);
RemoveDraws(XTLSBearishFVGToken);
RemoveDraws(XTLSResistanceToken);
RemoveDraws(XTLSMorningStarToken);
RemoveDraws(XTLSEveningStarToken);
RemoveDraws(XTLSShootingStarToken);
RemoveDraws(XTLSBullishTrendToken);
RemoveDraws(XTLSBearishTrendToken);
RemoveDraws(XTLSBullishEngulfingToken);
RemoveDraws(XTLSBearishEngulfingToken);
RemoveDraws(XTLSBullishOrderBlockToken);
RemoveDraws(XTLSBearishOrderBlockToken);
}
//
//
//