From 56db510b5dc331bb6d91a94b370fb8689798c469 Mon Sep 17 00:00:00 2001 From: Hadi Khazaee Asl Date: Mon, 22 Sep 2025 21:40:42 +0330 Subject: [PATCH] last ... --- Classes/x-saherelm.x-cobject.class.mq5 | 389 +++++++++++++++++++++++++ 1 file changed, 389 insertions(+) diff --git a/Classes/x-saherelm.x-cobject.class.mq5 b/Classes/x-saherelm.x-cobject.class.mq5 index cfe78766..3fcd7b53 100644 --- a/Classes/x-saherelm.x-cobject.class.mq5 +++ b/Classes/x-saherelm.x-cobject.class.mq5 @@ -20,6 +20,7 @@ #property strict // +#include "../Libraries/x-saherelm.x-pivot.analysis.lib.mq5" #include "../Libraries/x-saherelm.x-poi.lib.mq5" #include "../Libraries/x-saherelm.x-trade.lib.mq5" @@ -44,6 +45,7 @@ enum ENUM_XCHARTOBJECTS X_SIGNAL_OBJ = 8860, X_OHCL_OBJ = 8863, X_RR_OBJ = 8864, + X_PIVOT_OBJ = 8865, // // 9860 Custom Object ... }; @@ -1438,4 +1440,391 @@ class XCBoxObject : public XCBaseObject 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; +}; + // \ No newline at end of file