This commit is contained in:
2024-12-30 03:08:21 +03:30
parent b5003968bc
commit 4094a92949
9 changed files with 833 additions and 267 deletions
+225 -48
View File
@@ -43,6 +43,7 @@ enum ENUM_XCHARTOBJECTS
//
X_SIGNAL_OBJ = 8860,
X_TREND_OBJ = 8861,
X_XPVPIVOT_OBJ = 8862,
//
// Structured ...
X_TRADE_DAY_OBJ = 9860,
@@ -78,49 +79,51 @@ enum ENUM_X_CHART_IDS
X_TP
};
string ToString(ENUM_X_CHART_IDS value) {
string ToString(ENUM_X_CHART_IDS value)
{
//
string result = NULL;
//
switch(value) {
//
case X_TO:
switch (value)
{
//
case X_TO:
result = "TO";
break;
//
case X_FROM:
//
case X_FROM:
result = "FROM";
break;
//
case X_UPPER:
//
case X_UPPER:
result = "UPPER";
break;
//
case X_LOWER:
//
case X_LOWER:
result = "LOWER";
break;
//
case X_ENTRY:
//
case X_ENTRY:
result = "ENTRY";
break;
//
case X_TARGET:
//
case X_TARGET:
result = "TARGET";
break;
//
case X_SL:
//
case X_SL:
result = "SL";
break;
//
case X_TP:
//
case X_TP:
result = "TP";
break;
}
@@ -1719,6 +1722,7 @@ class XCBearishFairValueGapObject : public XCZoneObject
return X_BEARISH_FVG_OBJ;
}
};
//
// Signal ...
class XCSignalObject : public XCBaseObject
@@ -1814,25 +1818,26 @@ class XCSignalObject : public XCBaseObject
//
// TARGET ...
if (signal.target > 0) {
//
string targetName = ToString(X_TARGET) + "_" + nameMD5;
result = mTargetTrend.Create(
chart_id,
targetName,
window,
time1,
signal.target,
time2,
signal.target //
);
if (!result)
if (signal.target > 0)
{
//
mTPTrend.Delete();
mSLTrend.Delete();
return result;
}
string targetName = ToString(X_TARGET) + "_" + nameMD5;
result = mTargetTrend.Create(
chart_id,
targetName,
window,
time1,
signal.target,
time2,
signal.target //
);
if (!result)
{
//
mTPTrend.Delete();
mSLTrend.Delete();
return result;
}
}
//
@@ -2048,6 +2053,166 @@ class XCSignalObject : public XCBaseObject
CChartObjectTrend mTargetTrend;
};
//
// XPVPivot Object ...
class XCXPVPivotObject : public XCBaseObject
{
//
public:
//
/**
* Creator ...
*
* @param chart_id: Long, Specified Chart ID ...
* @param window: Integer, Specified Chart Window ID ...
* @param pivot: XPVPivot instance ...
* @param prefix: String ...
*
* @return ( bool )
*/
bool Create(
long chart_id,
int window,
XPVPivot &pivot,
string prefix = NULL //
)
{
//
bool result = false;
//
result = pivot.IsValid();
if (!result)
{
return result;
}
//
string name = pivot.GetTag();
if (IsValid(prefix))
{
name = prefix + "_" + name;
}
//
result = mRect.Create(
chart_id,
name,
window,
pivot.from,
pivot.upper,
pivot.to,
pivot.lower //
);
//
if (result)
{
ObjName(name);
}
//
string mTrendName = "MID_" + name;
double mid = pivot.CalculateMid();
result = mTrend.Create(
chart_id,
mTrendName,
window,
pivot.from,
mid,
pivot.to,
mid //
);
if (!result)
{
//
mRect.Delete();
mRect.Detach();
}
//
return result;
}
//
// Getter(s) / Setter(s) ...
/**
* Set Pivot Width ...
*
* @param value: Integer ...
*/
void PivotWidth(int value)
{
//
if (value < 1)
{
value = 1;
}
//
mRect.Width(value);
mTrend.Width(value);
}
/**
* Set Pivot Color ...
*
* @param value: Color ...
*/
void PivotColor(color value)
{
//
mRect.Color(value);
mTrend.Color(value);
}
/**
* Set Pivot Style ...
*
* @param value: ENUM_LINE_STYLE member ...
*/
void PivotStyle(ENUM_LINE_STYLE value)
{
//
mRect.Style(value);
mTrend.Style(value);
}
/**
* Set Pivot Fill ...
*
* @param value: Boolean ...
*/
void PivotFill(bool value)
{
mRect.Fill(value);
}
//
// Virtual ...
/**
* Retrieve Object Type ...
*
* @return ( ENUM_XCHARTOBJECTS )
*/
virtual ENUM_XCHARTOBJECTS Type()
{
return X_XPVPIVOT_OBJ;
}
//
private:
//
//
// Props ...
CChartObjectRectangle mRect;
CChartObjectTrend mTrend;
};
//
// Zone Ticks ...
@@ -2256,6 +2421,14 @@ class XCTickZoneObject : public XCBaseObject
return result;
}
//
double points = GetPoints(zone.symbol);
if (points <= 0)
{
points = 1;
}
double distance = 1 * points;
//
if (IsValid(prefix))
{
@@ -2279,13 +2452,17 @@ class XCTickZoneObject : public XCBaseObject
}
//
string lblName = "LBL_" + name;
result = mLabel.Create(
int fromToDiff = ((int) to - (int) from);
datetime labelsDate = (datetime)((int)to - (fromToDiff / 5));
//
string lblName = "LBLT_" + name;
result = mTLabel.Create(
chart_id,
lblName,
window,
to,
zone.high //
labelsDate,
zone.high - distance //
);
if (!result)
{
@@ -2293,7 +2470,7 @@ class XCTickZoneObject : public XCBaseObject
}
//
mLabel.Description(ToString(zone.percent) + "%");
mTLabel.Description("T: " + ToString(zone.percent) + "%");
//
string lblVName = "LBLV_" + name;
@@ -2301,8 +2478,8 @@ class XCTickZoneObject : public XCBaseObject
chart_id,
lblVName,
window,
to,
zone.low //
labelsDate,
zone.low + (2.5 * distance) //
);
if (!result)
{
@@ -2310,7 +2487,7 @@ class XCTickZoneObject : public XCBaseObject
}
//
mVLabel.Description(ToString(zone.volumePercent) + "%");
mVLabel.Description("V: " + ToString(zone.volumePercent) + "%");
//
ObjName(name);
@@ -2390,7 +2567,7 @@ class XCTickZoneObject : public XCBaseObject
void LabelColor(color value)
{
//
mLabel.Color(value);
mTLabel.Color(value);
mVLabel.Color(value);
}
@@ -2402,7 +2579,7 @@ class XCTickZoneObject : public XCBaseObject
void LabelSize(int value)
{
//
mLabel.FontSize(value);
mTLabel.FontSize(value);
mVLabel.FontSize(value);
}
@@ -2414,7 +2591,7 @@ class XCTickZoneObject : public XCBaseObject
void LabelFont(string value)
{
//
mLabel.Font(value);
mTLabel.Font(value);
mVLabel.Font(value);
}
@@ -2426,7 +2603,7 @@ class XCTickZoneObject : public XCBaseObject
void LabelAngle(double value)
{
//
mLabel.Angle(value);
mTLabel.Angle(value);
mVLabel.Angle(value);
}
@@ -2435,7 +2612,7 @@ class XCTickZoneObject : public XCBaseObject
//
// Props ...
CChartObjectRectangle mRect;
CChartObjectLabel mLabel;
CChartObjectLabel mTLabel;
CChartObjectLabel mVLabel;
//