246 lines
11 KiB
MQL5
246 lines
11 KiB
MQL5
//+------------------------------------------------------------------+
| |||
//| 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);
| |||
}
| |||
//+------------------------------------------------------------------+
|