Files
xMQL5/BKPS/14041018/Documents/BKP/x-saherelm.xfima.x-poi.drawer.class copy.mq5
T
2026-01-08 11:39:42 +03:30

1775 lines
45 KiB
Plaintext

///////////////////////////////////////////////////////
//
// SaherElm IT Center MQL5 Class
// -------------------------------------------------
// Name: XCXFIMAPoiDrawer ...
// Description: XFIMA POI Drawer Class ...
//
//
// Maintainer:
// ------------
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
//
//////////////////////////////////////////////////////
//
// Global Properties ...
#property library
#property copyright "Copyright 2023, SaherElm IT Center"
#property link "https://saherelm.ir"
#property version "1.00"
#property description "SaherElm XFIMA POI Drawer Class"
#property strict
//
// Imports ...
#include "../../Classes/x-saherelm.x-poi.drawer.class.mq5"
#include "../Libraries/x-saherelm.xfima.lib.mq5"
//
// Implementation ...
class XCXFIMAPOIDrawer : public XCPOIDrawer
{
//
public:
//
// Props ...
//
// Tested Zones ...
color testedBullishColor;
color testedBearishColor;
//
// Breaked Zones ...
color breakedBullishColor;
color breakedBearishColor;
//
// FakeBreaked Zones ...
color fakeBreakedBullishColor;
color fakeBreakedBearishColor;
//
// Constructor ...
XCXFIMAPOIDrawer() : XCPOIDrawer()
{
Default();
}
//
// Deconstructor ...
~XCXFIMAPOIDrawer()
{
}
//
// Overrides ...
/**
* Do additional Configurations for Child Classes ...
*/
void virtual Default() override
{
//
// Apply Default Props ...
//
Prefix(NULL);
ChartIdentification(0);
SubWindowIdentification(0);
//
defaultBullishStyle.width = 1;
defaultBullishStyle.clr = clrAqua;
defaultBullishStyle.style = STYLE_SOLID;
//
defaultBearishStyle.width = 1;
defaultBearishStyle.clr = clrMagenta;
defaultBearishStyle.style = STYLE_SOLID;
//
boxBullishStyle = defaultBullishStyle;
boxBearishStyle = defaultBearishStyle;
//
testedBullishColor = clrLime;
breakedBullishColor = clrGreen;
fakeBreakedBullishColor = clrYellow;
//
testedBearishColor = clrRed;
breakedBearishColor = clrDarkRed;
fakeBreakedBearishColor = clrDarkOrange;
}
//
// Get Specified Directional Arrow Anchor ...
ENUM_ARROW_ANCHOR GetArrowAnchor(ENUM_X_DIRECTION forDir)
{
//
ENUM_ARROW_ANCHOR result = ANCHOR_BOTTOM;
//
if (HasDirection(forDir))
{
//
result =
IsSpecifiedBullish(forDir)
? ANCHOR_TOP
: ANCHOR_BOTTOM;
}
//
return result;
}
//
// Get Specified Directional Arrow Code ...
int GetArrowCode(ENUM_X_DIRECTION forDir)
{
//
int result = 159;
//
if (HasDirection(forDir))
{
//
result =
IsSpecifiedBullish(forDir)
? 233
: 234;
}
//
return result;
}
//
// Get Specified Directional Arrow Code ...
color GetArrowColor(ENUM_X_DIRECTION forDir)
{
//
color result = clrYellow;
//
if (HasDirection(forDir))
{
//
result =
IsSpecifiedBullish(forDir)
? clrAqua
: clrMagenta;
}
//
return result;
}
//
// Get Specified Directional Arrow Price Type ...
ENUM_X_PRICE GetArrowPriceType(ENUM_X_DIRECTION forDir)
{
//
ENUM_X_PRICE result = X_PRICE_CLOSE;
//
if (HasDirection(forDir))
{
//
result =
IsSpecifiedBullish(forDir)
? X_PRICE_LOW
: X_PRICE_HIGH;
}
//
return result;
}
/**
* Get Tested Zone Style ...
*
* @param style: reference to hold result ...
* @param zone: Specified Zone ...
*
* @return ( bool )
*/
bool GetTestedStyle(
XPOIStyle &style,
XBoxZone &zone //
)
{
//
bool result = false;
//
style.Clean();
//
result = zone.IsValid();
if (!result)
{
return result;
}
//
GetBoxStyle(
style,
zone.dir //
);
//
style.width = 3;
style.clr =
zone.IsBullish()
? testedBullishColor
: testedBearishColor;
//
return result;
}
/**
* Get Patterns Zone Style ...
*
* @param style: reference to hold result ...
* @param zone: Specified Zone ...
*
* @return ( bool )
*/
bool GetPatternStyle(
XPOIStyle &style,
XBoxZone &zone //
)
{
//
bool result = false;
//
style.Clean();
//
result = zone.IsValid();
if (!result)
{
return result;
}
//
GetPatternStyle(
style,
zone.dir //
);
//
return result;
}
/**
* Get Patterns Zone Style ...
*
* @param style: reference to hold result ...
* @param forDir: Specified Direction ...
*
* @return ( bool )
*/
bool GetPatternStyle(
XPOIStyle &style,
ENUM_X_DIRECTION forDir //
)
{
//
bool result = false;
//
style.Clean();
//
result = HasDirection(forDir);
if (!result)
{
return result;
}
//
GetBoxStyle(
style,
forDir //
);
//
style.width = 2;
style.style = STYLE_DASH;
//
return result;
}
/**
* Get Breaked Zone Style ...
*
* @param style: reference to hold result ...
* @param zone: Specified Zone ...
*
* @return ( bool )
*/
bool GetBreakedStyle(
XPOIStyle &style,
XBoxZone &zone //
)
{
//
bool result = false;
//
style.Clean();
//
result = zone.IsValid();
if (!result)
{
return result;
}
//
GetBoxStyle(
style,
zone.dir //
);
//
style.width = 3;
style.clr =
zone.IsBullish()
? breakedBullishColor
: breakedBearishColor;
//
return result;
}
/**
* Get Fake Breaked Zone Style ...
*
* @param style: reference to hold result ...
* @param zone: Specified Zone ...
*
* @return ( bool )
*/
bool GetFakeBreakedStyle(
XPOIStyle &style,
XBoxZone &zone //
)
{
//
bool result = false;
//
style.Clean();
//
result = zone.IsValid();
if (!result)
{
return result;
}
//
GetBoxStyle(
style,
zone.dir //
);
//
style.width = 3;
style.clr =
zone.IsBullish()
? fakeBreakedBullishColor
: fakeBreakedBearishColor;
//
return result;
}
/**
* Fill Arrow Based Drawing Specs ...
*
* @param forDir: Specified Direction ...
* @param arrowPriceType: ENUM_X_PRICE, refrence for Arrow Price ...
* @param arrowCode: int, reference for Arrow Code ...
* @param arrowWidth: int, reference for Arrow Width ...
* @param arrowColor: color, reference for Arrow Color ...
* @param arrowAnchor: ENUM_ARROW_ANCHOR, reference for Arrow Anchor ...
*/
void FillArrowSpecs(
ENUM_X_DIRECTION forDir,
ENUM_X_PRICE &arrowPriceType,
int &arrowCode,
int &arrowWidth,
color &arrowColor,
ENUM_ARROW_ANCHOR &arrowAnchor //
)
{
//
// Prepare ...
arrowCode = 159;
arrowWidth = 2;
arrowColor = CLR_NONE;
arrowAnchor = ANCHOR_BOTTOM;
arrowPriceType = X_PRICE_CLOSE;
//
if (HasDirection(forDir))
{
//
arrowCode = GetArrowCode(forDir);
arrowColor = GetArrowColor(forDir);
arrowAnchor = GetArrowAnchor(forDir);
arrowPriceType = GetArrowPriceType(forDir);
}
}
/**
* Apply Tested Style ...
*
* @param object: reference pointer to Object ...
* @param zone: reference to Zone ...
*/
void ApplyTestedStyle(
XCBoxObject *&object,
XBoxZone &zone //
)
{
//
if (!zone.IsValid() ||
object == NULL)
{
return;
}
//
XPOIStyle style;
if (!GetTestedStyle(style, zone))
{
return;
}
//
ApplyBoxStyle(
object,
style //
);
}
/**
* Apply Breaked Style ...
*
* @param object: reference pointer to Object ...
* @param zone: reference to Zone ...
*/
void ApplyBreakedStyle(
XCBoxObject *&object,
XBoxZone &zone //
)
{
//
if (!zone.IsValid() ||
object == NULL)
{
return;
}
//
XPOIStyle style;
if (!GetBreakedStyle(style, zone))
{
return;
}
//
ApplyBoxStyle(
object,
style //
);
}
/**
* Apply Tested Style ...
*
* @param object: reference pointer to Object ...
* @param zone: reference to Zone ...
*/
void ApplyFakeBreakStyle(
XCBoxObject *&object,
XBoxZone &zone //
)
{
//
if (!zone.IsValid() ||
object == NULL)
{
return;
}
//
XPOIStyle style;
if (!GetFakeBreakedStyle(style, zone))
{
return;
}
//
ApplyBoxStyle(
object,
style //
);
}
/**
* Apply Pattern Style ...
*
* @param object: reference pointer to Object ...
* @param zone: reference to Zone ...
*/
void ApplyPatternStyle(
XCBoxObject *&object,
XBoxZone &zone //
)
{
//
if (!zone.IsValid() ||
object == NULL)
{
return;
}
//
XPOIStyle style;
if (!GetPatternStyle(style, zone))
{
return;
}
//
ApplyBoxStyle(
object,
style //
);
}
/**
* Apply Patterns Style ...
*
* @param object: reference pointer to Object ...
*/
void ApplyPatternsStyle(
CArrayObj *&objects //
)
{
//
if (objects == NULL ||
objects.Total() == 0)
{
return;
}
//
bool has = false;
XPOIStyle iStyle;
string iName = NULL;
XCBoxObject *iBoxObj = NULL;
ENUM_X_DIRECTION iDir = X_DIRECTION_NONE;
for (int i = 0; i < objects.Total(); i++)
{
//
iBoxObj = (XCBoxObject *)objects.At(i);
iName = iBoxObj.ObjName();
//
iDir =
IsSpecifiedValid(iName) &&
Contains(
"BULL",
iName //
)
? X_DIRECTION_BULLISH
: IsSpecifiedValid(iName) &&
Contains(
"BEAR",
iName //
)
? X_DIRECTION_BEARISH
: X_DIRECTION_NONE;
//
has = GetPatternStyle(iStyle, iDir);
if (has)
{
//
ApplyBoxStyle(
iBoxObj,
iStyle //
);
}
//
iStyle.Clean();
ZeroMemory(iBoxObj);
}
}
/**
* Apply Style to Specified Pivot Object ...
*
* @param object: reference pointer to Object ...
* @param zone: reference to Zone ...
*/
void ApplyPivotStyle(
XCBarArrowObject *&object,
XPOIStyle &style //
)
{
//
if (object == NULL)
{
return;
}
//
object.ArrowColor(style.clr);
object.ArrowWidth(style.width);
}
/**
* Apply Patterns Style ...
*
* @param object: reference pointer to Object ...
*/
void ApplyPivotsStyle(
CArrayObj *&objects //
)
{
//
if (objects == NULL ||
objects.Total() == 0)
{
return;
}
//
bool has = false;
XPOIStyle iStyle;
string iName = NULL;
XCBarArrowObject *iObj = NULL;
ENUM_X_DIRECTION iDir = X_DIRECTION_NONE;
for (int i = 0; i < objects.Total(); i++)
{
//
iObj = (XCBarArrowObject *)objects.At(i);
iName = iObj.ObjName();
//
iDir =
IsSpecifiedValid(iName) &&
Contains(
"BULL",
iName //
)
? X_DIRECTION_BULLISH
: IsSpecifiedValid(iName) &&
Contains(
"BEAR",
iName //
)
? X_DIRECTION_BEARISH
: X_DIRECTION_NONE;
//
has = GetPatternStyle(iStyle, iDir);
if (has)
{
//
ApplyPivotStyle(
iObj,
iStyle //
);
}
//
iStyle.Clean();
ZeroMemory(iObj);
}
}
/**
* Draw Specified Market Structure Based on Given Configs ...
*
* @param structure: XFIMAMarketStructure, reference to Provide Specifid Market Structure ...
* @param config: XFIMAMarketStructureDrawerConfig, reference to Provide Drawing Configurations ...
* @param objects: CArrayObj, pointer reference to Holds drawn Objects instances ...
*
* @return ( int )
*/
int DrawMarketStructure(
XFIMAMarketStructure &structure,
XFIMAMarketStructureDrawerConfig &config,
CArrayObj *&objects //
)
{
//
int result = 0;
//
// Normalize ...
if (objects == NULL)
{
objects = new CArrayObj();
}
//
// Prepare ...
// objects.Clear();
//
int count = 0;
bool has = false;
int arrowCode = -1;
int arrowWidth = 3;
string arrowName = NULL;
color arrowColor = CLR_NONE;
ENUM_X_PRICE arrowPriceType = X_PRICE_CLOSE;
ENUM_ARROW_ANCHOR arrowAnchor = ANCHOR_BOTTOM;
//
int bullArrowCode = GetArrowCode(X_DIRECTION_BULLISH);
int bearArrowCode = GetArrowCode(X_DIRECTION_BEARISH);
//
// Validate ...
has = structure.bar.IsValid();
if (!has)
{
return result;
}
//
// Apply Drawing Methods ...
// //
// // OB ...
// if (config.drawOB)
// {
// //
// // Validate ...
// has = structure.ob.IsValid();
// if (has)
// {
// //
// XCBoxObject *iObj;
// has = DrawBox(
// structure.ob,
// iObj //
// );
// if (has)
// {
// objects.Add(iObj);
// }
// //
// ZeroMemory(iObj);
// }
// }
// //
// // FVG ...
// if (config.drawFVG)
// {
// //
// // Validate ...
// has = structure.fvg.IsValid();
// if (has)
// {
// //
// XCBoxObject *iObj;
// has = DrawBox(
// structure.fvg,
// iObj //
// );
// if (has)
// {
// objects.Add(iObj);
// }
// //
// ZeroMemory(iObj);
// }
// }
// //
// // Support ...
// if (config.drawSupport)
// {
// //
// // Validate ...
// has = structure.support.IsValid();
// if (has)
// {
// //
// XCBoxObject *iObj;
// has = DrawBox(
// structure.support,
// iObj //
// );
// if (has)
// {
// objects.Add(iObj);
// }
// //
// ZeroMemory(iObj);
// }
// }
// //
// // Resistance ...
// if (config.drawResistance)
// {
// //
// // Validate ...
// has = structure.resistance.IsValid();
// if (has)
// {
// //
// XCBoxObject *iObj;
// has = DrawBox(
// structure.resistance,
// iObj //
// );
// if (has)
// {
// objects.Add(iObj);
// }
// //
// ZeroMemory(iObj);
// }
// }
// //
// // Swing Trend ...
// if (config.drawSwingTrend)
// {
// //
// // Validate ...
// has = HasDirection(structure.trendDir) &&
// HasChild(structure.trendSwings);
// if (has)
// {
// //
// CChartObjectTrend *iObj;
// has = DrawSwingTrend(
// structure.trendSwings,
// structure.trendDir,
// iObj, //
// config.swingTrendRayRight, // Ray Right ...
// config.swingTrendRayLeft // Ray Left ...
// );
// if (has)
// {
// objects.Add(iObj);
// }
// //
// ZeroMemory(iObj);
// }
// }
// //
// // Start Pattern ...
// if (config.drawStarPattern)
// {
// //
// // Validate ...
// has = HasDirection(structure.starPatternDir);
// if (has)
// {
// //
// FillArrowSpecs(
// structure.starPatternDir,
// arrowPriceType,
// arrowCode,
// arrowWidth,
// arrowColor,
// arrowAnchor //
// );
// XCBarArrowObject *iObj;
// arrowName = "XStar_" + ToMD5(structure.bar.time);
// has = DrawBarArrow(
// structure.bar,
// iObj,
// arrowPriceType,
// arrowCode,
// arrowColor,
// arrowWidth,
// arrowAnchor,
// arrowName //
// );
// if (has)
// {
// objects.Add(iObj);
// }
// }
// }
// //
// // Flag Pattern ...
// if (config.drawFlagPattern)
// {
// //
// // Validate ...
// has = HasDirection(structure.flagPatternDir) &&
// structure.flagSwing.IsValid();
// if (has)
// {
// //
// FillArrowSpecs(
// structure.flagPatternDir,
// arrowPriceType,
// arrowCode,
// arrowWidth,
// arrowColor,
// arrowAnchor //
// );
// XCBarArrowObject *iObj;
// arrowName = "XFlag_" + ToMD5(structure.bar.time);
// has = DrawBarArrow(
// structure.bar,
// iObj,
// arrowPriceType,
// arrowCode,
// arrowColor,
// arrowWidth,
// arrowAnchor,
// arrowName //
// );
// if (has)
// {
// objects.Add(iObj);
// }
// }
// }
// //
// // Rising Pattern ...
// if (config.drawRisingPattern)
// {
// //
// // Validate ...
// has = HasDirection(structure.risingPatternDir);
// if (has)
// {
// //
// FillArrowSpecs(
// structure.risingPatternDir,
// arrowPriceType,
// arrowCode,
// arrowWidth,
// arrowColor,
// arrowAnchor //
// );
// XCBarArrowObject *iObj;
// arrowName = "XRise_" + ToMD5(structure.bar.time);
// has = DrawBarArrow(
// structure.bar,
// iObj,
// arrowPriceType,
// arrowCode,
// arrowColor,
// arrowWidth,
// arrowAnchor,
// arrowName //
// );
// if (has)
// {
// objects.Add(iObj);
// }
// }
// }
// //
// // Piercing Pattern ...
// if (config.drawPiercingPattern)
// {
// //
// // Validate ...
// has = HasDirection(structure.piercingPatternDir);
// if (has)
// {
// //
// FillArrowSpecs(
// structure.piercingPatternDir,
// arrowPriceType,
// arrowCode,
// arrowWidth,
// arrowColor,
// arrowAnchor //
// );
// XCBarArrowObject *iObj;
// arrowName = "XPiercing_" + ToMD5(structure.bar.time);
// has = DrawBarArrow(
// structure.bar,
// iObj,
// arrowPriceType,
// arrowCode,
// arrowColor,
// arrowWidth,
// arrowAnchor,
// arrowName //
// );
// if (has)
// {
// objects.Add(iObj);
// }
// }
// }
// //
// // Signal Key Bar Pattern ...
// if (config.drawSignalKeyBarPattern)
// {
// //
// // Validate ...
// has = HasDirection(structure.signalKeyBarPatternDir);
// if (has)
// {
// //
// FillArrowSpecs(
// structure.signalKeyBarPatternDir,
// arrowPriceType,
// arrowCode,
// arrowWidth,
// arrowColor,
// arrowAnchor //
// );
// XCBarArrowObject *iObj;
// arrowName = "XSignalKey_" + ToMD5(structure.bar.time);
// has = DrawBarArrow(
// structure.bar,
// iObj,
// arrowPriceType,
// arrowCode,
// arrowColor,
// arrowWidth,
// arrowAnchor,
// arrowName //
// );
// if (has)
// {
// objects.Add(iObj);
// }
// }
// }
// //
// // Pinned Bar ...
// if (config.drawPinned)
// {
// //
// // Validate ...
// has = HasDirection(structure.pinnedDir);
// if (has)
// {
// //
// FillArrowSpecs(
// structure.pinnedDir,
// arrowPriceType,
// arrowCode,
// arrowWidth,
// arrowColor,
// arrowAnchor //
// );
// XCBarArrowObject *iObj;
// arrowName = "XPin_" + ToMD5(structure.bar.time);
// has = DrawBarArrow(
// structure.bar,
// iObj,
// arrowPriceType,
// arrowCode,
// arrowColor,
// arrowWidth,
// arrowAnchor,
// arrowName //
// );
// if (has)
// {
// objects.Add(iObj);
// }
// }
// }
// //
// // Momentum Bar ...
// if (config.drawMomentum)
// {
// //
// // Validate ...
// has = HasDirection(structure.momentumDir);
// if (has)
// {
// //
// FillArrowSpecs(
// structure.momentumDir,
// arrowPriceType,
// arrowCode,
// arrowWidth,
// arrowColor,
// arrowAnchor //
// );
// XCBarArrowObject *iObj;
// arrowName = "XMomentum_" + ToMD5(structure.bar.time);
// has = DrawBarArrow(
// structure.bar,
// iObj,
// arrowPriceType,
// arrowCode,
// arrowColor,
// arrowWidth,
// arrowAnchor,
// arrowName //
// );
// if (has)
// {
// objects.Add(iObj);
// }
// }
// }
// //
// // Engulfed Bar ...
// if (config.drawEngulfed)
// {
// //
// // Validate ...
// has = HasDirection(structure.engulfedDir);
// if (has)
// {
// //
// FillArrowSpecs(
// structure.engulfedDir,
// arrowPriceType,
// arrowCode,
// arrowWidth,
// arrowColor,
// arrowAnchor //
// );
// XCBarArrowObject *iObj;
// arrowName = "XEngulf_" + ToMD5(structure.bar.time);
// has = DrawBarArrow(
// structure.bar,
// iObj,
// arrowPriceType,
// arrowCode,
// arrowColor,
// arrowWidth,
// arrowAnchor,
// arrowName //
// );
// if (has)
// {
// objects.Add(iObj);
// }
// }
// }
// //
// // True Gaped Bar ...
// if (config.drawTrueGaped)
// {
// //
// // Validate ...
// has = HasDirection(structure.trueGapedDir);
// if (has)
// {
// //
// FillArrowSpecs(
// structure.trueGapedDir,
// arrowPriceType,
// arrowCode,
// arrowWidth,
// arrowColor,
// arrowAnchor //
// );
// XCBarArrowObject *iObj;
// arrowName = "XTrueGap_" + ToMD5(structure.bar.time);
// has = DrawBarArrow(
// structure.bar,
// iObj,
// arrowPriceType,
// arrowCode,
// arrowColor,
// arrowWidth,
// arrowAnchor,
// arrowName //
// );
// if (has)
// {
// objects.Add(iObj);
// }
// }
// }
// //
// // XFIMA PV Analysis ...
// if (config.drawFIMAPVPivotsAnalysis)
// {
// //
// // Validate ...
// has = structure.pvAnalysis.IsValid();
// if (has)
// {
// //
// XCPivotAnalysisObject *iObj;
// has = DrawPivotAnalysis(
// structure.pvAnalysis,
// iObj,
// config.drawFIMAPVPivotsAnalysisTrends,
// config.drawFIMAPVPivotsAnalysisZones,
// config.drawFIMAPVPivotsAnalysisPivots,
// bearArrowCode,
// bullArrowCode //
// );
// if (has)
// {
// objects.Add(iObj);
// }
// }
// }
// //
// // XFIMA Sar Analysis ...
// if (config.drawFIMASARPivotsAnalysis)
// {
// //
// // Validate ...
// has = structure.sarAnalysis.IsValid();
// if (has)
// {
// //
// XCPivotAnalysisObject *iObj;
// has = DrawPivotAnalysis(
// structure.pvAnalysis,
// iObj,
// config.drawFIMASARPivotsAnalysisTrends,
// config.drawFIMASARPivotsAnalysisZones,
// config.drawFIMASARPivotsAnalysisPivots,
// bearArrowCode,
// bullArrowCode //
// );
// if (has)
// {
// objects.Add(iObj);
// }
// }
// }
// //
// // XFIMA ZigZag Analysis ...
// if (config.drawFIMAZigZagPivotsAnalysis)
// {
// //
// // Validate ...
// has = structure.zigzagAnalysis.IsValid();
// if (has)
// {
// //
// XCPivotAnalysisObject *iObj;
// has = DrawPivotAnalysis(
// structure.pvAnalysis,
// iObj,
// config.drawFIMAZigZagPivotsAnalysisTrends,
// config.drawFIMAZigZagPivotsAnalysisZones,
// config.drawFIMAZigZagPivotsAnalysisPivots,
// bearArrowCode,
// bullArrowCode //
// );
// if (has)
// {
// objects.Add(iObj);
// }
// }
// }
// //
// // Fake Breaked Zone ...
// if (config.drawFakeBreakedZone &&
// structure.fakeBreakedZone.IsValid())
// {
// //
// XCBoxObject *iObj;
// has = DrawBox(
// structure.fakeBreakedZone,
// iObj //
// );
// if (has)
// {
// //
// // Apply Style ...
// ApplyFakeBreakStyle(
// iObj,
// structure.fakeBreakedZone //
// );
// //
// objects.Add(iObj);
// }
// //
// ZeroMemory(iObj);
// }
// //
// // Recently Tested Zones ...
// if (config.drawRecentlyTestedZones &&
// HasChild(structure.recentlyTestedZones))
// {
// //
// XCBoxObject *iObj;
// count = ArraySize(structure.recentlyTestedZones);
// for (int i = 0; i < count; i++)
// {
// //
// // Draw Box ...
// has = DrawBox(
// structure.recentlyTestedZones[i],
// iObj //
// );
// if (has)
// {
// //
// ApplyTestedStyle(
// iObj,
// structure.recentlyTestedZones[i] //
// );
// //
// objects.Add(iObj);
// }
// //
// ZeroMemory(iObj);
// }
// }
// //
// // Recently Breaked Zones ...
// if (config.drawRecentlyBreakedZones &&
// HasChild(structure.recentlyBreakedZones))
// {
// //
// XCBoxObject *iObj;
// count = ArraySize(structure.recentlyBreakedZones);
// for (int i = 0; i < count; i++)
// {
// //
// // Draw Box ...
// has = DrawBox(
// structure.recentlyBreakedZones[i],
// iObj //
// );
// if (has)
// {
// //
// ApplyBreakedStyle(
// iObj,
// structure.recentlyBreakedZones[i] //
// );
// //
// objects.Add(iObj);
// }
// //
// ZeroMemory(iObj);
// }
// }
// //
// // Draw Recent Patterns ...
// if (config.drawRecentPatterns)
// {
// //
// int baseArrowCode = 159;
// CArrayObj *patternObjects;
// //
// // Order Blocs ...
// if (config.drawOB &&
// HasChild(structure.obs))
// {
// //
// count = DrawBoxes(
// structure.obs,
// patternObjects //
// );
// has = IsValidSize(count);
// if (has)
// {
// //
// ApplyPatternsStyle(patternObjects);
// //
// AddObjects(
// patternObjects,
// objects //
// );
// }
// //
// ZeroMemory(patternObjects);
// }
// //
// // Fair Value Gaps ...
// if (config.drawFVG &&
// HasChild(structure.fvgs))
// {
// //
// count = DrawBoxes(
// structure.fvgs,
// patternObjects //
// );
// has = IsValidSize(count);
// if (has)
// {
// //
// ApplyPatternsStyle(patternObjects);
// //
// AddObjects(
// patternObjects,
// objects //
// );
// }
// //
// ZeroMemory(patternObjects);
// }
// //
// // Supports ...
// if (config.drawSupport &&
// HasChild(structure.supports))
// {
// //
// count = DrawBoxes(
// structure.supports,
// patternObjects //
// );
// has = IsValidSize(count);
// if (has)
// {
// //
// ApplyPatternsStyle(patternObjects);
// //
// AddObjects(
// patternObjects,
// objects //
// );
// }
// //
// ZeroMemory(patternObjects);
// }
// //
// // Resistances ...
// if (config.drawResistance &&
// HasChild(structure.obs))
// {
// //
// count = DrawBoxes(
// structure.resistances,
// patternObjects //
// );
// has = IsValidSize(count);
// if (has)
// {
// //
// ApplyPatternsStyle(patternObjects);
// //
// AddObjects(
// patternObjects,
// objects //
// );
// }
// //
// ZeroMemory(patternObjects);
// }
// //
// // Pin Bars ...
// if (config.drawPinned &&
// HasChild(structure.pinBars))
// {
// //
// count = DrawPivots(
// structure.pinBars,
// patternObjects,
// baseArrowCode,
// baseArrowCode //
// );
// has = IsValidSize(count);
// if (has)
// {
// //
// ApplyPivotsStyle(patternObjects);
// //
// AddObjects(
// patternObjects,
// objects //
// );
// }
// //
// ZeroMemory(patternObjects);
// }
// //
// // Engulf Bars ...
// if (config.drawEngulfed &&
// HasChild(structure.engulfBars))
// {
// //
// count = DrawPivots(
// structure.engulfBars,
// patternObjects,
// baseArrowCode,
// baseArrowCode //
// );
// has = IsValidSize(count);
// if (has)
// {
// //
// ApplyPivotsStyle(patternObjects);
// //
// AddObjects(
// patternObjects,
// objects //
// );
// }
// //
// ZeroMemory(patternObjects);
// }
// //
// // TrueGap Bars ...
// if (config.drawTrueGaped &&
// HasChild(structure.trueGapBars))
// {
// //
// count = DrawPivots(
// structure.trueGapBars,
// patternObjects,
// baseArrowCode,
// baseArrowCode //
// );
// has = IsValidSize(count);
// if (has)
// {
// //
// ApplyPivotsStyle(patternObjects);
// //
// AddObjects(
// patternObjects,
// objects //
// );
// }
// //
// ZeroMemory(patternObjects);
// }
// //
// // Momentum Bars ...
// if (config.drawMomentum &&
// HasChild(structure.momentumBars))
// {
// //
// count = DrawPivots(
// structure.momentumBars,
// patternObjects,
// baseArrowCode,
// baseArrowCode //
// );
// has = IsValidSize(count);
// if (has)
// {
// //
// ApplyPivotsStyle(patternObjects);
// //
// AddObjects(
// patternObjects,
// objects //
// );
// }
// //
// ZeroMemory(patternObjects);
// }
// //
// // Flag Pattern ...
// if (config.drawFlagPattern &&
// HasChild(structure.flagPatterns))
// {
// //
// count = DrawBoxes(
// structure.flagPatterns,
// patternObjects //
// );
// has = IsValidSize(count);
// if (has)
// {
// //
// ApplyPatternsStyle(patternObjects);
// //
// AddObjects(
// patternObjects,
// objects //
// );
// }
// //
// ZeroMemory(patternObjects);
// }
// //
// // Star Pattern ...
// if (config.drawStarPattern &&
// HasChild(structure.starPatterns))
// {
// //
// count = DrawBoxes(
// structure.starPatterns,
// patternObjects //
// );
// has = IsValidSize(count);
// if (has)
// {
// //
// ApplyPatternsStyle(patternObjects);
// //
// AddObjects(
// patternObjects,
// objects //
// );
// }
// //
// ZeroMemory(patternObjects);
// }
// //
// // Rising Pattern ...
// if (config.drawRisingPattern &&
// HasChild(structure.risingPatterns))
// {
// //
// count = DrawBoxes(
// structure.risingPatterns,
// patternObjects //
// );
// has = IsValidSize(count);
// if (has)
// {
// //
// ApplyPatternsStyle(patternObjects);
// //
// AddObjects(
// patternObjects,
// objects //
// );
// }
// //
// ZeroMemory(patternObjects);
// }
// //
// // Piercing Pattern ...
// if (config.drawPiercingPattern &&
// HasChild(structure.piercingPatterns))
// {
// //
// count = DrawBoxes(
// structure.piercingPatterns,
// patternObjects //
// );
// has = IsValidSize(count);
// if (has)
// {
// //
// ApplyPatternsStyle(patternObjects);
// //
// AddObjects(
// patternObjects,
// objects //
// );
// }
// //
// ZeroMemory(patternObjects);
// }
// //
// // SignalKeyBar Pattern ...
// if (config.drawSignalKeyBarPattern &&
// HasChild(structure.signalKeyBarPatterns))
// {
// //
// count = DrawBoxes(
// structure.signalKeyBarPatterns,
// patternObjects //
// );
// has = IsValidSize(count);
// if (has)
// {
// //
// ApplyPatternsStyle(patternObjects);
// //
// AddObjects(
// patternObjects,
// objects //
// );
// }
// //
// ZeroMemory(patternObjects);
// }
// }
//
result = objects.Total();
//
return result;
}
//
};
//