last ...
This commit is contained in:
@@ -617,6 +617,12 @@ class XCXCAEAPOIDetector : public XCBase
|
|||||||
double ticksDividerInPoints; // Ticks and Volume Detection Divider in Point ...
|
double ticksDividerInPoints; // Ticks and Volume Detection Divider in Point ...
|
||||||
ENUM_TIMEFRAMES ticksDetectionPerid; // Ticks and Volume Detection Loopback ...
|
ENUM_TIMEFRAMES ticksDetectionPerid; // Ticks and Volume Detection Loopback ...
|
||||||
|
|
||||||
|
//
|
||||||
|
// TREND ...
|
||||||
|
XBoxZone trendPivotP; // Prev Pivot of Market Trend ...
|
||||||
|
XBoxZone trendPivotC; // Current Pivot of Market Trend ...
|
||||||
|
ENUM_X_DIRECTION trendDir; // Trend Direction ...
|
||||||
|
|
||||||
//
|
//
|
||||||
// TICK Pivots ...
|
// TICK Pivots ...
|
||||||
|
|
||||||
@@ -744,6 +750,11 @@ class XCXCAEAPOIDetector : public XCBase
|
|||||||
valeSupSWLPivot.Clean();
|
valeSupSWLPivot.Clean();
|
||||||
peakResSWHPivot.Clean();
|
peakResSWHPivot.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
trendPivotP.Clean();
|
||||||
|
trendPivotC.Clean();
|
||||||
|
trendDir = X_DIRECTION_NONE;
|
||||||
|
|
||||||
//
|
//
|
||||||
CleanPivots();
|
CleanPivots();
|
||||||
|
|
||||||
@@ -784,6 +795,7 @@ class XCXCAEAPOIDetector : public XCBase
|
|||||||
detectPVFVGBearishPivots = true;
|
detectPVFVGBearishPivots = true;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
trendDir = X_DIRECTION_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -1900,6 +1912,8 @@ class XCXCAEAPOIDetector : public XCBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
// Detect Market Trend ...
|
||||||
|
DetectMarketTrend();
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -2517,6 +2531,8 @@ class XCXCAEAPOIDetector : public XCBase
|
|||||||
ReversePivots();
|
ReversePivots();
|
||||||
|
|
||||||
//
|
//
|
||||||
|
// Detect Market Trend ...
|
||||||
|
DetectMarketTrend();
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -2674,6 +2690,24 @@ class XCXCAEAPOIDetector : public XCBase
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
bool MarketTrend(ENUM_X_DIRECTION &trend)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Update Market Trend ...
|
||||||
|
DetectMarketTrend();
|
||||||
|
|
||||||
|
//
|
||||||
|
trend = trendDir;
|
||||||
|
result = HasDirection(trend);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Counters ...
|
// Counters ...
|
||||||
|
|
||||||
@@ -3318,6 +3352,141 @@ class XCXCAEAPOIDetector : public XCBase
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
void DetectMarketTrend()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
int idx = -1;
|
||||||
|
int count = 0;
|
||||||
|
bool has = false;
|
||||||
|
|
||||||
|
//
|
||||||
|
XBoxZone tmp[];
|
||||||
|
count = FillPivots(tmp);
|
||||||
|
has = HasChild(tmp);
|
||||||
|
if (!has)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
XBoxZone cPivot;
|
||||||
|
XBoxZone pPivot;
|
||||||
|
ENUM_X_DIRECTION dir = X_DIRECTION_NONE;
|
||||||
|
while (HasChild(tmp))
|
||||||
|
{
|
||||||
|
//
|
||||||
|
XBoxZone iPivot;
|
||||||
|
idx = GetYoungest(tmp);
|
||||||
|
has = IsValidIndex(idx);
|
||||||
|
if (!has)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
iPivot.Clean();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
ArrayRemove(
|
||||||
|
tmp,
|
||||||
|
idx,
|
||||||
|
1 //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check Pivot Type is Peak or Vale ...
|
||||||
|
has =
|
||||||
|
Contains(
|
||||||
|
"XCA_PEAKSWHRES",
|
||||||
|
iPivot.type //
|
||||||
|
) ||
|
||||||
|
Contains(
|
||||||
|
"XCA_VALESWLSUP",
|
||||||
|
iPivot.type //
|
||||||
|
);
|
||||||
|
if (!has)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
iPivot.Clean();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check Can Set CPivot ...
|
||||||
|
bool canSetCPivot =
|
||||||
|
!cPivot.IsValid()
|
||||||
|
? true
|
||||||
|
: cPivot.from < iPivot.from;
|
||||||
|
if (canSetCPivot)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
if (cPivot.IsValid())
|
||||||
|
{
|
||||||
|
pPivot = cPivot;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
cPivot = iPivot;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check Can Set PPivot ...
|
||||||
|
bool canSetPPivot =
|
||||||
|
!cPivot.IsValid()
|
||||||
|
? false
|
||||||
|
: iPivot.from < cPivot.from
|
||||||
|
? !pPivot.IsValid()
|
||||||
|
? true
|
||||||
|
: cPivot.from < iPivot.from
|
||||||
|
: false;
|
||||||
|
if (canSetPPivot)
|
||||||
|
{
|
||||||
|
pPivot = iPivot;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
has = cPivot.IsValid() &&
|
||||||
|
pPivot.IsValid();
|
||||||
|
if (has)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
iPivot.Clean();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
iPivot.Clean();
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check Resources for Detecting Conditions ...
|
||||||
|
bool hasTrend =
|
||||||
|
//
|
||||||
|
cPivot.IsValid() &&
|
||||||
|
pPivot.IsValid() &&
|
||||||
|
cPivot.dir == pPivot.dir &&
|
||||||
|
cPivot.from > pPivot.from &&
|
||||||
|
(IsBullish(cPivot.dir)
|
||||||
|
? cPivot.lower > pPivot.lower
|
||||||
|
: cPivot.upper < pPivot.upper);
|
||||||
|
//
|
||||||
|
;
|
||||||
|
if (hasTrend)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
trendPivotC = cPivot;
|
||||||
|
trendPivotP = pPivot;
|
||||||
|
trendDir = cPivot.dir;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
Clean(tmp);
|
||||||
|
cPivot.Clean();
|
||||||
|
pPivot.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Drawers ...
|
// Drawers ...
|
||||||
|
bool drawTrendLine;
|
||||||
bool drawTickPivots;
|
bool drawTickPivots;
|
||||||
bool drawVolumePivots;
|
bool drawVolumePivots;
|
||||||
bool drawRSIPeakPivots;
|
bool drawRSIPeakPivots;
|
||||||
@@ -74,6 +75,8 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
color fvgBearishPivotsColor;
|
color fvgBearishPivotsColor;
|
||||||
color valeSupSWLPivotsColor;
|
color valeSupSWLPivotsColor;
|
||||||
color peakResSWHPivotsColor;
|
color peakResSWHPivotsColor;
|
||||||
|
color trendLineBullishColor;
|
||||||
|
color trendLineBearishColor;
|
||||||
color pvFVGBullishPivotsColor;
|
color pvFVGBullishPivotsColor;
|
||||||
color pvFVGBearishPivotsColor;
|
color pvFVGBearishPivotsColor;
|
||||||
|
|
||||||
@@ -95,6 +98,8 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
int fvgBearishPivotsWidth;
|
int fvgBearishPivotsWidth;
|
||||||
int valeSupSWLPivotsWidth;
|
int valeSupSWLPivotsWidth;
|
||||||
int peakResSWHPivotsWidth;
|
int peakResSWHPivotsWidth;
|
||||||
|
int trendLineBullishWidth;
|
||||||
|
int trendLineBearishWidth;
|
||||||
int pvFVGBullishPivotsWidth;
|
int pvFVGBullishPivotsWidth;
|
||||||
int pvFVGBearishPivotsWidth;
|
int pvFVGBearishPivotsWidth;
|
||||||
|
|
||||||
@@ -116,6 +121,8 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
ENUM_LINE_STYLE fvgBearishPivotsStyle;
|
ENUM_LINE_STYLE fvgBearishPivotsStyle;
|
||||||
ENUM_LINE_STYLE valeSupSWLPivotsStyle;
|
ENUM_LINE_STYLE valeSupSWLPivotsStyle;
|
||||||
ENUM_LINE_STYLE peakResSWHPivotsStyle;
|
ENUM_LINE_STYLE peakResSWHPivotsStyle;
|
||||||
|
ENUM_LINE_STYLE trendLineBullishStyle;
|
||||||
|
ENUM_LINE_STYLE trendLineBearishStyle;
|
||||||
ENUM_LINE_STYLE pvFVGBullishPivotsStyle;
|
ENUM_LINE_STYLE pvFVGBullishPivotsStyle;
|
||||||
ENUM_LINE_STYLE pvFVGBearishPivotsStyle;
|
ENUM_LINE_STYLE pvFVGBearishPivotsStyle;
|
||||||
|
|
||||||
@@ -167,6 +174,7 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
ignoreUpdateOSCTos = true;
|
ignoreUpdateOSCTos = true;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
drawTrendLine = false;
|
||||||
drawTickPivots = false;
|
drawTickPivots = false;
|
||||||
drawVolumePivots = false;
|
drawVolumePivots = false;
|
||||||
drawRSIPeakPivots = false;
|
drawRSIPeakPivots = false;
|
||||||
@@ -193,6 +201,7 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
cciValePivotsColor = defaultBullishColor;
|
cciValePivotsColor = defaultBullishColor;
|
||||||
fvgBullishPivotsColor = defaultBullishColor;
|
fvgBullishPivotsColor = defaultBullishColor;
|
||||||
valeSupSWLPivotsColor = defaultBullishColor;
|
valeSupSWLPivotsColor = defaultBullishColor;
|
||||||
|
trendLineBullishColor = defaultBullishColor;
|
||||||
pvFVGBullishPivotsColor = defaultBullishColor;
|
pvFVGBullishPivotsColor = defaultBullishColor;
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -200,6 +209,7 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
cciPeakPivotsColor = defaultBearishColor;
|
cciPeakPivotsColor = defaultBearishColor;
|
||||||
fvgBearishPivotsColor = defaultBearishColor;
|
fvgBearishPivotsColor = defaultBearishColor;
|
||||||
peakResSWHPivotsColor = defaultBearishColor;
|
peakResSWHPivotsColor = defaultBearishColor;
|
||||||
|
trendLineBearishColor = defaultBearishColor;
|
||||||
pvFVGBearishPivotsColor = defaultBearishColor;
|
pvFVGBearishPivotsColor = defaultBearishColor;
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -215,6 +225,7 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
cciValePivotsWidth = defaultBullishWidth;
|
cciValePivotsWidth = defaultBullishWidth;
|
||||||
fvgBullishPivotsWidth = defaultBullishWidth;
|
fvgBullishPivotsWidth = defaultBullishWidth;
|
||||||
valeSupSWLPivotsWidth = defaultBullishWidth;
|
valeSupSWLPivotsWidth = defaultBullishWidth;
|
||||||
|
trendLineBullishWidth = defaultBullishWidth;
|
||||||
pvFVGBullishPivotsWidth = defaultBullishWidth;
|
pvFVGBullishPivotsWidth = defaultBullishWidth;
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -222,6 +233,7 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
cciPeakPivotsWidth = defaultBearishWidth;
|
cciPeakPivotsWidth = defaultBearishWidth;
|
||||||
fvgBearishPivotsWidth = defaultBearishWidth;
|
fvgBearishPivotsWidth = defaultBearishWidth;
|
||||||
peakResSWHPivotsWidth = defaultBearishWidth;
|
peakResSWHPivotsWidth = defaultBearishWidth;
|
||||||
|
trendLineBearishWidth = defaultBearishWidth;
|
||||||
pvFVGBearishPivotsWidth = defaultBearishWidth;
|
pvFVGBearishPivotsWidth = defaultBearishWidth;
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -237,6 +249,7 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
cciValePivotsStyle = defaultBullishStyle;
|
cciValePivotsStyle = defaultBullishStyle;
|
||||||
fvgBullishPivotsStyle = defaultBullishStyle;
|
fvgBullishPivotsStyle = defaultBullishStyle;
|
||||||
valeSupSWLPivotsStyle = defaultBullishStyle;
|
valeSupSWLPivotsStyle = defaultBullishStyle;
|
||||||
|
trendLineBullishStyle = defaultBullishStyle;
|
||||||
pvFVGBullishPivotsStyle = defaultBullishStyle;
|
pvFVGBullishPivotsStyle = defaultBullishStyle;
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -244,6 +257,7 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
cciPeakPivotsStyle = defaultBearishStyle;
|
cciPeakPivotsStyle = defaultBearishStyle;
|
||||||
fvgBearishPivotsStyle = defaultBearishStyle;
|
fvgBearishPivotsStyle = defaultBearishStyle;
|
||||||
peakResSWHPivotsStyle = defaultBearishStyle;
|
peakResSWHPivotsStyle = defaultBearishStyle;
|
||||||
|
trendLineBearishStyle = defaultBearishStyle;
|
||||||
pvFVGBearishPivotsStyle = defaultBearishStyle;
|
pvFVGBearishPivotsStyle = defaultBearishStyle;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -251,6 +265,7 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
void Draw(datetime to = NULL)
|
void Draw(datetime to = NULL)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
DrawTrendLine();
|
||||||
DrawTickPivots(to);
|
DrawTickPivots(to);
|
||||||
DrawVolumePivots(to);
|
DrawVolumePivots(to);
|
||||||
DrawRSIPeakPivots(to);
|
DrawRSIPeakPivots(to);
|
||||||
@@ -269,6 +284,7 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
void Clear()
|
void Clear()
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
mTrendLineObjects.Clear();
|
||||||
mTickPivotObjects.Clear();
|
mTickPivotObjects.Clear();
|
||||||
mVolumePivotObjects.Clear();
|
mVolumePivotObjects.Clear();
|
||||||
mRSIPeakPivotObjects.Clear();
|
mRSIPeakPivotObjects.Clear();
|
||||||
@@ -287,6 +303,97 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
void DrawTrendLine()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
if (!drawTrendLine)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
ENUM_X_DIRECTION trend = X_DIRECTION_NONE;
|
||||||
|
bool has = detector.MarketTrend(trend);
|
||||||
|
if (!has)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
long chartID = drawer.ChartIdentification();
|
||||||
|
int subWindow = drawer.SubWindowIdentification();
|
||||||
|
|
||||||
|
//
|
||||||
|
bool hasBullishTrend = IsBullish(trend);
|
||||||
|
|
||||||
|
//
|
||||||
|
double pPrice = hasBullishTrend
|
||||||
|
? detector.trendPivotP.lower
|
||||||
|
: detector.trendPivotP.upper;
|
||||||
|
|
||||||
|
//
|
||||||
|
datetime pTime = detector.trendPivotC.from;
|
||||||
|
|
||||||
|
//
|
||||||
|
double cPrice = hasBullishTrend
|
||||||
|
? detector.trendPivotC.lower
|
||||||
|
: detector.trendPivotC.upper;
|
||||||
|
|
||||||
|
//
|
||||||
|
datetime cTime = detector.trendPivotC.from;
|
||||||
|
|
||||||
|
//
|
||||||
|
string tlName = ToString(trend) +
|
||||||
|
"_TL_" +
|
||||||
|
ToString(pPrice) +
|
||||||
|
"_" +
|
||||||
|
ToString(cPrice);
|
||||||
|
|
||||||
|
//
|
||||||
|
int tlWidth = hasBullishTrend
|
||||||
|
? trendLineBullishWidth
|
||||||
|
: trendLineBearishWidth;
|
||||||
|
|
||||||
|
//
|
||||||
|
color tlColor = hasBullishTrend
|
||||||
|
? trendLineBullishColor
|
||||||
|
: trendLineBearishColor;
|
||||||
|
|
||||||
|
//
|
||||||
|
ENUM_LINE_STYLE tlStyle = hasBullishTrend
|
||||||
|
? trendLineBullishStyle
|
||||||
|
: trendLineBearishStyle;
|
||||||
|
|
||||||
|
//
|
||||||
|
CChartObjectTrend *iObj;
|
||||||
|
iObj = new CChartObjectTrend();
|
||||||
|
has = iObj.Create(
|
||||||
|
chartID,
|
||||||
|
tlName,
|
||||||
|
subWindow,
|
||||||
|
pTime,
|
||||||
|
pPrice,
|
||||||
|
cTime,
|
||||||
|
cPrice //
|
||||||
|
);
|
||||||
|
if (has)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Style Object ...
|
||||||
|
iObj.Color(tlColor);
|
||||||
|
iObj.Width(tlWidth);
|
||||||
|
iObj.Style(tlStyle);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Store Object ...
|
||||||
|
mTrendLineObjects.Add(iObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
ZeroMemory(iObj);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
void DrawTickPivots(datetime to = NULL)
|
void DrawTickPivots(datetime to = NULL)
|
||||||
{
|
{
|
||||||
@@ -309,12 +416,14 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
|
|
||||||
//
|
//
|
||||||
int count = detector.CountTickPivots();
|
int count = detector.CountTickPivots();
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++)
|
||||||
|
{
|
||||||
//
|
//
|
||||||
XBoxZone iBox = detector.tickPivots[i];
|
XBoxZone iBox = detector.tickPivots[i];
|
||||||
|
|
||||||
//
|
//
|
||||||
if (canUpdateTo) {
|
if (canUpdateTo)
|
||||||
|
{
|
||||||
iBox.to = to;
|
iBox.to = to;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -324,7 +433,8 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
iBox,
|
iBox,
|
||||||
iObj //
|
iObj //
|
||||||
);
|
);
|
||||||
if (has) {
|
if (has)
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Style Pivot ...
|
// Style Pivot ...
|
||||||
iObj.BoxColor(tickPivotsColor);
|
iObj.BoxColor(tickPivotsColor);
|
||||||
@@ -364,12 +474,14 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
|
|
||||||
//
|
//
|
||||||
int count = detector.CountVolumePivots();
|
int count = detector.CountVolumePivots();
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++)
|
||||||
|
{
|
||||||
//
|
//
|
||||||
XBoxZone iBox = detector.volumePivots[i];
|
XBoxZone iBox = detector.volumePivots[i];
|
||||||
|
|
||||||
//
|
//
|
||||||
if (canUpdateTo) {
|
if (canUpdateTo)
|
||||||
|
{
|
||||||
iBox.to = to;
|
iBox.to = to;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -379,7 +491,8 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
iBox,
|
iBox,
|
||||||
iObj //
|
iObj //
|
||||||
);
|
);
|
||||||
if (has) {
|
if (has)
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Style Pivot ...
|
// Style Pivot ...
|
||||||
iObj.BoxColor(volumePivotsColor);
|
iObj.BoxColor(volumePivotsColor);
|
||||||
@@ -1029,6 +1142,7 @@ class XCXCAEAPOIDrawer : public XCBase
|
|||||||
|
|
||||||
//
|
//
|
||||||
CArrayObj mTickPivotObjects;
|
CArrayObj mTickPivotObjects;
|
||||||
|
CArrayObj mTrendLineObjects;
|
||||||
CArrayObj mVolumePivotObjects;
|
CArrayObj mVolumePivotObjects;
|
||||||
CArrayObj mRSIPeakPivotObjects;
|
CArrayObj mRSIPeakPivotObjects;
|
||||||
CArrayObj mRSIValePivotObjects;
|
CArrayObj mRSIValePivotObjects;
|
||||||
|
|||||||
@@ -421,6 +421,7 @@ int AddGuard(
|
|||||||
|
|
||||||
//
|
//
|
||||||
bool DetectXCAEAConditions(
|
bool DetectXCAEAConditions(
|
||||||
|
ENUM_X_DIRECTION trend,
|
||||||
XBoxZone &pivots[],
|
XBoxZone &pivots[],
|
||||||
XCAEAConditions &conditions,
|
XCAEAConditions &conditions,
|
||||||
XBoxZone &pivotBox,
|
XBoxZone &pivotBox,
|
||||||
@@ -454,11 +455,21 @@ bool DetectXCAEAConditions(
|
|||||||
loopback = NormalizeInt(loopback, 5);
|
loopback = NormalizeInt(loopback, 5);
|
||||||
|
|
||||||
//
|
//
|
||||||
|
// Retrieve Some Requirements ...
|
||||||
string symbol = helper.GetSymbol();
|
string symbol = helper.GetSymbol();
|
||||||
ENUM_TIMEFRAMES period = helper.GetPeriod();
|
ENUM_TIMEFRAMES period = helper.GetPeriod();
|
||||||
double points = GetPoints(symbol);
|
double points = GetPoints(symbol);
|
||||||
|
|
||||||
//
|
//
|
||||||
|
// Trend Parsing ...
|
||||||
|
bool hasTrend = HasDirection(trend);
|
||||||
|
bool hasBullishTrend = hasTrend &&
|
||||||
|
IsBullish(trend);
|
||||||
|
bool hasBearishTrend = hasTrend &&
|
||||||
|
IsBearish(trend);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Retrieve Previous and Current Bar Conditions ...
|
||||||
XCAEAConditions pConditions;
|
XCAEAConditions pConditions;
|
||||||
result = helper.GetConditions(
|
result = helper.GetConditions(
|
||||||
conditions,
|
conditions,
|
||||||
@@ -482,6 +493,7 @@ bool DetectXCAEAConditions(
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
// Define IDXses ...
|
||||||
int zIDX = barIndex;
|
int zIDX = barIndex;
|
||||||
int cIDX = zIDX + 1;
|
int cIDX = zIDX + 1;
|
||||||
int pIDX = cIDX + 1;
|
int pIDX = cIDX + 1;
|
||||||
@@ -489,9 +501,6 @@ bool DetectXCAEAConditions(
|
|||||||
int p3IDX = p2IDX + 1;
|
int p3IDX = p2IDX + 1;
|
||||||
int p4IDX = p3IDX + 1;
|
int p4IDX = p3IDX + 1;
|
||||||
|
|
||||||
//
|
|
||||||
// Reading Parameters ...
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Reading Bars ...
|
// Reading Bars ...
|
||||||
|
|
||||||
@@ -545,6 +554,7 @@ bool DetectXCAEAConditions(
|
|||||||
// Bars Conditions ...
|
// Bars Conditions ...
|
||||||
|
|
||||||
//
|
//
|
||||||
|
// Temparory Bar Direction ...
|
||||||
ENUM_X_DIRECTION cBarDir;
|
ENUM_X_DIRECTION cBarDir;
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -647,6 +657,7 @@ bool DetectXCAEAConditions(
|
|||||||
bearishScore > bullishScore;
|
bearishScore > bullishScore;
|
||||||
|
|
||||||
//
|
//
|
||||||
|
// Generating Conditions Summary ...
|
||||||
string summary =
|
string summary =
|
||||||
conditions
|
conditions
|
||||||
.GenerateSummary();
|
.GenerateSummary();
|
||||||
@@ -654,16 +665,76 @@ bool DetectXCAEAConditions(
|
|||||||
//
|
//
|
||||||
// Conditions ...
|
// Conditions ...
|
||||||
|
|
||||||
|
//
|
||||||
|
// Parsing Pivots ...
|
||||||
|
|
||||||
//
|
//
|
||||||
// Detect Selected Pivot ...
|
// Detect Selected Pivot ...
|
||||||
XBoxZone oscPivots[];
|
|
||||||
XBoxZone lastOSCPivot;
|
XBoxZone lastOSCPivot;
|
||||||
double providedSL = 0;
|
double providedSL = 0;
|
||||||
bool hasPivots = HasChild(pivots);
|
bool hasPivots = HasChild(pivots);
|
||||||
if (hasPivots)
|
if (hasPivots)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// Detect Selected Boxes ...
|
// Detect Selected Pivots ...
|
||||||
|
count = ArraySize(pivots);
|
||||||
|
for (int i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
XBoxZone iPivot = pivots[i];
|
||||||
|
|
||||||
|
//
|
||||||
|
// Detect Selected Last OSC Pivots ...
|
||||||
|
bool isOSC =
|
||||||
|
Contains(
|
||||||
|
"XCA_RSI",
|
||||||
|
iPivot.type //
|
||||||
|
) ||
|
||||||
|
Contains(
|
||||||
|
"XCA_CCI",
|
||||||
|
iPivot.type //
|
||||||
|
);
|
||||||
|
bool canSetOSC =
|
||||||
|
!isOSC
|
||||||
|
? false
|
||||||
|
: !lastOSCPivot.IsValid()
|
||||||
|
? true
|
||||||
|
: lastOSCPivot.from < iPivot.from;
|
||||||
|
if (canSetOSC)
|
||||||
|
{
|
||||||
|
lastOSCPivot = iPivot;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
iPivot.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Detect New OSC Pivot Happens ...
|
||||||
|
bool hasNewOSC = lastOSCPivot.IsValid() &&
|
||||||
|
cBar.time == lastOSCPivot.to;
|
||||||
|
if (hasNewOSC)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
XCBoxObject *iObj;
|
||||||
|
has = helper.poiDrawer.DrawBox(
|
||||||
|
lastOSCPivot,
|
||||||
|
iObj //
|
||||||
|
);
|
||||||
|
if (has)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
iObj.BoxWidth(2);
|
||||||
|
|
||||||
|
//
|
||||||
|
Print("OSC Box Detected ...");
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
ZeroMemory(iObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -855,6 +926,9 @@ bool DetectXCAEAConditions(
|
|||||||
conditions.Clean();
|
conditions.Clean();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
lastOSCPivot.Clean();
|
||||||
|
|
||||||
//
|
//
|
||||||
zBar.Clean();
|
zBar.Clean();
|
||||||
cBar.Clean();
|
cBar.Clean();
|
||||||
|
|||||||
@@ -171,10 +171,12 @@ class XCXCAEASignaller : XCBase
|
|||||||
XBoxZone pivotBox;
|
XBoxZone pivotBox;
|
||||||
XBoxZone signalBox;
|
XBoxZone signalBox;
|
||||||
int pivotsCount = 0;
|
int pivotsCount = 0;
|
||||||
|
bool hasTrend = false;
|
||||||
bool hasPivots = false;
|
bool hasPivots = false;
|
||||||
double additionalSL = 0;
|
double additionalSL = 0;
|
||||||
bool hasSignalBox = false;
|
bool hasSignalBox = false;
|
||||||
XCAEAConditions conditions;
|
XCAEAConditions conditions;
|
||||||
|
ENUM_X_DIRECTION trend = X_DIRECTION_NONE;
|
||||||
ENUM_X_DIRECTION signalBoxDir = X_DIRECTION_NONE;
|
ENUM_X_DIRECTION signalBoxDir = X_DIRECTION_NONE;
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -190,12 +192,16 @@ class XCXCAEASignaller : XCBase
|
|||||||
zIndex //
|
zIndex //
|
||||||
);
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check Market Trend ...
|
||||||
|
hasTrend = detector.MarketTrend(trend);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Draw Founded Pivots ...
|
// Draw Founded Pivots ...
|
||||||
drawer.Draw(cTime);
|
drawer.Draw(cTime);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Retrieve Valid Boxes ...
|
// Retrieve Valid Pviots ...
|
||||||
pivotsCount = detector.FillPivots(pivots);
|
pivotsCount = detector.FillPivots(pivots);
|
||||||
hasPivots = IsValidSize(pivotsCount);
|
hasPivots = IsValidSize(pivotsCount);
|
||||||
|
|
||||||
@@ -245,6 +251,7 @@ class XCXCAEASignaller : XCBase
|
|||||||
//
|
//
|
||||||
// Detect Sinal Box ...
|
// Detect Sinal Box ...
|
||||||
hasSignalBox = DetectXCAEAConditions(
|
hasSignalBox = DetectXCAEAConditions(
|
||||||
|
trend,
|
||||||
pivots,
|
pivots,
|
||||||
conditions,
|
conditions,
|
||||||
pivotBox,
|
pivotBox,
|
||||||
@@ -758,7 +765,8 @@ class XCXCAEASignaller : XCBase
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Configure Drawer ...
|
// Configure Drawer ...
|
||||||
drawer.drawTickPivots = true;
|
drawer.drawTrendLine = true;
|
||||||
|
drawer.drawTickPivots = false;
|
||||||
drawer.drawVolumePivots = false;
|
drawer.drawVolumePivots = false;
|
||||||
drawer.drawRSIPeakPivots = true;
|
drawer.drawRSIPeakPivots = true;
|
||||||
drawer.drawRSIValePivots = true;
|
drawer.drawRSIValePivots = true;
|
||||||
@@ -783,6 +791,8 @@ class XCXCAEASignaller : XCBase
|
|||||||
drawer.fvgBearishPivotsWidth = 2;
|
drawer.fvgBearishPivotsWidth = 2;
|
||||||
drawer.valeSupSWLPivotsWidth = 1;
|
drawer.valeSupSWLPivotsWidth = 1;
|
||||||
drawer.peakResSWHPivotsWidth = 1;
|
drawer.peakResSWHPivotsWidth = 1;
|
||||||
|
drawer.trendLineBullishWidth = 4;
|
||||||
|
drawer.trendLineBullishWidth = 4;
|
||||||
drawer.pvFVGBullishPivotsWidth = 1;
|
drawer.pvFVGBullishPivotsWidth = 1;
|
||||||
drawer.pvFVGBearishPivotsWidth = 1;
|
drawer.pvFVGBearishPivotsWidth = 1;
|
||||||
|
|
||||||
@@ -798,6 +808,8 @@ class XCXCAEASignaller : XCBase
|
|||||||
drawer.fvgBearishPivotsColor = clrRed;
|
drawer.fvgBearishPivotsColor = clrRed;
|
||||||
drawer.valeSupSWLPivotsColor = clrAqua;
|
drawer.valeSupSWLPivotsColor = clrAqua;
|
||||||
drawer.peakResSWHPivotsColor = clrMagenta;
|
drawer.peakResSWHPivotsColor = clrMagenta;
|
||||||
|
drawer.trendLineBullishColor = clrAqua;
|
||||||
|
drawer.trendLineBullishColor = clrMagenta;
|
||||||
drawer.pvFVGBullishPivotsColor = clrLime;
|
drawer.pvFVGBullishPivotsColor = clrLime;
|
||||||
drawer.pvFVGBearishPivotsColor = clrRed;
|
drawer.pvFVGBearishPivotsColor = clrRed;
|
||||||
|
|
||||||
@@ -813,6 +825,8 @@ class XCXCAEASignaller : XCBase
|
|||||||
drawer.fvgBearishPivotsStyle = STYLE_DASHDOTDOT;
|
drawer.fvgBearishPivotsStyle = STYLE_DASHDOTDOT;
|
||||||
drawer.valeSupSWLPivotsStyle = STYLE_SOLID;
|
drawer.valeSupSWLPivotsStyle = STYLE_SOLID;
|
||||||
drawer.peakResSWHPivotsStyle = STYLE_SOLID;
|
drawer.peakResSWHPivotsStyle = STYLE_SOLID;
|
||||||
|
drawer.trendLineBullishWidth = STYLE_SOLID;
|
||||||
|
drawer.trendLineBullishWidth = STYLE_SOLID;
|
||||||
drawer.pvFVGBullishPivotsStyle = STYLE_DASHDOTDOT;
|
drawer.pvFVGBullishPivotsStyle = STYLE_DASHDOTDOT;
|
||||||
drawer.pvFVGBearishPivotsStyle = STYLE_DASHDOTDOT;
|
drawer.pvFVGBearishPivotsStyle = STYLE_DASHDOTDOT;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user