This commit is contained in:
2025-01-01 22:04:17 +03:30
parent 574eb85107
commit faa50c55d2
8 changed files with 5962 additions and 3622 deletions
File diff suppressed because it is too large Load Diff
+309 -2
View File
@@ -44,6 +44,7 @@ enum ENUM_XCHARTOBJECTS
X_SIGNAL_OBJ = 8860,
X_TREND_OBJ = 8861,
X_XPVPIVOT_OBJ = 8862,
X_OHCL_OBJ = 8863,
//
// Structured ...
X_TRADE_DAY_OBJ = 9860,
@@ -76,7 +77,10 @@ enum ENUM_X_CHART_IDS
X_ENTRY,
X_TARGET,
X_SL,
X_TP
X_TP,
X_BAR_H_SHW,
X_BAR_BDY,
X_BAR_L_SHW,
};
string ToString(ENUM_X_CHART_IDS value)
@@ -126,6 +130,23 @@ string ToString(ENUM_X_CHART_IDS value)
case X_TP:
result = "TP";
break;
//
case X_BAR_H_SHW:
result = "HSHW";
break;
//
case X_BAR_BDY:
result = "BODY";
break;
//
case X_BAR_L_SHW:
result = "LSHW";
break;
//
}
//
@@ -2216,6 +2237,292 @@ class XCXPVPivotObject : public XCBaseObject
CChartObjectTrend mTrend;
};
class XCOHCLObject : 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,
XOHCL &bar,
datetime to,
string prefix = NULL //
)
{
//
bool result = false;
//
result = bar.IsValid() &&
IsValid(to);
if (!result)
{
return result;
}
//
string name = bar.GetTag();
if (IsValid(prefix))
{
name = prefix + "_" + name;
}
string nameMD5 = ToMD5(name);
//
// High Shadow ...
string hShadowName = ToString(X_BAR_H_SHW) + "_" + nameMD5;
//
result = mHighShadowRect.Create(
chart_id,
hShadowName,
window,
bar.time,
bar.high,
to,
bar.GetUp() //
);
if (!result)
{
return result;
}
//
// Body ...
string bodyName = ToString(X_BAR_BDY) + "_" + nameMD5;
//
result = mBodyRect.Create(
chart_id,
bodyName,
window,
bar.time,
bar.GetUp(),
to,
bar.GetDown() //
);
if (!result)
{
//
mHighShadowRect.Delete();
mHighShadowRect.Detach();
return result;
}
//
// Low Shadow ...
string lShadowName = ToString(X_BAR_L_SHW) + "_" + nameMD5;
//
result = mLowShadowRect.Create(
chart_id,
lShadowName,
window,
bar.time,
bar.GetDown(),
to,
bar.low //
);
if (!result)
{
//
mBodyRect.Delete();
mBodyRect.Detach();
mHighShadowRect.Delete();
mHighShadowRect.Detach();
return result;
}
//
if (result)
{
ObjName(name);
}
//
return result;
}
//
// Getter(s) / Setter(s) ...
/**
* Set Pivot Width ...
*
* @param value: Integer ...
*/
void HighShadowWidth(int value)
{
//
if (value < 1)
{
value = 1;
}
//
mHighShadowRect.Width(value);
}
/**
* Set Pivot Color ...
*
* @param value: Color ...
*/
void HighShadowColor(color value)
{
mHighShadowRect.Color(value);
}
/**
* Set Pivot Style ...
*
* @param value: ENUM_LINE_STYLE member ...
*/
void HighShadowStyle(ENUM_LINE_STYLE value)
{
mHighShadowRect.Style(value);
}
/**
* Set Pivot Fill ...
*
* @param value: Boolean ...
*/
void HighShadowFill(bool value)
{
mHighShadowRect.Fill(value);
}
/**
* Set Pivot Width ...
*
* @param value: Integer ...
*/
void BodyWidth(int value)
{
//
if (value < 1)
{
value = 1;
}
//
mBodyRect.Width(value);
}
/**
* Set Pivot Color ...
*
* @param value: Color ...
*/
void BodyColor(color value)
{
mBodyRect.Color(value);
}
/**
* Set Pivot Style ...
*
* @param value: ENUM_LINE_STYLE member ...
*/
void BodyStyle(ENUM_LINE_STYLE value)
{
mBodyRect.Style(value);
}
/**
* Set Pivot Fill ...
*
* @param value: Boolean ...
*/
void BodyFill(bool value)
{
mBodyRect.Fill(value);
}
/**
* Set Pivot Width ...
*
* @param value: Integer ...
*/
void LowShadowWidth(int value)
{
//
if (value < 1)
{
value = 1;
}
//
mLowShadowRect.Width(value);
}
/**
* Set Pivot Color ...
*
* @param value: Color ...
*/
void LowShadowColor(color value)
{
mLowShadowRect.Color(value);
}
/**
* Set Pivot Style ...
*
* @param value: ENUM_LINE_STYLE member ...
*/
void LowShadowStyle(ENUM_LINE_STYLE value)
{
mLowShadowRect.Style(value);
}
/**
* Set Pivot Fill ...
*
* @param value: Boolean ...
*/
void LowShadowFill(bool value)
{
mLowShadowRect.Fill(value);
}
//
// Virtual ...
/**
* Retrieve Object Type ...
*
* @return ( ENUM_XCHARTOBJECTS )
*/
virtual ENUM_XCHARTOBJECTS Type()
{
return X_OHCL_OBJ;
}
//
private:
//
//
// Props ...
CChartObjectRectangle mHighShadowRect;
CChartObjectRectangle mBodyRect;
CChartObjectRectangle mLowShadowRect;
};
//
// Zone Ticks ...
@@ -2455,7 +2762,7 @@ class XCTickZoneObject : public XCBaseObject
}
//
int fromToDiff = ((int) to - (int) from);
int fromToDiff = ((int)to - (int)from);
datetime labelsDate = (datetime)((int)to - (fromToDiff / 5));
//
+320
View File
@@ -123,6 +123,196 @@ class XCPOIDrawer : public XCBase
mSubWindowIdentification = value;
}
//
// XOHCL ...
/**
* Get Bar Width ...
*
* @return ( int )
*/
int BarWidth()
{
return mBarWidth;
}
/**
* Set Bar Width ...
*
* @param value: Integer ...
*/
void BarWidth(int value)
{
//
if (value < 0)
{
value = 0;
}
//
mBarWidth = value;
}
/**
* Get Bar Bullish Color ...
*
* @return ( color )
*/
color BarBullishColor()
{
return mBarBullishColor;
}
/**
* Set Bar Bullish Color ...
*
* @param value: Color ...
*/
void BarBullishColor(color value)
{
mBarBullishColor = value;
}
/**
* Get Bar Bearish Color ...
*
* @return ( color )
*/
color BarBearishColor()
{
return mBarBearishColor;
}
/**
* Set Bar Bearish Color ...
*
* @param value: Color ...
*/
void BarBearishColor(color value)
{
mBarBearishColor = value;
}
/**
* Get Fill Bar High Shadow State ...
*
* @return ( bool )
*/
bool BarFillHighShadow()
{
return mBarFillHighShadow;
}
/**
* Set Fill Bar High Shadow State ...
*
* @param value: Boolean ...
*/
void BarFillHighShadow(bool value)
{
mBarFillHighShadow = value;
}
/**
* Get Bar High Shadow Style ...
*
* @return ( ENUM_LINE_STYLE )
*/
ENUM_LINE_STYLE BarHighShadowStyle()
{
return mBarHighShadowStyle;
}
/**
* Set Bar High Shadow Style ...
*
* @param value: ENUM_LINE_STYLE member ...
*/
void BarHighShadowStyle(ENUM_LINE_STYLE value)
{
mBarHighShadowStyle = value;
}
/**
* Get Fill Bar Body State ...
*
* @return ( bool )
*/
bool BarFillBody()
{
return mBarFillBody;
}
/**
* Set Fill Bar Body State ...
*
* @param value: Boolean ...
*/
void BarFillBody(bool value)
{
mBarFillBody = value;
}
/**
* Get Bar Body Style ...
*
* @return ( ENUM_LINE_STYLE )
*/
ENUM_LINE_STYLE BarBodyStyle()
{
return mBarBodyStyle;
}
/**
* Set Bar Body Style ...
*
* @param value: ENUM_LINE_STYLE member ...
*/
void BarBodyStyle(ENUM_LINE_STYLE value)
{
mBarBodyStyle = value;
}
/**
* Get Fill Bar Low Show State ...
*
* @return ( bool )
*/
bool BarFillLowShadow()
{
return mBarFillLowShadow;
}
/**
* Set Fill Bar Low Show State ...
*
* @param value: Boolean ...
*/
void BarFillLowShadow(bool value)
{
mBarFillLowShadow = value;
}
/**
* Get Bar Low Shadow Style ...
*
* @return ( ENUM_LINE_STYLE )
*/
ENUM_LINE_STYLE BarLowShadowStyle()
{
return mBarLowShadowStyle;
}
/**
* Set Bar Low Shadow Style ...
*
* @param value: ENUM_LINE_STYLE member ...
*/
void BarLowShadowStyle(ENUM_LINE_STYLE value)
{
mBarLowShadowStyle = value;
}
//
// Swing Low ...
@@ -1285,6 +1475,17 @@ class XCPOIDrawer : public XCBase
ChartIdentification(0);
SubWindowIdentification(0);
//
BarWidth(1);
BarBearishColor(clrRed);
BarBullishColor(clrLime);
BarFillBody(false);
BarFillHighShadow(false);
BarFillLowShadow(false);
BarBodyStyle(STYLE_DOT);
BarLowShadowStyle(STYLE_DOT);
BarHighShadowStyle(STYLE_DOT);
//
int arrowWidth = 1;
@@ -2550,6 +2751,113 @@ class XCPOIDrawer : public XCBase
return result;
}
/**
* Create Bar Object ...
*
* @param bar: XOHCL instance Reference ..
* @param object: XCOHCLObject pointer Reference ..
* @param to: Datetime ...
*
* @return ( bool )
*/
bool CreateBar(
XOHCL &bar,
XCOHCLObject *&object,
datetime to = NULL //
)
{
//
bool result = false;
//
object = NULL;
//
result = bar.IsValid();
if (!result)
{
return result;
}
//
if (!IsValid(to))
{
to = bar.time + PeriodSeconds(bar.period);
}
//
string prefix = Prefix();
long chartID = ChartIdentification();
int window = SubWindowIdentification();
//
int width = BarWidth();
//
color bullishColor = BarBullishColor();
color bearishColor = BarBearishColor();
//
bool fillBody = BarFillBody();
bool fillHighShadow = BarFillHighShadow();
bool fillLowShadow = BarFillLowShadow();
//
ENUM_LINE_STYLE bodyStyle = BarBodyStyle();
ENUM_LINE_STYLE highShadowStyle = BarHighShadowStyle();
ENUM_LINE_STYLE lowShadowStyle = BarLowShadowStyle();
//
object = new XCOHCLObject();
result = object.Create(
chartID,
window,
bar,
to,
prefix //
);
if (result)
{
//
// Apply Styling ...
//
object.BodyWidth(width);
object.LowShadowWidth(width);
object.HighShadowWidth(width);
//
object.BodyStyle(bodyStyle);
object.LowShadowStyle(lowShadowStyle);
object.HighShadowStyle(highShadowStyle);
//
bool isBullish = bar.IsBullish();
if (isBullish)
{
//
object.BodyColor(bullishColor);
object.LowShadowColor(bullishColor);
object.HighShadowColor(bullishColor);
}
else
{
//
object.BodyColor(bearishColor);
object.LowShadowColor(bearishColor);
object.HighShadowColor(bearishColor);
}
//
object.BodyFill(fillBody);
object.HighShadowFill(fillHighShadow);
object.LowShadowFill(fillLowShadow);
}
//
return result;
}
/**
* Draw Specified Signal ...
*
@@ -3300,6 +3608,18 @@ class XCPOIDrawer : public XCBase
long mChartIdentification; // Chart Id ...
int mSubWindowIdentification; // Sub Window ...
//
// XOHCL ...
int mBarWidth; // Bar Width ...
color mBarBullishColor; // Bar Bullish Color ...
color mBarBearishColor; // Bar Bearish Color ...
bool mBarFillHighShadow; // Fill Bar High Shadow ...
ENUM_LINE_STYLE mBarHighShadowStyle; // Bar High Shadow Style ...
bool mBarFillBody; // Fill Bar Body ...
ENUM_LINE_STYLE mBarBodyStyle; // Bar Body Style ...
bool mBarFillLowShadow; // Fill Bar Low Show ...
ENUM_LINE_STYLE mBarLowShadowStyle; // Bar Low Shadow Style ...
//
// Swing Low ...
int mSwingLowWidth; // Swing Low Width ...