//+------------------------------------------------------------------+ //| ChartObjectsElliott.mqh | //| Copyright 2000-2025, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ //| All Elliott tools. | //+------------------------------------------------------------------+ #include "ChartObject.mqh" //+------------------------------------------------------------------+ //| Class CChartObjectElliottWave3. | //| Purpose: Class of the "ElliottCorrectiveWave" object of chart. | //| Derives from class CChartObject. | //+------------------------------------------------------------------+ class CChartObjectElliottWave3 : public CChartObject { public: CChartObjectElliottWave3(void); ~CChartObjectElliottWave3(void); //--- methods of access to properties of the object ENUM_ELLIOT_WAVE_DEGREE Degree(void) const; bool Degree(const ENUM_ELLIOT_WAVE_DEGREE degree) const; bool Lines(void) const; bool Lines(const bool lines) const; //--- method of creating the object bool Create(long chart_id,const string name,const int window, const datetime time1,const double price1, const datetime time2,const double price2, const datetime time3,const double price3); //--- method of identifying the object virtual int Type(void) const { return(OBJ_ELLIOTWAVE3); } //--- methods for working with files virtual bool Save(const int file_handle); virtual bool Load(const int file_handle); }; //+------------------------------------------------------------------+ //| Constructor | //+------------------------------------------------------------------+ CChartObjectElliottWave3::CChartObjectElliottWave3(void) { } //+------------------------------------------------------------------+ //| Destructor | //+------------------------------------------------------------------+ CChartObjectElliottWave3::~CChartObjectElliottWave3(void) { } //+------------------------------------------------------------------+ //| Create object "ElliottCorrectiveWave" | //+------------------------------------------------------------------+ bool CChartObjectElliottWave3::Create(long chart_id,const string name,const int window, const datetime time1,const double price1, const datetime time2,const double price2, const datetime time3,const double price3) { if(!ObjectCreate(chart_id,name,OBJ_ELLIOTWAVE3,window,time1,price1,time2,price2,time3,price3)) return(false); if(!Attach(chart_id,name,window,3)) return(false); //--- successful return(true); } //+------------------------------------------------------------------+ //| Get value of the "Degree" property | //+------------------------------------------------------------------+ ENUM_ELLIOT_WAVE_DEGREE CChartObjectElliottWave3::Degree(void) const { //--- check if(m_chart_id==-1) return(WRONG_VALUE); //--- result return((ENUM_ELLIOT_WAVE_DEGREE)ObjectGetInteger(m_chart_id,m_name,OBJPROP_DEGREE)); } //+------------------------------------------------------------------+ //| Set value for the "Degree" property | //+------------------------------------------------------------------+ bool CChartObjectElliottWave3::Degree(const ENUM_ELLIOT_WAVE_DEGREE degree) const { //--- check if(m_chart_id==-1) return(false); //--- result return(ObjectSetInteger(m_chart_id,m_name,OBJPROP_DEGREE,degree)); } //+------------------------------------------------------------------+ //| Get value of the "Lines" property | //+------------------------------------------------------------------+ bool CChartObjectElliottWave3::Lines(void) const { //--- check if(m_chart_id==-1) return(false); //--- result return((bool)ObjectGetInteger(m_chart_id,m_name,OBJPROP_DRAWLINES)); } //+------------------------------------------------------------------+ //| Set value for the "Lines" property | //+------------------------------------------------------------------+ bool CChartObjectElliottWave3::Lines(const bool lines) const { //--- check if(m_chart_id==-1) return(false); //--- result return(ObjectSetInteger(m_chart_id,m_name,OBJPROP_DRAWLINES,lines)); } //+------------------------------------------------------------------+ //| Writing parameters of object to file | //+------------------------------------------------------------------+ bool CChartObjectElliottWave3::Save(const int file_handle) { bool result; //--- check if(file_handle==INVALID_HANDLE || m_chart_id==-1) return(false); //--- write result=CChartObject::Save(file_handle); if(result) { //--- write value of the "Degree" property if(FileWriteInteger(file_handle,(int)ObjectGetInteger(m_chart_id,m_name,OBJPROP_DEGREE),INT_VALUE)!=sizeof(int)) return(false); //--- write value of the "Lines" property if(FileWriteInteger(file_handle,(int)ObjectGetInteger(m_chart_id,m_name,OBJPROP_DRAWLINES),INT_VALUE)!=sizeof(int)) return(false); } //--- result return(result); } //+------------------------------------------------------------------+ //| Reading parameters of object from file | //+------------------------------------------------------------------+ bool CChartObjectElliottWave3::Load(const int file_handle) { bool result; //--- check if(file_handle==INVALID_HANDLE || m_chart_id==-1) return(false); //--- read result=CChartObject::Load(file_handle); if(result) { //--- read value of the "Degree" property if(!ObjectSetInteger(m_chart_id,m_name,OBJPROP_DEGREE,FileReadInteger(file_handle,INT_VALUE))) return(false); //--- read value of the "Lines" property if(!ObjectSetInteger(m_chart_id,m_name,OBJPROP_DRAWLINES,FileReadInteger(file_handle,INT_VALUE))) return(false); } //--- result return(result); } //+------------------------------------------------------------------+ //| Class CChartObjectElliottWave5. | //| Purpose: Class of the "ElliottMotiveWave" object of chart. | //| Derives from class CChartObjectElliottWave3. | //+------------------------------------------------------------------+ class CChartObjectElliottWave5 : public CChartObjectElliottWave3 { public: CChartObjectElliottWave5(void); ~CChartObjectElliottWave5(void); //--- method of creating the object bool Create(long chart_id,const string name,const int window, const datetime time1,const double price1, const datetime time2,const double price2, const datetime time3,const double price3, const datetime time4,const double price4, const datetime time5,const double price5); //--- method of identifying the object virtual int Type(void) const { return(OBJ_ELLIOTWAVE5); } }; //+------------------------------------------------------------------+ //| Constructor | //+------------------------------------------------------------------+ CChartObjectElliottWave5::CChartObjectElliottWave5(void) { } //+------------------------------------------------------------------+ //| Destructor | //+------------------------------------------------------------------+ CChartObjectElliottWave5::~CChartObjectElliottWave5(void) { } //+------------------------------------------------------------------+ //| Create object "ElliottMotiveWave" | //+------------------------------------------------------------------+ bool CChartObjectElliottWave5::Create(long chart_id,const string name,const int window, const datetime time1,const double price1, const datetime time2,const double price2, const datetime time3,const double price3, const datetime time4,const double price4, const datetime time5,const double price5) { if(!ObjectCreate(chart_id,name,OBJ_ELLIOTWAVE5,window,time1,price1,time2,price2,time3,price3,time4,price4,time5,price5)) return(false); if(!Attach(chart_id,name,window,5)) return(false); //--- successful return(true); } //+------------------------------------------------------------------+