This commit is contained in:
2025-01-04 05:19:28 +03:30
parent fbc232a2b7
commit 6f61bc6d30
8 changed files with 783 additions and 143 deletions
+303 -108
View File
@@ -2858,6 +2858,97 @@ class XCPOIDrawer : public XCBase
return result;
}
/**
* Create Specific Box on Chart ...
*
* @param upper: Double ...
* @param lower: Double ...
* @param from: Datetime ...
* @param to: Datetime ...
* @param clr: Color ...
* @param width: Integer ...
* @param fill: Boolean ...
* @param style: ENUM_LINE_STYLE member ...
*
* @return ( bool )
*/
bool CreateBox(
XCBoxObject *&object,
double upper,
double lower,
datetime from,
datetime to,
color clr = clrYellowGreen,
int width = 1,
bool fill = false,
ENUM_LINE_STYLE style = STYLE_SOLID //
)
{
//
bool result = false;
//
object = NULL;
//
to = NormalizeTime(to);
//
string dateStr = ToFormatString(from) + "|" + ToFormatString(to);
string dateMD5 = ToMD5(dateStr);
string name = "XBox_" +
ToString(upper) + "_" +
ToString(lower) + "_" +
dateMD5;
//
result =
upper > 0 &&
lower > 0 &&
to > from &&
IsValid(to) &&
IsValid(name) &&
IsValid(from) &&
upper > lower;
if (!result)
{
return result;
}
//
string prefix = Prefix();
long chartID = ChartIdentification();
int window = SubWindowIdentification();
//
object = new XCBoxObject();
result = object.Create(
chartID,
window,
name,
upper,
lower,
from,
to,
prefix //
);
//
if (!result)
{
return result;
}
//
object.BoxColor(clr);
object.BoxFill(fill);
object.BoxWidth(width);
object.BoxStyle(style);
//
return result;
}
/**
* Draw Specified Signal ...
*
@@ -2934,7 +3025,8 @@ class XCPOIDrawer : public XCBase
int DrawPriceZone(
XPriceZones &zone,
XCBaseObject *&drawnObjects[],
ENUM_X_DIRECTION forDir = X_DIRECTION_NONE //
ENUM_X_DIRECTION forDir = X_DIRECTION_NONE,
bool onlyBoundary = false //
)
{
//
@@ -2951,6 +3043,7 @@ class XCPOIDrawer : public XCBase
//
bool isBullish = IsBullish(forDir);
bool isBearish = IsBearish(forDir);
bool isAll = forDir == X_DIRECTION_ALL ||
forDir == X_DIRECTION_NONE;
@@ -2958,170 +3051,272 @@ class XCPOIDrawer : public XCBase
if (isAll || isBullish)
{
//
// Support Zone ...
if (zone.HasSupportZone())
if (onlyBoundary)
{
//
XCSupportZoneObject *iObj;
bool isCreated = CreateSupportZone(
zone.supportZone,
iObj //
double upper = 0;
double lower = 0;
datetime to = NULL;
datetime from = NULL;
//
bool isRetrieved = zone.GetBoxData(
X_DIRECTION_NONE,
upper,
lower,
from,
to //
);
if (isCreated)
if (isRetrieved)
{
//
Add(
(XCBaseObject *)iObj,
drawnObjects //
color clr =
isBullish
? BarBullishColor()
: isBearish
? BarBearishColor()
: clrGray;
XCBoxObject *iObj;
result = CreateBox(
iObj,
upper,
lower,
from,
to,
clr,
1,
false,
STYLE_DOT //
);
if (result)
{
//
Add(
(XCBaseObject *)iObj,
drawnObjects //
);
}
}
}
//
// Demand Zone ...
if (zone.HasDemandZone())
else
{
//
XCDemandZoneObject *iObj;
bool isCreated = CreateDemandZone(
zone.demandZone,
iObj //
);
if (isCreated)
// Support Zone ...
if (zone.HasSupportZone())
{
//
Add(
(XCBaseObject *)iObj,
drawnObjects //
XCSupportZoneObject *iObj;
bool isCreated = CreateSupportZone(
zone.supportZone,
iObj //
);
if (isCreated)
{
//
Add(
(XCBaseObject *)iObj,
drawnObjects //
);
}
}
}
//
// OrderBlock ...
if (zone.HasOrderBlock() &&
zone.orderBlock.IsBullish())
{
//
XCBullishOrderBlockObject *iObj;
bool isCreated = CreateBullishOrderBlock(
zone.orderBlock,
iObj //
);
if (isCreated)
// Demand Zone ...
if (zone.HasDemandZone())
{
//
Add(
(XCBaseObject *)iObj,
drawnObjects //
XCDemandZoneObject *iObj;
bool isCreated = CreateDemandZone(
zone.demandZone,
iObj //
);
if (isCreated)
{
//
Add(
(XCBaseObject *)iObj,
drawnObjects //
);
}
}
}
//
// FairValueGap ...
if (zone.HasFairValueGap() &&
zone.fairValueGap.IsBullish())
{
//
XCBullishFairValueGapObject *iObj;
bool isCreated = CreateBullishFairValueGap(
zone.fairValueGap,
iObj //
);
if (isCreated)
// OrderBlock ...
if (zone.HasOrderBlock() &&
zone.orderBlock.IsBullish())
{
//
Add(
(XCBaseObject *)iObj,
drawnObjects //
XCBullishOrderBlockObject *iObj;
bool isCreated = CreateBullishOrderBlock(
zone.orderBlock,
iObj //
);
if (isCreated)
{
//
Add(
(XCBaseObject *)iObj,
drawnObjects //
);
}
}
//
// FairValueGap ...
if (zone.HasFairValueGap() &&
zone.fairValueGap.IsBullish())
{
//
XCBullishFairValueGapObject *iObj;
bool isCreated = CreateBullishFairValueGap(
zone.fairValueGap,
iObj //
);
if (isCreated)
{
//
Add(
(XCBaseObject *)iObj,
drawnObjects //
);
}
}
}
}
//
if (isAll || !isBullish)
if (isAll || isBearish)
{
//
// Resistance Zone ...
if (zone.HasResistanceZone())
if (onlyBoundary)
{
//
XCResistanceZoneObject *iObj;
bool isCreated = CreateResistanceZone(
zone.resistanceZone,
iObj //
double upper = 0;
double lower = 0;
datetime to = NULL;
datetime from = NULL;
//
bool isRetrieved = zone.GetBoxData(
X_DIRECTION_NONE,
upper,
lower,
from,
to //
);
if (isCreated)
if (isRetrieved)
{
//
Add(
(XCBaseObject *)iObj,
drawnObjects //
color clr =
isBullish
? BarBullishColor()
: isBearish
? BarBearishColor()
: clrGray;
XCBoxObject *iObj;
result = CreateBox(
iObj,
upper,
lower,
from,
to,
clr,
1,
false,
STYLE_DOT //
);
if (result)
{
//
Add(
(XCBaseObject *)iObj,
drawnObjects //
);
}
}
}
//
// Supply Zone ...
if (zone.HasSupplyZone())
else
{
//
XCSupplyZoneObject *iObj;
bool isCreated = CreateSupplyZone(
zone.supplyZone,
iObj //
);
if (isCreated)
// Resistance Zone ...
if (zone.HasResistanceZone())
{
//
Add(
(XCBaseObject *)iObj,
drawnObjects //
XCResistanceZoneObject *iObj;
bool isCreated = CreateResistanceZone(
zone.resistanceZone,
iObj //
);
if (isCreated)
{
//
Add(
(XCBaseObject *)iObj,
drawnObjects //
);
}
}
}
//
// OrderBlock ...
if (zone.HasOrderBlock() &&
zone.orderBlock.IsBearish())
{
//
XCBearishOrderBlockObject *iObj;
bool isCreated = CreateBearishOrderBlock(
zone.orderBlock,
iObj //
);
if (isCreated)
// Supply Zone ...
if (zone.HasSupplyZone())
{
//
Add(
(XCBaseObject *)iObj,
drawnObjects //
XCSupplyZoneObject *iObj;
bool isCreated = CreateSupplyZone(
zone.supplyZone,
iObj //
);
if (isCreated)
{
//
Add(
(XCBaseObject *)iObj,
drawnObjects //
);
}
}
}
//
// FairValueGap ...
if (zone.HasFairValueGap() &&
zone.fairValueGap.IsBearish())
{
//
XCBearishFairValueGapObject *iObj;
bool isCreated = CreateBearishFairValueGap(
zone.fairValueGap,
iObj //
);
if (isCreated)
// OrderBlock ...
if (zone.HasOrderBlock() &&
zone.orderBlock.IsBearish())
{
//
Add(
(XCBaseObject *)iObj,
drawnObjects //
XCBearishOrderBlockObject *iObj;
bool isCreated = CreateBearishOrderBlock(
zone.orderBlock,
iObj //
);
if (isCreated)
{
//
Add(
(XCBaseObject *)iObj,
drawnObjects //
);
}
}
//
// FairValueGap ...
if (zone.HasFairValueGap() &&
zone.fairValueGap.IsBearish())
{
//
XCBearishFairValueGapObject *iObj;
bool isCreated = CreateBearishFairValueGap(
zone.fairValueGap,
iObj //
);
if (isCreated)
{
//
Add(
(XCBaseObject *)iObj,
drawnObjects //
);
}
}
}
}