365 lines
17 KiB
MQL5
365 lines
17 KiB
MQL5
//+------------------------------------------------------------------+
| |||
//| ChartObjectsFibo.mqh |
| |||
//| Copyright 2000-2025, MetaQuotes Ltd. |
| |||
//| https://www.mql5.com |
| |||
//+------------------------------------------------------------------+
| |||
//| All Fibonacci tools. |
| |||
//+------------------------------------------------------------------+
| |||
#include "ChartObjectsLines.mqh"
| |||
//+------------------------------------------------------------------+
| |||
//| Class CChartObjectFibo. |
| |||
//| Purpose: Class of the "Fibonacci Lines" object. |
| |||
//| Derives from class CChartObjectTrend. |
| |||
//+------------------------------------------------------------------+
| |||
class CChartObjectFibo : public CChartObjectTrend
| |||
{
| |||
public:
| |||
CChartObjectFibo(void);
| |||
~CChartObjectFibo(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);
| |||
//--- method of identifying the object
| |||
virtual int Type(void) const { return(OBJ_FIBO); }
| |||
};
| |||
//+------------------------------------------------------------------+
| |||
//| Constructor |
| |||
//+------------------------------------------------------------------+
| |||
CChartObjectFibo::CChartObjectFibo(void)
| |||
{
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Destructor |
| |||
//+------------------------------------------------------------------+
| |||
CChartObjectFibo::~CChartObjectFibo(void)
| |||
{
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Create object "Fibonacci Lines" |
| |||
//+------------------------------------------------------------------+
| |||
bool CChartObjectFibo::Create(long chart_id,const string name,const int window,
| |||
const datetime time1,const double price1,
| |||
const datetime time2,const double price2)
| |||
{
| |||
if(!ObjectCreate(chart_id,name,OBJ_FIBO,window,time1,price1,time2,price2))
| |||
return(false);
| |||
if(!Attach(chart_id,name,window,2))
| |||
return(false);
| |||
//--- successful
| |||
return(true);
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Class CChartObjectFiboTimes. |
| |||
//| Purpose: Class of the "Fibonacci Time Zones" object of chart |
| |||
//| Derives from class CChartObject. |
| |||
//+------------------------------------------------------------------+
| |||
class CChartObjectFiboTimes : public CChartObject
| |||
{
| |||
public:
| |||
CChartObjectFiboTimes(void);
| |||
~CChartObjectFiboTimes(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);
| |||
//--- method of identifying the object
| |||
virtual int Type(void) const { return(OBJ_FIBOTIMES); }
| |||
};
| |||
//+------------------------------------------------------------------+
| |||
//| Constructor |
| |||
//+------------------------------------------------------------------+
| |||
CChartObjectFiboTimes::CChartObjectFiboTimes(void)
| |||
{
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Destructor |
| |||
//+------------------------------------------------------------------+
| |||
CChartObjectFiboTimes::~CChartObjectFiboTimes(void)
| |||
{
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Create object "Fibonacci Time Zones" |
| |||
//+------------------------------------------------------------------+
| |||
bool CChartObjectFiboTimes::Create(long chart_id,const string name,const int window,
| |||
const datetime time1,const double price1,
| |||
const datetime time2,const double price2)
| |||
{
| |||
if(!ObjectCreate(chart_id,name,OBJ_FIBOTIMES,window,time1,price1,time2,price2))
| |||
return(false);
| |||
if(!Attach(chart_id,name,window,2))
| |||
return(false);
| |||
//--- successful
| |||
return(true);
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Class CChartObjectFiboFan. |
| |||
//| Purpose: Class of the "Fibonacci Fan" object of chart. |
| |||
//| Derives from class CChartObject. |
| |||
//+------------------------------------------------------------------+
| |||
class CChartObjectFiboFan : public CChartObject
| |||
{
| |||
public:
| |||
CChartObjectFiboFan(void);
| |||
~CChartObjectFiboFan(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);
| |||
//--- method of identifying the object
| |||
virtual int Type(void) const { return(OBJ_FIBOFAN); }
| |||
};
| |||
//+------------------------------------------------------------------+
| |||
//| Constructor |
| |||
//+------------------------------------------------------------------+
| |||
CChartObjectFiboFan::CChartObjectFiboFan(void)
| |||
{
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Destructor |
| |||
//+------------------------------------------------------------------+
| |||
CChartObjectFiboFan::~CChartObjectFiboFan(void)
| |||
{
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Create object "Fibonacci Fan" |
| |||
//+------------------------------------------------------------------+
| |||
bool CChartObjectFiboFan::Create(long chart_id,const string name,const int window,
| |||
const datetime time1,const double price1,
| |||
const datetime time2,const double price2)
| |||
{
| |||
if(!ObjectCreate(chart_id,name,OBJ_FIBOFAN,window,time1,price1,time2,price2))
| |||
return(false);
| |||
if(!Attach(chart_id,name,window,2))
| |||
return(false);
| |||
//--- successful
| |||
return(true);
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Class CChartObjectFiboArc. |
| |||
//| Purpose: Class of the "Fibonacci Arcs" object of chart. |
| |||
//| Derives from class CChartObject. |
| |||
//+------------------------------------------------------------------+
| |||
class CChartObjectFiboArc : public CChartObject
| |||
{
| |||
public:
| |||
CChartObjectFiboArc(void);
| |||
~CChartObjectFiboArc(void);
| |||
//--- methods of access to properties of the object
| |||
double Scale(void) const;
| |||
bool Scale(const double scale) const;
| |||
bool Ellipse(void) const;
| |||
bool Ellipse(const bool ellipse) 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 double scale);
| |||
//--- method of identifying the object
| |||
virtual int Type(void) const { return(OBJ_FIBOARC); }
| |||
//--- methods for working with files
| |||
virtual bool Save(const int file_handle);
| |||
virtual bool Load(const int file_handle);
| |||
};
| |||
//+------------------------------------------------------------------+
| |||
//| Constructor |
| |||
//+------------------------------------------------------------------+
| |||
CChartObjectFiboArc::CChartObjectFiboArc(void)
| |||
{
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Destructor |
| |||
//+------------------------------------------------------------------+
| |||
CChartObjectFiboArc::~CChartObjectFiboArc(void)
| |||
{
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Create object "Fibonacci Arcs" |
| |||
//+------------------------------------------------------------------+
| |||
bool CChartObjectFiboArc::Create(long chart_id,const string name,const int window,
| |||
const datetime time1,const double price1,
| |||
const datetime time2,const double price2,const double scale)
| |||
{
| |||
if(!ObjectCreate(chart_id,name,OBJ_FIBOARC,window,time1,price1,time2,price2))
| |||
return(false);
| |||
if(!Attach(chart_id,name,window,2))
| |||
return(false);
| |||
if(!Scale(scale))
| |||
return(false);
| |||
//--- successful
| |||
return(true);
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Get value of the "Scale" property |
| |||
//+------------------------------------------------------------------+
| |||
double CChartObjectFiboArc::Scale(void) const
| |||
{
| |||
//--- check
| |||
if(m_chart_id==-1)
| |||
return(EMPTY_VALUE);
| |||
//--- result
| |||
return(ObjectGetDouble(m_chart_id,m_name,OBJPROP_SCALE));
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Set value for the "Scale" property |
| |||
//+------------------------------------------------------------------+
| |||
bool CChartObjectFiboArc::Scale(const double scale) const
| |||
{
| |||
//--- check
| |||
if(m_chart_id==-1)
| |||
return(false);
| |||
//--- result
| |||
return(ObjectSetDouble(m_chart_id,m_name,OBJPROP_SCALE,scale));
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Get value of the "Ellipse" property |
| |||
//+------------------------------------------------------------------+
| |||
bool CChartObjectFiboArc::Ellipse(void) const
| |||
{
| |||
//--- check
| |||
if(m_chart_id==-1)
| |||
return(false);
| |||
//--- result
| |||
return((bool)ObjectGetInteger(m_chart_id,m_name,OBJPROP_ELLIPSE));
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Set value for the "Ellipse" property |
| |||
//+------------------------------------------------------------------+
| |||
bool CChartObjectFiboArc::Ellipse(const bool ellipse) const
| |||
{
| |||
//--- check
| |||
if(m_chart_id==-1)
| |||
return(false);
| |||
//--- result
| |||
return(ObjectSetInteger(m_chart_id,m_name,OBJPROP_ELLIPSE,ellipse));
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Writing parameter of object to file |
| |||
//+------------------------------------------------------------------+
| |||
bool CChartObjectFiboArc::Save(const int file_handle)
| |||
{
| |||
//--- check
| |||
if(file_handle==INVALID_HANDLE || m_chart_id==-1)
| |||
return(false);
| |||
//--- write
| |||
if(!CChartObject::Save(file_handle))
| |||
return(false);
| |||
//--- write value of the "Scale" property
| |||
if(FileWriteDouble(file_handle,ObjectGetDouble(m_chart_id,m_name,OBJPROP_SCALE))!=sizeof(double))
| |||
return(false);
| |||
//--- write value of the "Ellipse" property
| |||
if(FileWriteInteger(file_handle,(int)ObjectGetInteger(m_chart_id,m_name,OBJPROP_ELLIPSE),CHAR_VALUE)!=sizeof(char))
| |||
return(false);
| |||
//--- successful
| |||
return(true);
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Reading parameters of object from file |
| |||
//+------------------------------------------------------------------+
| |||
bool CChartObjectFiboArc::Load(const int file_handle)
| |||
{
| |||
//--- check
| |||
if(file_handle==INVALID_HANDLE || m_chart_id==-1)
| |||
return(false);
| |||
//--- read
| |||
if(!CChartObject::Load(file_handle))
| |||
return(false);
| |||
//--- read value of the "Scale" property
| |||
if(!ObjectSetDouble(m_chart_id,m_name,OBJPROP_SCALE,FileReadDouble(file_handle)))
| |||
return(false);
| |||
//--- read value of the "Ellipse" property
| |||
if(!ObjectSetInteger(m_chart_id,m_name,OBJPROP_ELLIPSE,FileReadInteger(file_handle,CHAR_VALUE)))
| |||
return(false);
| |||
//--- successful
| |||
return(true);
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Class CChartObjectFiboChannel. |
| |||
//| Purpose: Class of the "Fibonacci Channel" object of chart. |
| |||
//| Derives from class CChartObjectTrend. |
| |||
//+------------------------------------------------------------------+
| |||
class CChartObjectFiboChannel : public CChartObjectTrend
| |||
{
| |||
public:
| |||
CChartObjectFiboChannel(void);
| |||
~CChartObjectFiboChannel(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_FIBOCHANNEL); }
| |||
};
| |||
//+------------------------------------------------------------------+
| |||
//| Constructor |
| |||
//+------------------------------------------------------------------+
| |||
CChartObjectFiboChannel::CChartObjectFiboChannel(void)
| |||
{
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Destructor |
| |||
//+------------------------------------------------------------------+
| |||
CChartObjectFiboChannel::~CChartObjectFiboChannel(void)
| |||
{
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Create object "Fibonacci Channel" |
| |||
//+------------------------------------------------------------------+
| |||
bool CChartObjectFiboChannel::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_FIBOCHANNEL,window,time1,price1,time2,price2,time3,price3))
| |||
return(false);
| |||
if(!Attach(chart_id,name,window,3))
| |||
return(false);
| |||
//--- successful
| |||
return(true);
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Class CChartObjectFiboExpansion. |
| |||
//| Purpose: Class of the "Fibonacci Expansion" object. |
| |||
//| Derives from class CChartObjectTrend. |
| |||
//+------------------------------------------------------------------+
| |||
class CChartObjectFiboExpansion : public CChartObjectTrend
| |||
{
| |||
public:
| |||
CChartObjectFiboExpansion(void);
| |||
~CChartObjectFiboExpansion(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_EXPANSION); }
| |||
};
| |||
//+------------------------------------------------------------------+
| |||
//| Constructor |
| |||
//+------------------------------------------------------------------+
| |||
CChartObjectFiboExpansion::CChartObjectFiboExpansion(void)
| |||
{
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Destructor |
| |||
//+------------------------------------------------------------------+
| |||
CChartObjectFiboExpansion::~CChartObjectFiboExpansion(void)
| |||
{
| |||
}
| |||
//+------------------------------------------------------------------+
| |||
//| Create object "Fibonacci Expansion" |
| |||
//+------------------------------------------------------------------+
| |||
bool CChartObjectFiboExpansion::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_EXPANSION,window,time1,price1,time2,price2,time3,price3))
| |||
return(false);
| |||
if(!Attach(chart_id,name,window,3))
| |||
return(false);
| |||
//--- successful
| |||
return(true);
| |||
}
| |||
//+------------------------------------------------------------------+
|