| //+------------------------------------------------------------------+
|
| //| ChartObjectsArrows.mqh |
|
| //| Copyright 2000-2025, MetaQuotes Ltd. |
|
| //| https://www.mql5.com |
|
| //+------------------------------------------------------------------+
|
| //| All arrows. |
|
| //+------------------------------------------------------------------+
|
| #include "ChartObject.mqh"
|
| //+------------------------------------------------------------------+
|
| //| Class CChartObjectArrow. |
|
| //| Purpose: Class of the "Arrow" object of chart. |
|
| //| Derives from class CChartObject. |
|
| //+------------------------------------------------------------------+
|
| class CChartObjectArrow : public CChartObject
|
| {
|
| public:
|
| CChartObjectArrow(void);
|
| ~CChartObjectArrow(void);
|
| //--- method of creating the object
|
| bool Create(long chart_id,const string name,const int window,const datetime time,const double price,const char code);
|
| //--- method of identifying the object
|
| virtual int Type(void) const { return(OBJ_ARROW); }
|
| //--- methods of access to properties of the object
|
| char ArrowCode(void) const;
|
| virtual bool ArrowCode(const char code) const;
|
| ENUM_ARROW_ANCHOR Anchor(void) const;
|
| virtual bool Anchor(const ENUM_ARROW_ANCHOR anchor) const;
|
| //--- methods for working with files
|
| virtual bool Save(const int file_handle);
|
| virtual bool Load(const int file_handle);
|
| };
|
| //+------------------------------------------------------------------+
|
| //| Constructor |
|
| //+------------------------------------------------------------------+
|
| CChartObjectArrow::CChartObjectArrow(void)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Destructor |
|
| //+------------------------------------------------------------------+
|
| CChartObjectArrow::~CChartObjectArrow(void)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Create object "Arrow" |
|
| //+------------------------------------------------------------------+
|
| bool CChartObjectArrow::Create(long chart_id,const string name,const int window,const datetime time,const double price,const char code)
|
| {
|
| if(!ObjectCreate(chart_id,name,OBJ_ARROW,window,time,price))
|
| return(false);
|
| if(!Attach(chart_id,name,window,1))
|
| return(false);
|
| if(!ArrowCode(code))
|
| return(false);
|
| //--- successful
|
| return(true);
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get code of "arrow" symbol |
|
| //+------------------------------------------------------------------+
|
| char CChartObjectArrow::ArrowCode(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(0);
|
| //--- result
|
| return((char)ObjectGetInteger(m_chart_id,m_name,OBJPROP_ARROWCODE));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set code of "arrow" symbol |
|
| //+------------------------------------------------------------------+
|
| bool CChartObjectArrow::ArrowCode(const char code) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ObjectSetInteger(m_chart_id,m_name,OBJPROP_ARROWCODE,code));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get anchor type |
|
| //+------------------------------------------------------------------+
|
| ENUM_ARROW_ANCHOR CChartObjectArrow::Anchor(void) const
|
| {
|
| //--- result
|
| return((ENUM_ARROW_ANCHOR)ObjectGetInteger(m_chart_id,m_name,OBJPROP_ANCHOR));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set anchor type |
|
| //+------------------------------------------------------------------+
|
| bool CChartObjectArrow::Anchor(const ENUM_ARROW_ANCHOR anchor) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ObjectSetInteger(m_chart_id,m_name,OBJPROP_ANCHOR,anchor));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Writing parameters of object to file |
|
| //+------------------------------------------------------------------+
|
| bool CChartObjectArrow::Save(const int file_handle)
|
| {
|
| //--- check
|
| if(file_handle==INVALID_HANDLE || m_chart_id==-1)
|
| return(false);
|
| //--- writing
|
| if(!CObject::Save(file_handle))
|
| return(false);
|
| //--- write code of "arrow" symbol
|
| if(FileWriteInteger(file_handle,(int)ObjectGetInteger(m_chart_id,m_name,OBJPROP_ARROWCODE),CHAR_VALUE)!=sizeof(char))
|
| return(false);
|
| //--- write anchor type
|
| if(FileWriteInteger(file_handle,(int)ObjectGetInteger(m_chart_id,m_name,OBJPROP_ANCHOR),INT_VALUE)!=sizeof(int))
|
| return(false);
|
| //--- successful
|
| return(true);
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Reading parameters of object from file |
|
| //+------------------------------------------------------------------+
|
| bool CChartObjectArrow::Load(const int file_handle)
|
| {
|
| //--- check
|
| if(file_handle==INVALID_HANDLE || m_chart_id==-1)
|
| return(false);
|
| //--- reading
|
| if(!CObject::Load(file_handle))
|
| return(false);
|
| //--- read code of "arrow" symbol
|
| if(!ObjectSetInteger(m_chart_id,m_name,OBJPROP_ARROWCODE,FileReadInteger(file_handle,CHAR_VALUE)))
|
| return(false);
|
| //--- read anchor type
|
| if(!ObjectSetInteger(m_chart_id,m_name,OBJPROP_ANCHOR,FileReadInteger(file_handle,INT_VALUE)))
|
| return(false);
|
| //--- successful
|
| return(true);
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Class CChartObjectArrowThumbUp. |
|
| //| Purpose: Class of the "Thumbs Up" object of chart. |
|
| //| Derives from class CChartObjectArrow. |
|
| //+------------------------------------------------------------------+
|
| class CChartObjectArrowThumbUp : public CChartObjectArrow
|
| {
|
| public:
|
| CChartObjectArrowThumbUp(void);
|
| ~CChartObjectArrowThumbUp(void);
|
| //--- method of creating the object
|
| bool Create(long chart_id,const string name,const int window,const datetime time,const double price);
|
| //--- method of identifying the object
|
| virtual int Type(void) const override { return(OBJ_ARROW_THUMB_UP); }
|
| //--- change of arrow code is blocked
|
| virtual bool ArrowCode(const char code) const override { return(false); }
|
| char ArrowCode(void) const { return(CChartObjectArrow::ArrowCode()); }
|
| };
|
| //+------------------------------------------------------------------+
|
| //| Constructor |
|
| //+------------------------------------------------------------------+
|
| CChartObjectArrowThumbUp::CChartObjectArrowThumbUp(void)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Destructor |
|
| //+------------------------------------------------------------------+
|
| CChartObjectArrowThumbUp::~CChartObjectArrowThumbUp(void)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Create object "Thumbs Up" |
|
| //+------------------------------------------------------------------+
|
| bool CChartObjectArrowThumbUp::Create(long chart_id,const string name,const int window,const datetime time,const double price)
|
| {
|
| if(!ObjectCreate(chart_id,name,OBJ_ARROW_THUMB_UP,window,time,price))
|
| return(false);
|
| if(!Attach(chart_id,name,window,1))
|
| return(false);
|
| //--- successful
|
| return(true);
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Class CChartObjectArrowThumbDown. |
|
| //| Purpose: Class of the "Thumbs Down" object of chart. |
|
| //| Derives from class CChartObjectArrow. |
|
| //+------------------------------------------------------------------+
|
| class CChartObjectArrowThumbDown : public CChartObjectArrow
|
| {
|
| public:
|
| CChartObjectArrowThumbDown(void);
|
| ~CChartObjectArrowThumbDown(void);
|
| //--- method of creating the object
|
| bool Create(long chart_id,const string name,const int window,const datetime time,const double price);
|
| //--- method of identifying the object
|
| virtual int Type(void) const override { return(OBJ_ARROW_THUMB_DOWN); }
|
| //--- change of arrow code is blocked
|
| virtual bool ArrowCode(const char code) const override { return(false); }
|
| char ArrowCode(void) const { return(CChartObjectArrow::ArrowCode()); }
|
| };
|
| //+------------------------------------------------------------------+
|
| //| Constructor |
|
| //+------------------------------------------------------------------+
|
| CChartObjectArrowThumbDown::CChartObjectArrowThumbDown(void)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Destructor |
|
| //+------------------------------------------------------------------+
|
| CChartObjectArrowThumbDown::~CChartObjectArrowThumbDown(void)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Create object "ThumbsDown" |
|
| //+------------------------------------------------------------------+
|
| bool CChartObjectArrowThumbDown::Create(long chart_id,const string name,const int window,const datetime time,const double price)
|
| {
|
| if(!ObjectCreate(chart_id,name,OBJ_ARROW_THUMB_DOWN,window,time,price))
|
| return(false);
|
| if(!Attach(chart_id,name,window,1))
|
| return(false);
|
| //--- successful
|
| return(true);
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Class CChartObjectArrowUp. |
|
| //| Purpose: Class of the "Arrow Up" object of chart. |
|
| //| Derives from class CChartObjectArrow. |
|
| //+------------------------------------------------------------------+
|
| class CChartObjectArrowUp : public CChartObjectArrow
|
| {
|
| public:
|
| CChartObjectArrowUp(void);
|
| ~CChartObjectArrowUp(void);
|
| //--- method of creating the object
|
| bool Create(long chart_id,const string name,const int window,const datetime time,const double price);
|
| //--- method of identifying the object
|
| virtual int Type(void) const override { return(OBJ_ARROW_UP); }
|
| //--- change of arrow code is blocked
|
| virtual bool ArrowCode(const char code) const override { return(false); }
|
| char ArrowCode(void) const { return(CChartObjectArrow::ArrowCode()); }
|
| };
|
| //+------------------------------------------------------------------+
|
| //| Constructor |
|
| //+------------------------------------------------------------------+
|
| CChartObjectArrowUp::CChartObjectArrowUp(void)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Destructor |
|
| //+------------------------------------------------------------------+
|
| CChartObjectArrowUp::~CChartObjectArrowUp(void)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Create object "Arrow Up" |
|
| //+------------------------------------------------------------------+
|
| bool CChartObjectArrowUp::Create(long chart_id,const string name,const int window,const datetime time,const double price)
|
| {
|
| if(!ObjectCreate(chart_id,name,OBJ_ARROW_UP,window,time,price))
|
| return(false);
|
| if(!Attach(chart_id,name,window,1))
|
| return(false);
|
| //--- successful
|
| return(true);
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Class CChartObjectArrowDown. |
|
| //| Purpose: Class of the "Arrow Down" object of chart. |
|
| //| Derives from class CChartObjectArrow. |
|
| //+------------------------------------------------------------------+
|
| class CChartObjectArrowDown : public CChartObjectArrow
|
| {
|
| public:
|
| CChartObjectArrowDown(void);
|
| ~CChartObjectArrowDown(void);
|
| //--- method of creating the object
|
| bool Create(long chart_id,const string name,const int window,const datetime time,const double price);
|
| //--- method of identifying the object
|
| virtual int Type(void) const override { return(OBJ_ARROW_DOWN); }
|
| //--- change of arrow code is blocked
|
| virtual bool ArrowCode(const char code) const override { return(false); }
|
| char ArrowCode(void) const { return(CChartObjectArrow::ArrowCode()); }
|
| };
|
| //+------------------------------------------------------------------+
|
| //| Constructor |
|
| //+------------------------------------------------------------------+
|
| CChartObjectArrowDown::CChartObjectArrowDown(void)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Destructor |
|
| //+------------------------------------------------------------------+
|
| CChartObjectArrowDown::~CChartObjectArrowDown(void)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Create object "Arrow Down" |
|
| //+------------------------------------------------------------------+
|
| bool CChartObjectArrowDown::Create(long chart_id,const string name,const int window,const datetime time,const double price)
|
| {
|
| if(!ObjectCreate(chart_id,name,OBJ_ARROW_DOWN,window,time,price))
|
| return(false);
|
| if(!Attach(chart_id,name,window,1))
|
| return(false);
|
| //--- successful
|
| return(true);
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Class CChartObjectArrowStop. |
|
| //| Purpose: Class of the "Stop Sign" object of chart. |
|
| //| Derives from class CChartObjectArrow. |
|
| //+------------------------------------------------------------------+
|
| class CChartObjectArrowStop : public CChartObjectArrow
|
| {
|
| public:
|
| CChartObjectArrowStop(void);
|
| ~CChartObjectArrowStop(void);
|
| //--- method of creating the object
|
| bool Create(long chart_id,const string name,const int window,const datetime time,const double price);
|
| //--- method of identifying the object
|
| virtual int Type(void) const override { return(OBJ_ARROW_STOP); }
|
| //--- change of arrow code is blocked
|
| virtual bool ArrowCode(const char code) const override { return(false); }
|
| char ArrowCode(void) const { return(CChartObjectArrow::ArrowCode()); }
|
| };
|
| //+------------------------------------------------------------------+
|
| //| Constructor |
|
| //+------------------------------------------------------------------+
|
| CChartObjectArrowStop::CChartObjectArrowStop(void)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Destructor |
|
| //+------------------------------------------------------------------+
|
| CChartObjectArrowStop::~CChartObjectArrowStop(void)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Create object "Stop Sign" |
|
| //+------------------------------------------------------------------+
|
| bool CChartObjectArrowStop::Create(long chart_id,const string name,const int window,const datetime time,const double price)
|
| {
|
| if(!ObjectCreate(chart_id,name,OBJ_ARROW_STOP,window,time,price))
|
| return(false);
|
| if(!Attach(chart_id,name,window,1))
|
| return(false);
|
| //--- successful
|
| return(true);
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Class CChartObjectArrowCheck. |
|
| //| Purpose: Class of the "Check Sign" object of chart. |
|
| //| Derives from class CChartObjectArrow. |
|
| //+------------------------------------------------------------------+
|
| class CChartObjectArrowCheck : public CChartObjectArrow
|
| {
|
| public:
|
| CChartObjectArrowCheck(void);
|
| ~CChartObjectArrowCheck(void);
|
| //--- method of creating the object
|
| bool Create(long chart_id,const string name,const int window,const datetime time,const double price);
|
| //--- method of identifying the object
|
| virtual int Type(void) const override { return(OBJ_ARROW_CHECK); }
|
| //--- change of arrow code is blocked
|
| virtual bool ArrowCode(const char code) const override { return(false); }
|
| char ArrowCode(void) const { return(CChartObjectArrow::ArrowCode()); }
|
| };
|
| //+------------------------------------------------------------------+
|
| //| Constructor |
|
| //+------------------------------------------------------------------+
|
| CChartObjectArrowCheck::CChartObjectArrowCheck(void)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Destructor |
|
| //+------------------------------------------------------------------+
|
| CChartObjectArrowCheck::~CChartObjectArrowCheck(void)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Create object "Check Sign" |
|
| //+------------------------------------------------------------------+
|
| bool CChartObjectArrowCheck::Create(long chart_id,const string name,const int window,const datetime time,const double price)
|
| {
|
| if(!ObjectCreate(chart_id,name,OBJ_ARROW_CHECK,window,time,price))
|
| return(false);
|
| if(!Attach(chart_id,name,window,1))
|
| return(false);
|
| //--- successful
|
| return(true);
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Class CChartObjectArrowLeftPrice. |
|
| //| Purpose: Class of the "Left Price Label" object of chart. |
|
| //| Derives from class CChartObjectArrow. |
|
| //+------------------------------------------------------------------+
|
| class CChartObjectArrowLeftPrice : public CChartObjectArrow
|
| {
|
| public:
|
| CChartObjectArrowLeftPrice(void);
|
| ~CChartObjectArrowLeftPrice(void);
|
| //--- method of creating the object
|
| bool Create(long chart_id,const string name,const int window,const datetime time,const double price);
|
| //--- method of identifying the object
|
| virtual int Type(void) const override { return(OBJ_ARROW_LEFT_PRICE); }
|
| //--- change of arrow code and anchor point is blocked
|
| virtual bool ArrowCode(const char code) const override { return(false); }
|
| char ArrowCode(void) const { return(CChartObjectArrow::ArrowCode()); }
|
| virtual bool Anchor(const ENUM_ARROW_ANCHOR anchor) const override { return(false); }
|
| ENUM_ARROW_ANCHOR Anchor(void) const { return(CChartObjectArrow::Anchor()); }
|
| };
|
| //+------------------------------------------------------------------+
|
| //| Constructor |
|
| //+------------------------------------------------------------------+
|
| CChartObjectArrowLeftPrice::CChartObjectArrowLeftPrice(void)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Destructor |
|
| //+------------------------------------------------------------------+
|
| CChartObjectArrowLeftPrice::~CChartObjectArrowLeftPrice(void)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Create object "Left Price Label" |
|
| //+------------------------------------------------------------------+
|
| bool CChartObjectArrowLeftPrice::Create(long chart_id,const string name,const int window,const datetime time,const double price)
|
| {
|
| if(!ObjectCreate(chart_id,name,OBJ_ARROW_LEFT_PRICE,window,time,price))
|
| return(false);
|
| if(!Attach(chart_id,name,window,1))
|
| return(false);
|
| //--- successful
|
| return(true);
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Class CChartObjectArrowRightPrice. |
|
| //| Purpose: Class of the "Right Price Label" object of chart. |
|
| //| Derives from class CChartObjectArrow. |
|
| //+------------------------------------------------------------------+
|
| class CChartObjectArrowRightPrice : public CChartObjectArrow
|
| {
|
| public:
|
| CChartObjectArrowRightPrice(void);
|
| ~CChartObjectArrowRightPrice(void);
|
| //--- method of creating the object
|
| bool Create(long chart_id,const string name,const int window,const datetime time,const double price);
|
| //--- method of identifying the object
|
| virtual int Type(void) const override { return(OBJ_ARROW_RIGHT_PRICE); }
|
| //--- change of arrow code and anchor point is blocked
|
| virtual bool ArrowCode(const char code) const override { return(false); }
|
| char ArrowCode(void) const { return(CChartObjectArrow::ArrowCode()); }
|
| virtual bool Anchor(const ENUM_ARROW_ANCHOR anchor) const override { return(false); }
|
| ENUM_ARROW_ANCHOR Anchor(void) const { return(CChartObjectArrow::Anchor()); }
|
| };
|
| //+------------------------------------------------------------------+
|
| //| Constructor |
|
| //+------------------------------------------------------------------+
|
| CChartObjectArrowRightPrice::CChartObjectArrowRightPrice(void)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Destructor |
|
| //+------------------------------------------------------------------+
|
| CChartObjectArrowRightPrice::~CChartObjectArrowRightPrice(void)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Create object "Right Price Label" |
|
| //+------------------------------------------------------------------+
|
| bool CChartObjectArrowRightPrice::Create(long chart_id,const string name,const int window,const datetime time,const double price)
|
| {
|
| if(!ObjectCreate(chart_id,name,OBJ_ARROW_RIGHT_PRICE,window,time,price))
|
| return(false);
|
| if(!Attach(chart_id,name,window,1))
|
| return(false);
|
| //--- successful
|
| return(true);
|
| }
|
| //+------------------------------------------------------------------+
|