This commit is contained in:
2025-09-22 21:40:42 +03:30
parent 383d58eaed
commit 56db510b5d
+389
View File
@@ -20,6 +20,7 @@
#property strict #property strict
// //
#include "../Libraries/x-saherelm.x-pivot.analysis.lib.mq5"
#include "../Libraries/x-saherelm.x-poi.lib.mq5" #include "../Libraries/x-saherelm.x-poi.lib.mq5"
#include "../Libraries/x-saherelm.x-trade.lib.mq5" #include "../Libraries/x-saherelm.x-trade.lib.mq5"
@@ -44,6 +45,7 @@ enum ENUM_XCHARTOBJECTS
X_SIGNAL_OBJ = 8860, X_SIGNAL_OBJ = 8860,
X_OHCL_OBJ = 8863, X_OHCL_OBJ = 8863,
X_RR_OBJ = 8864, X_RR_OBJ = 8864,
X_PIVOT_OBJ = 8865,
// //
// 9860 Custom Object ... // 9860 Custom Object ...
}; };
@@ -1438,4 +1440,391 @@ class XCBoxObject : public XCBaseObject
CChartObjectRectangle mRect; CChartObjectRectangle mRect;
}; };
/**
* XPivotAnalysis Chart Object ...
**/
class XCPivotAnalysisObject : public XCBaseObject
{
//
public:
//
/**
* Create Object ...
*
* @param chart_id: Long, Specified Chart ID ...
* @param window: Integer, Specified Chart Window ID ...
* @param model: XPivotAnalysis, reference model ...
*
* @return ( bool )
*/
bool Create(
long chart_id,
int window,
XPivotAnalysis &model //
)
{
//
bool result = false;
//
// Validate ...
result = model.IsValid();
if (!result)
{
return result;
}
//
// Generate Object ID ...
string objID = model.GetObjectID();
string upperName = "Upper_" + objID;
string lowerName = "Lower_" + objID;
//
// Extract Recent Pivots ...
//
// Creating Upper ...
result = mUpper.Create(
chart_id,
upperName,
window,
model.fromTime,
model.peakFrom,
model.toTime,
model.peakTo //
);
if (!result)
{
return result;
}
//
// Create Lower ...
result = mLower.Create(
chart_id,
lowerName,
window,
model.fromTime,
model.valeFrom,
model.toTime,
model.valeTo //
);
if (!result)
{
//
mUpper.Detach();
mUpper.Delete();
//
return result;
}
//
// Support ...
XBoxZone tmpBox;
mSupportBox = NULL;
if (model.HasSupportBox(tmpBox))
{
//
mSupportBox = new XCBoxObject();
mSupportBox.Create(
chart_id,
window,
tmpBox.GetTag(),
tmpBox.upper,
tmpBox.lower,
tmpBox.from,
tmpBox.to //
);
}
//
// Resistance ...
tmpBox.Clean();
mResistanceBox = NULL;
if (model.HasResistanceBox(tmpBox))
{
//
mResistanceBox = new XCBoxObject();
mResistanceBox.Create(
chart_id,
window,
tmpBox.GetTag(),
tmpBox.upper,
tmpBox.lower,
tmpBox.from,
tmpBox.to //
);
}
//
// Setting Object Name ...
if (result)
{
ObjName(objID);
}
//
return result;
}
//
// Virtuals ...
/**
* Retrieve Object Type ...
*
* @return ( ENUM_XCHARTOBJECTS )
*/
virtual ENUM_XCHARTOBJECTS Type()
{
return X_PIVOT_OBJ;
}
//
// Styling ...
/**
* Set Width ...
*
* @param value: Integer ...
*/
void UpperWidth(int value)
{
//
if (value < 1)
{
value = 1;
}
//
mUpper.Width(value);
}
/**
* Set Color ...
*
* @param value: Color ...
*/
void UpperColor(color value)
{
//
mUpper.Color(value);
}
/**
* Set Style ...
*
* @param value: ENUM_LINE_STYLE member ...
*/
void UpperStyle(ENUM_LINE_STYLE value)
{
//
mUpper.Style(value);
}
/**
* Specified Upper Ray to Left or not ...
*
* @param value: bool
*/
void UpperRayLeft(bool value)
{
mUpper.RayLeft(value);
}
/**
* Specified Upper Ray to Right or not ...
*
* @param value: bool
*/
void UpperRayRight(bool value)
{
mUpper.RayRight(value);
}
/**
* Set Width ...
*
* @param value: Integer ...
*/
void LowerWidth(int value)
{
//
if (value < 1)
{
value = 1;
}
//
mLower.Width(value);
}
/**
* Set Color ...
*
* @param value: Color ...
*/
void LowerColor(color value)
{
//
mLower.Color(value);
}
/**
* Set Style ...
*
* @param value: ENUM_LINE_STYLE member ...
*/
void LowerStyle(ENUM_LINE_STYLE value)
{
//
mLower.Style(value);
}
/**
* Specified Lower Ray to Left or not ...
*
* @param value: bool
*/
void LowerRayLeft(bool value)
{
mLower.RayLeft(value);
}
/**
* Specified Lower Ray to Right or not ...
*
* @param value: bool
*/
void LowerRayRight(bool value)
{
mLower.RayRight(value);
}
/**
* Set Width ...
*
* @param value: Integer ...
*/
void SupportWidth(int value)
{
//
if (value < 1)
{
value = 1;
}
//
if (mSupportBox == NULL)
{
return;
}
//
mSupportBox.Width(value);
}
/**
* Set Color ...
*
* @param value: Color ...
*/
void SupportColor(color value)
{
//
if (mSupportBox == NULL)
{
return;
}
//
mSupportBox.Color(value);
}
/**
* Set Style ...
*
* @param value: ENUM_LINE_STYLE member ...
*/
void SupportStyle(ENUM_LINE_STYLE value)
{
//
if (mSupportBox == NULL)
{
return;
}
//
mSupportBox.Style(value);
}
/**
* Set Width ...
*
* @param value: Integer ...
*/
void ResistanceWidth(int value)
{
//
if (value < 1)
{
value = 1;
}
//
if (mResistanceBox == NULL)
{
return;
}
//
mResistanceBox.Width(value);
}
/**
* Set Color ...
*
* @param value: Color ...
*/
void ResistanceColor(color value)
{
//
if (mResistanceBox == NULL)
{
return;
}
//
mResistanceBox.Color(value);
}
/**
* Set Style ...
*
* @param value: ENUM_LINE_STYLE member ...
*/
void ResistanceStyle(ENUM_LINE_STYLE value)
{
//
if (mResistanceBox == NULL)
{
return;
}
//
mResistanceBox.Style(value);
}
//
private:
//
CChartObjectTrend mUpper;
CChartObjectTrend mLower;
XCBoxObject *mSupportBox;
XCBoxObject *mResistanceBox;
};
// //