//+------------------------------------------------------------------+ //| ChartObjectsChannels.mqh | //| Copyright 2000-2025, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ //| All channels. | //+------------------------------------------------------------------+ #include "ChartObjectsLines.mqh" //+------------------------------------------------------------------+ //| Class CChartObjectChannel. | //| Purpose: Class of the "Equidistant channel" object of chart. | //| Derives from class CChartObjectTrend. | //+------------------------------------------------------------------+ class CChartObjectChannel : public CChartObjectTrend { public: CChartObjectChannel(void); ~CChartObjectChannel(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); //--- method of identifying the object virtual int Type(void) const { return(OBJ_CHANNEL); } }; //+------------------------------------------------------------------+ //| Constructor | //+------------------------------------------------------------------+ CChartObjectChannel::CChartObjectChannel(void) { } //+------------------------------------------------------------------+ //| Destructor | //+------------------------------------------------------------------+ CChartObjectChannel::~CChartObjectChannel(void) { } //+------------------------------------------------------------------+ //| Create object "Equidistant channel" | //+------------------------------------------------------------------+ bool CChartObjectChannel::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_CHANNEL,window,time1,price1,time2,price2,time3,price3)) return(false); if(!Attach(chart_id,name,window,3)) return(false); //--- successful return(true); } //+------------------------------------------------------------------+ //| Class CChartObjectStdDevChannel. | //| Purpose: Class of the "Standrad deviation channel" | //| object of chart. | //| Derives from class CChartObjectTrend. | //+------------------------------------------------------------------+ class CChartObjectStdDevChannel : public CChartObjectTrend { public: CChartObjectStdDevChannel(void); ~CChartObjectStdDevChannel(void); //--- methods of access to properties of the object double Deviations(void) const; bool Deviations(const double deviation) const; //--- method of creating the object bool Create(long chart_id,const string name,const int window, const datetime time1,const datetime time2,const double deviation); //--- method of identifying the object virtual int Type(void) const { return(OBJ_STDDEVCHANNEL); } //--- methods for working with files virtual bool Save(const int file_handle); virtual bool Load(const int file_handle); }; //+------------------------------------------------------------------+ //| Constructor | //+------------------------------------------------------------------+ CChartObjectStdDevChannel::CChartObjectStdDevChannel(void) { } //+------------------------------------------------------------------+ //| Destructor | //+------------------------------------------------------------------+ CChartObjectStdDevChannel::~CChartObjectStdDevChannel(void) { } //+------------------------------------------------------------------+ //| Create object "Standard deviation channel" | //+------------------------------------------------------------------+ bool CChartObjectStdDevChannel::Create(long chart_id,const string name,const int window, const datetime time1,const datetime time2,const double deviation) { if(!ObjectCreate(chart_id,name,OBJ_STDDEVCHANNEL,window,time1,0.0,time2,0.0)) return(false); if(!Attach(chart_id,name,window,2)) return(false); if(!Deviations(deviation)) return(false); //--- successful return(true); } //+------------------------------------------------------------------+ //| Get value of the "Deviations" property | //+------------------------------------------------------------------+ double CChartObjectStdDevChannel::Deviations(void) const { //--- check if(m_chart_id==-1) return(EMPTY_VALUE); //--- result return(ObjectGetDouble(m_chart_id,m_name,OBJPROP_DEVIATION)); } //+------------------------------------------------------------------+ //| Set value for the "Deviations" property | //+------------------------------------------------------------------+ bool CChartObjectStdDevChannel::Deviations(const double deviation) const { //--- check if(m_chart_id==-1) return(false); //--- result return(ObjectSetDouble(m_chart_id,m_name,OBJPROP_DEVIATION,deviation)); } //+------------------------------------------------------------------+ //| Writing parameters of object to file | //+------------------------------------------------------------------+ bool CChartObjectStdDevChannel::Save(const int file_handle) { //--- check if(file_handle==INVALID_HANDLE || m_chart_id==-1) return(false); //--- write if(!CChartObjectTrend::Save(file_handle)) return(false); //--- write value of the "Deviations" property if(FileWriteDouble(file_handle,ObjectGetDouble(m_chart_id,m_name,OBJPROP_DEVIATION))!=sizeof(double)) return(false); //--- successful return(true); } //+------------------------------------------------------------------+ //| Reading parameters of object from file | //+------------------------------------------------------------------+ bool CChartObjectStdDevChannel::Load(const int file_handle) { //--- check if(file_handle==INVALID_HANDLE || m_chart_id==-1) return(false); //--- read if(!CChartObjectTrend::Load(file_handle)) return(false); //--- read value of the "Deviations" property if(!ObjectSetDouble(m_chart_id,m_name,OBJPROP_DEVIATION,FileReadDouble(file_handle))) return(false); //--- successful return(true); } //+------------------------------------------------------------------+ //| Class CChartObjectRegression. | //| Purpose: Class of the "Regression channel" object of chart. | //| Derives from class CChartObjectTrend. | //+------------------------------------------------------------------+ class CChartObjectRegression : public CChartObjectTrend { public: CChartObjectRegression(void); ~CChartObjectRegression(void); //--- method of creating the object bool Create(long chart_id,const string name,const int window, const datetime time1,const datetime time2); //--- method of identifying the object virtual int Type(void) const { return(OBJ_REGRESSION); } }; //+------------------------------------------------------------------+ //| Constructor | //+------------------------------------------------------------------+ CChartObjectRegression::CChartObjectRegression(void) { } //+------------------------------------------------------------------+ //| Destructor | //+------------------------------------------------------------------+ CChartObjectRegression::~CChartObjectRegression(void) { } //+------------------------------------------------------------------+ //| Create object "Regression channel" | //+------------------------------------------------------------------+ bool CChartObjectRegression::Create(long chart_id,const string name,const int window, const datetime time1,const datetime time2) { if(!ObjectCreate(chart_id,name,OBJ_REGRESSION,window,time1,0.0,time2,0.0)) return(false); if(!Attach(chart_id,name,window,2)) return(false); //--- successful return(true); } //+------------------------------------------------------------------+ //| Class CChartObjectPitchfork. | //| Purpose: Class of the "Andrews pitchfork" object of chart | //| Derives from class CChartObjectTrend. | //+------------------------------------------------------------------+ class CChartObjectPitchfork : public CChartObjectTrend { public: CChartObjectPitchfork(void); ~CChartObjectPitchfork(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); //--- method of identifying the object virtual int Type(void) const { return(OBJ_CHANNEL); } }; //+------------------------------------------------------------------+ //| Constructor | //+------------------------------------------------------------------+ CChartObjectPitchfork::CChartObjectPitchfork(void) { } //+------------------------------------------------------------------+ //| Destructor | //+------------------------------------------------------------------+ CChartObjectPitchfork::~CChartObjectPitchfork(void) { } //+------------------------------------------------------------------+ //| Create object "Andrews pitchfork" | //+------------------------------------------------------------------+ bool CChartObjectPitchfork::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_PITCHFORK,window,time1,price1,time2,price2,time3,price3)) return(false); if(!Attach(chart_id,name,window,3)) return(false); //--- successful return(true); } //+------------------------------------------------------------------+