This commit is contained in:
2025-03-23 03:46:13 +03:30
parent a84b0befe2
commit c49abe21db
10 changed files with 4204 additions and 2932 deletions
+119 -521
View File
@@ -23,8 +23,8 @@
// Imports ...
#include "../Classes/x-saherelm.base.class.mq5"
#include "../Classes/x-saherelm.x-cobject.class.mq5"
#include "../Libraries/x-saherelm.x-poi.state.lib.mq5"
#include "../Libraries/x-saherelm.x-poi.extensions.lib.mq5"
#include "../Libraries/x-saherelm.x-poi.state.lib.mq5"
//
// Definitions ...
@@ -3325,6 +3325,124 @@ class XCPOIDrawer : public XCBase
return result;
}
/**
* Draw Signal Box ...
*
* @param box: XSignalBox instance Reference ...
* @param objects: XCBaseObject pointer instance Reference ...
*
* @return ( bool )
*/
bool DrawSignalBox(
XSignalBox &box,
XCBaseObject *&objects[],
color clr = CLR_NONE //
)
{
//
bool result = false;
//
Clean(objects);
//
bool has = false;
bool hasColor = clr != CLR_NONE;
//
// Order Block ...
if (box.ob.IsValid())
{
//
XCBoxObject *iObj;
has = DrawBox(
box.ob,
iObj //
);
if (has)
{
//
iObj.BoxStyle(STYLE_DASH);
//
if (hasColor)
{
iObj.BoxColor(clr);
}
//
Add(
(XCBaseObject *)iObj,
objects //
);
}
}
//
// Fair Value Gap ...
if (box.fvg.IsValid())
{
//
XCBoxObject *iObj;
has = DrawBox(
box.fvg,
iObj //
);
if (has)
{
//
iObj.BoxStyle(STYLE_SOLID);
//
if (hasColor)
{
iObj.BoxColor(clr);
}
//
Add(
(XCBaseObject *)iObj,
objects //
);
}
}
//
// Sharp Zone ...
if (box.sharp.IsValid())
{
//
XCBoxObject *iObj;
has = DrawBox(
box.sharp,
iObj //
);
if (has)
{
//
iObj.BoxStyle(STYLE_DOT);
//
if (hasColor)
{
iObj.BoxColor(clr);
}
//
Add(
(XCBaseObject *)iObj,
objects //
);
}
}
//
result = HasChild(objects);
//
return result;
}
/**
* Draw Specified POI State ...
*
@@ -4110,526 +4228,6 @@ class XCPOIDrawer : public XCBase
return result;
}
//
int DrawOrderBlock(
XCOrderBlock *zone,
XCBaseObject *&objects[],
//
bool drawStartedBar = true,
bool drawActivatedBar = true,
bool drawBreakedBar = true,
bool drawWorkedBar = true,
//
int widthStartedBar = 1,
color clrStartedBar = clrYellow,
ENUM_LINE_STYLE styleStartedBar = STYLE_SOLID,
//
int widthActivatedBar = 1,
color clrActivatedBar = clrLime,
ENUM_LINE_STYLE styleActivatedBar = STYLE_SOLID,
//
int widthBreakedBar = 1,
color clrBreakedBar = clrRed,
ENUM_LINE_STYLE styleBreakedBar = STYLE_SOLID,
//
int widthWorkedBar = 1,
color clrWorkedBar = clrAqua,
ENUM_LINE_STYLE styleWorkedBar = STYLE_SOLID
//
)
{
//
int result = 0;
//
Clean(objects);
//
if (zone == NULL ||
!zone.IsValid())
{
return result;
}
//
ENUM_X_DIRECTION zoneDir = zone.GetDirection();
//
// Started Bar ...
XOHCL startedBar;
bool isBodyOut = false;
bool isStarted = zone
.IsStarted(
zoneDir,
startedBar,
isBodyOut //
);
if (isStarted)
{
//
datetime iBarTo = startedBar.NextAt();
//
XCOHCLObject *iBarObj;
bool isCreated = CreateBar(
startedBar,
iBarObj,
iBarTo //
);
if (isCreated)
{
//
iBarObj.BodyWidth(widthStartedBar);
iBarObj.LowShadowWidth(widthStartedBar);
iBarObj.HighShadowWidth(widthStartedBar);
//
iBarObj.BodyStyle(styleStartedBar);
iBarObj.LowShadowStyle(styleStartedBar);
iBarObj.HighShadowStyle(styleStartedBar);
//
iBarObj.BodyColor(clrStartedBar);
iBarObj.LowShadowColor(clrStartedBar);
iBarObj.HighShadowColor(clrStartedBar);
//
Add(
(XCBaseObject *)iBarObj,
objects //
);
}
}
//
// Activated Bar ...
XOHCL activatedBar;
bool isBodyIn = false;
bool isActivated = zone
.IsActivated(
zoneDir,
activatedBar,
isBodyIn,
false // Force Body Out Started ...
);
if (isActivated)
{
//
datetime iBarTo = activatedBar.NextAt();
//
XCOHCLObject *iBarObj;
bool isCreated = CreateBar(
activatedBar,
iBarObj,
iBarTo //
);
if (isCreated)
{
//
iBarObj.BodyWidth(widthActivatedBar);
iBarObj.LowShadowWidth(widthActivatedBar);
iBarObj.HighShadowWidth(widthActivatedBar);
//
iBarObj.BodyStyle(styleActivatedBar);
iBarObj.LowShadowStyle(styleActivatedBar);
iBarObj.HighShadowStyle(styleActivatedBar);
//
iBarObj.BodyColor(clrActivatedBar);
iBarObj.LowShadowColor(clrActivatedBar);
iBarObj.HighShadowColor(clrActivatedBar);
//
Add(
(XCBaseObject *)iBarObj,
objects //
);
}
}
//
// Breaked Bar ...
XOHCL breakedBar;
isBodyOut = false;
bool isBreaked = zone
.IsBreaked(
zoneDir,
breakedBar,
isBodyOut,
false, // Ignore Start ...
false // Force Body Out Started ...
);
if (isBreaked)
{
//
datetime iBarTo = breakedBar.NextAt();
//
XCOHCLObject *iBarObj;
bool isCreated = CreateBar(
breakedBar,
iBarObj,
iBarTo //
);
if (isCreated)
{
//
iBarObj.BodyWidth(widthBreakedBar);
iBarObj.LowShadowWidth(widthBreakedBar);
iBarObj.HighShadowWidth(widthBreakedBar);
//
iBarObj.BodyStyle(styleBreakedBar);
iBarObj.LowShadowStyle(styleBreakedBar);
iBarObj.HighShadowStyle(styleBreakedBar);
//
iBarObj.BodyColor(clrBreakedBar);
iBarObj.LowShadowColor(clrBreakedBar);
iBarObj.HighShadowColor(clrBreakedBar);
//
Add(
(XCBaseObject *)iBarObj,
objects //
);
}
}
//
// Worked Bar ...
XOHCL workedBar;
isBodyOut = false;
bool isWorked = zone
.IsWorked(
zoneDir,
workedBar,
isBodyOut,
false, // Ignore Activation ...
false, // Force Body Out Started ...
false // Force Body In Activated ...
);
if (isWorked)
{
//
datetime iBarTo = workedBar.NextAt();
//
XCOHCLObject *iBarObj;
bool isCreated = CreateBar(
workedBar,
iBarObj,
iBarTo //
);
if (isCreated)
{
//
iBarObj.BodyWidth(widthWorkedBar);
iBarObj.LowShadowWidth(widthWorkedBar);
iBarObj.HighShadowWidth(widthWorkedBar);
//
iBarObj.BodyStyle(styleWorkedBar);
iBarObj.LowShadowStyle(styleWorkedBar);
iBarObj.HighShadowStyle(styleWorkedBar);
//
iBarObj.BodyColor(clrWorkedBar);
iBarObj.LowShadowColor(clrWorkedBar);
iBarObj.HighShadowColor(clrWorkedBar);
//
Add(
(XCBaseObject *)iBarObj,
objects //
);
}
}
//
XCBaseObject *iObj;
bool isCreated = CreateOrderBlock(
zone,
iObj //
);
if (isCreated)
{
//
Add(
(XCBaseObject *)iObj,
objects //
);
}
//
result = ArraySize(objects);
//
return result;
}
//
int DrawFairValueGap(
XCFVG *zone,
XCBaseObject *&objects[],
//
bool drawStartedBar = true,
bool drawActivatedBar = true,
bool drawBreakedBar = true,
bool drawWorkedBar = true,
//
int widthStartedBar = 1,
color clrStartedBar = clrYellow,
ENUM_LINE_STYLE styleStartedBar = STYLE_SOLID,
//
int widthActivatedBar = 1,
color clrActivatedBar = clrLime,
ENUM_LINE_STYLE styleActivatedBar = STYLE_SOLID,
//
int widthBreakedBar = 1,
color clrBreakedBar = clrRed,
ENUM_LINE_STYLE styleBreakedBar = STYLE_SOLID,
//
int widthWorkedBar = 1,
color clrWorkedBar = clrAqua,
ENUM_LINE_STYLE styleWorkedBar = STYLE_SOLID
//
)
{
//
int result = 0;
//
Clean(objects);
//
if (zone == NULL ||
!zone.IsValid())
{
return result;
}
//
ENUM_X_DIRECTION zoneDir = zone.GetDirection();
//
// Started Bar ...
XOHCL startedBar;
bool isBodyOut = false;
bool isStarted = zone
.IsStarted(
zoneDir,
startedBar,
isBodyOut //
);
if (isStarted)
{
//
datetime iBarTo = startedBar.NextAt();
//
XCOHCLObject *iBarObj;
bool isCreated = CreateBar(
startedBar,
iBarObj,
iBarTo //
);
if (isCreated)
{
//
iBarObj.BodyWidth(widthStartedBar);
iBarObj.LowShadowWidth(widthStartedBar);
iBarObj.HighShadowWidth(widthStartedBar);
//
iBarObj.BodyStyle(styleStartedBar);
iBarObj.LowShadowStyle(styleStartedBar);
iBarObj.HighShadowStyle(styleStartedBar);
//
iBarObj.BodyColor(clrStartedBar);
iBarObj.LowShadowColor(clrStartedBar);
iBarObj.HighShadowColor(clrStartedBar);
//
Add(
(XCBaseObject *)iBarObj,
objects //
);
}
}
//
// Activated Bar ...
XOHCL activatedBar;
bool isBodyIn = false;
bool isActivated = zone
.IsActivated(
zoneDir,
activatedBar,
isBodyIn,
false // Force Body Out Started ...
);
if (isActivated)
{
//
datetime iBarTo = activatedBar.NextAt();
//
XCOHCLObject *iBarObj;
bool isCreated = CreateBar(
activatedBar,
iBarObj,
iBarTo //
);
if (isCreated)
{
//
iBarObj.BodyWidth(widthActivatedBar);
iBarObj.LowShadowWidth(widthActivatedBar);
iBarObj.HighShadowWidth(widthActivatedBar);
//
iBarObj.BodyStyle(styleActivatedBar);
iBarObj.LowShadowStyle(styleActivatedBar);
iBarObj.HighShadowStyle(styleActivatedBar);
//
iBarObj.BodyColor(clrActivatedBar);
iBarObj.LowShadowColor(clrActivatedBar);
iBarObj.HighShadowColor(clrActivatedBar);
//
Add(
(XCBaseObject *)iBarObj,
objects //
);
}
}
//
// Breaked Bar ...
XOHCL breakedBar;
isBodyOut = false;
bool isBreaked = zone
.IsBreaked(
zoneDir,
breakedBar,
isBodyOut,
false, // Ignore Start ...
false // Force Body Out Started ...
);
if (isBreaked)
{
//
datetime iBarTo = breakedBar.NextAt();
//
XCOHCLObject *iBarObj;
bool isCreated = CreateBar(
breakedBar,
iBarObj,
iBarTo //
);
if (isCreated)
{
//
iBarObj.BodyWidth(widthBreakedBar);
iBarObj.LowShadowWidth(widthBreakedBar);
iBarObj.HighShadowWidth(widthBreakedBar);
//
iBarObj.BodyStyle(styleBreakedBar);
iBarObj.LowShadowStyle(styleBreakedBar);
iBarObj.HighShadowStyle(styleBreakedBar);
//
iBarObj.BodyColor(clrBreakedBar);
iBarObj.LowShadowColor(clrBreakedBar);
iBarObj.HighShadowColor(clrBreakedBar);
//
Add(
(XCBaseObject *)iBarObj,
objects //
);
}
}
//
// Worked Bar ...
XOHCL workedBar;
isBodyOut = false;
bool isWorked = zone
.IsWorked(
zoneDir,
workedBar,
isBodyOut,
false, // Ignore Activation ...
false, // Force Body Out Started ...
false // Force Body In Activated ...
);
if (isWorked)
{
//
datetime iBarTo = workedBar.NextAt();
//
XCOHCLObject *iBarObj;
bool isCreated = CreateBar(
workedBar,
iBarObj,
iBarTo //
);
if (isCreated)
{
//
iBarObj.BodyWidth(widthWorkedBar);
iBarObj.LowShadowWidth(widthWorkedBar);
iBarObj.HighShadowWidth(widthWorkedBar);
//
iBarObj.BodyStyle(styleWorkedBar);
iBarObj.LowShadowStyle(styleWorkedBar);
iBarObj.HighShadowStyle(styleWorkedBar);
//
iBarObj.BodyColor(clrWorkedBar);
iBarObj.LowShadowColor(clrWorkedBar);
iBarObj.HighShadowColor(clrWorkedBar);
//
Add(
(XCBaseObject *)iBarObj,
objects //
);
}
}
//
XCBaseObject *iObj;
bool isCreated = CreateFairValueGap(
zone,
iObj //
);
if (isCreated)
{
//
Add(
(XCBaseObject *)iObj,
objects //
);
}
//
result = ArraySize(objects);
//
return result;
}
//
protected:
//