| //+------------------------------------------------------------------+
|
| //| 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);
|
| }
|
| //+------------------------------------------------------------------+
|