last ...
This commit is contained in:
@@ -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 //
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user