| //+------------------------------------------------------------------+
|
| //| Chart.mqh |
|
| //| Copyright 2000-2025, MetaQuotes Ltd. |
|
| //| https://www.mql5.com |
|
| //+------------------------------------------------------------------+
|
| #include <Object.mqh>
|
| //+------------------------------------------------------------------+
|
| //| Class CChart. |
|
| //| Purpose: Class of the "Chart" object. |
|
| //| Derives from class CObject. |
|
| //+------------------------------------------------------------------+
|
| class CChart : public CObject
|
| {
|
| protected:
|
| long m_chart_id; // chart identifier
|
| public:
|
| CChart(void);
|
| ~CChart(void);
|
| //--- methods of access to protected data
|
| long ChartId(void) const { return(m_chart_id); }
|
| //--- method of identifying the object
|
| virtual int Type(void) const { return(0x1111); }
|
| //--- methods of access to properties of the chart
|
| //--- common properties
|
| ENUM_CHART_MODE Mode(void) const;
|
| bool Mode(const ENUM_CHART_MODE mode) const;
|
| bool Foreground(void) const;
|
| bool Foreground(const bool foreground) const;
|
| bool Shift(void) const;
|
| bool Shift(const bool shift) const;
|
| double ShiftSize(void) const;
|
| bool ShiftSize(double shift) const;
|
| bool AutoScroll(void) const;
|
| bool AutoScroll(const bool auto_scroll) const;
|
| int Scale(void) const;
|
| bool Scale(int scale) const;
|
| bool ScaleFix(void) const;
|
| bool ScaleFix(const bool scale_fix) const;
|
| bool ScaleFix_11(void) const;
|
| bool ScaleFix_11(const bool scale_fix_11) const;
|
| double FixedMax(void) const;
|
| bool FixedMax(const double fixed_max) const;
|
| double FixedMin(void) const;
|
| bool FixedMin(const double fixed_min) const;
|
| bool ScalePPB(void) const;
|
| bool ScalePPB(const bool scale_ppb) const;
|
| double PointsPerBar(void) const;
|
| bool PointsPerBar(const double points_per_bar) const;
|
| //--- show properties
|
| bool ShowOHLC(void) const;
|
| bool ShowOHLC(const bool show) const;
|
| bool ShowLineBid(void) const;
|
| bool ShowLineBid(const bool show) const;
|
| bool ShowLineAsk(void) const;
|
| bool ShowLineAsk(const bool show) const;
|
| bool ShowLastLine(void) const;
|
| bool ShowLastLine(const bool show) const;
|
| bool ShowPeriodSep(void) const;
|
| bool ShowPeriodSep(const bool show) const;
|
| bool ShowGrid(void) const;
|
| bool ShowGrid(const bool show) const;
|
| ENUM_CHART_VOLUME_MODE ShowVolumes(void) const;
|
| bool ShowVolumes(const ENUM_CHART_VOLUME_MODE show) const;
|
| bool ShowObjectDescr(void) const;
|
| bool ShowObjectDescr(const bool show) const;
|
| bool ShowDateScale(const bool show) const;
|
| bool ShowPriceScale(const bool show) const;
|
| //--- color properties
|
| color ColorBackground(void) const;
|
| bool ColorBackground(const color new_color) const;
|
| color ColorForeground(void) const;
|
| bool ColorForeground(const color new_color) const;
|
| color ColorGrid(void) const;
|
| bool ColorGrid(const color new_color) const;
|
| color ColorBarUp(void) const;
|
| bool ColorBarUp(const color new_color) const;
|
| color ColorBarDown(void) const;
|
| bool ColorBarDown(const color new_color) const;
|
| color ColorCandleBull(void) const;
|
| bool ColorCandleBull(const color new_color) const;
|
| color ColorCandleBear(void) const;
|
| bool ColorCandleBear(const color new_color) const;
|
| color ColorChartLine(void) const;
|
| bool ColorChartLine(const color new_color) const;
|
| color ColorVolumes(void) const;
|
| bool ColorVolumes(const color new_color) const;
|
| color ColorLineBid(void) const;
|
| bool ColorLineBid(const color new_color) const;
|
| color ColorLineAsk(void) const;
|
| bool ColorLineAsk(const color new_color) const;
|
| color ColorLineLast(void) const;
|
| bool ColorLineLast(const color new_color) const;
|
| color ColorStopLevels(void) const;
|
| bool ColorStopLevels(const color new_color) const;
|
| //--- other properties
|
| bool BringToTop(void) const;
|
| bool EventObjectCreate(const bool flag=true) const;
|
| bool EventObjectDelete(const bool flag=true) const;
|
| bool EventMouseMove(const bool flag=true) const;
|
| bool MouseScroll(const bool flag=true) const;
|
| //--- methods of access to READ ONLY properties of the chart
|
| int VisibleBars(void) const;
|
| int WindowsTotal(void) const;
|
| bool WindowIsVisible(const int num) const;
|
| int WindowHandle(void) const;
|
| int FirstVisibleBar(void) const;
|
| int WidthInBars(void) const;
|
| int WidthInPixels(void) const;
|
| int HeightInPixels(const int num) const;
|
| int SubwindowY(const int num) const;
|
| double PriceMin(const int num) const;
|
| double PriceMax(const int num) const;
|
| bool IsObject(void) const;
|
| //--- methods of binding chart
|
| void Attach(void) { m_chart_id=ChartID(); }
|
| void Attach(const long chart) { m_chart_id=chart; }
|
| void FirstChart(void) { m_chart_id=ChartFirst(); }
|
| void NextChart(void) { m_chart_id=ChartNext(m_chart_id); }
|
| long Open(const string symbol_name,const ENUM_TIMEFRAMES timeframe);
|
| void Detach(void) { m_chart_id=-1; }
|
| void Close(void);
|
| //--- navigation method
|
| bool Navigate(const ENUM_CHART_POSITION position,const int shift=0) const;
|
| //--- methods of access to the API functions of MQL5
|
| string Symbol(void) const { return(ChartSymbol(m_chart_id)); }
|
| ENUM_TIMEFRAMES Period(void) const { return(ChartPeriod(m_chart_id)); }
|
| void Redraw(void) const { ChartRedraw(m_chart_id); }
|
| long GetInteger(const ENUM_CHART_PROPERTY_INTEGER prop_id,const int sub_window=0) const;
|
| bool GetInteger(const ENUM_CHART_PROPERTY_INTEGER prop_id,const int sub_window,long &value) const;
|
| bool SetInteger(const ENUM_CHART_PROPERTY_INTEGER prop_id,const long value) const;
|
| double GetDouble(const ENUM_CHART_PROPERTY_DOUBLE prop_id,const int sub_window=0) const;
|
| bool GetDouble(const ENUM_CHART_PROPERTY_DOUBLE prop_id,const int sub_window,double &value) const;
|
| bool SetDouble(const ENUM_CHART_PROPERTY_DOUBLE prop_id,const double value) const;
|
| string GetString(const ENUM_CHART_PROPERTY_STRING prop_id) const;
|
| bool GetString(const ENUM_CHART_PROPERTY_STRING prop_id,string &value) const;
|
| bool SetString(const ENUM_CHART_PROPERTY_STRING prop_id,const string value) const;
|
| bool SetSymbolPeriod(const string symbol,const ENUM_TIMEFRAMES period) const;
|
| bool ApplyTemplate(const string filename) const;
|
| bool ScreenShot(const string filename,const int width,const int height,
|
| const ENUM_ALIGN_MODE align_mode=ALIGN_RIGHT) const;
|
| int WindowOnDropped(void) const;
|
| double PriceOnDropped(void) const;
|
| datetime TimeOnDropped(void) const;
|
| int XOnDropped(void) const;
|
| int YOnDropped(void) const;
|
| //--- methods for working with indicators
|
| bool IndicatorAdd(const int subwin,const int handle) const;
|
| bool IndicatorDelete(const int subwin,const string name) const;
|
| int IndicatorsTotal(const int subwin) const;
|
| string IndicatorName(const int subwin,const int index) const;
|
| //--- methods for working with files
|
| virtual bool Save(const int file_handle);
|
| virtual bool Load(const int file_handle);
|
| };
|
| //+------------------------------------------------------------------+
|
| //| Constructor |
|
| //+------------------------------------------------------------------+
|
| CChart::CChart(void) : m_chart_id(-1)
|
| {
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Destructor |
|
| //+------------------------------------------------------------------+
|
| CChart::~CChart(void)
|
| {
|
| if(m_chart_id!=-1)
|
| Close();
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Opening chart |
|
| //+------------------------------------------------------------------+
|
| long CChart::Open(const string symbol_name,const ENUM_TIMEFRAMES timeframe)
|
| {
|
| m_chart_id=ChartOpen(symbol_name,timeframe);
|
| if(m_chart_id==0)
|
| m_chart_id=-1;
|
| return(m_chart_id);
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get the type of representation of chart |
|
| //+------------------------------------------------------------------+
|
| ENUM_CHART_MODE CChart::Mode(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(WRONG_VALUE);
|
| //--- result
|
| return((ENUM_CHART_MODE)ChartGetInteger(m_chart_id,CHART_MODE));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set the type of representation chart |
|
| //+------------------------------------------------------------------+
|
| bool CChart::Mode(const ENUM_CHART_MODE mode) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_MODE,mode));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "Foreground" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::Foreground(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return((bool)ChartGetInteger(m_chart_id,CHART_FOREGROUND));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "Foreground" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::Foreground(const bool foreground) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_FOREGROUND,foreground));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "Shift" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::Shift(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return((bool)ChartGetInteger(m_chart_id,CHART_SHIFT));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "Shift"property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::Shift(const bool shift) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_SHIFT,shift));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "ShiftSize" property |
|
| //+------------------------------------------------------------------+
|
| double CChart::ShiftSize(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(DBL_MAX);
|
| //--- result
|
| return(ChartGetDouble(m_chart_id,CHART_SHIFT_SIZE));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "ShiftSize" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ShiftSize(double shift) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| if(shift<10)
|
| shift=10;
|
| if(shift>50)
|
| shift=50;
|
| //--- result
|
| return(ChartSetDouble(m_chart_id,CHART_SHIFT_SIZE,shift));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "AutoScroll" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::AutoScroll(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return((bool)ChartGetInteger(m_chart_id,CHART_AUTOSCROLL));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "AutoScroll" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::AutoScroll(const bool auto_scroll) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_AUTOSCROLL,auto_scroll));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "Scale" property |
|
| //+------------------------------------------------------------------+
|
| int CChart::Scale(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(0);
|
| //--- result
|
| return((int)ChartGetInteger(m_chart_id,CHART_SCALE));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "Scale" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::Scale(int shift) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| if(shift<0)
|
| shift=0;
|
| if(shift>32)
|
| shift=32;
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_SCALE,shift));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "ScaleFix" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ScaleFix(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return((bool)ChartGetInteger(m_chart_id,CHART_SCALEFIX));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "ScaleFix" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ScaleFix(const bool scale_fix) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_SCALEFIX,scale_fix));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "ScaleFix_11" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ScaleFix_11(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return((bool)ChartGetInteger(m_chart_id,CHART_SCALEFIX_11));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "ScaleFix_11" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ScaleFix_11(const bool scale_fix_11) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_SCALEFIX_11,scale_fix_11));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "FixedMax" property |
|
| //+------------------------------------------------------------------+
|
| double CChart::FixedMax(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(EMPTY_VALUE);
|
| //--- result
|
| return(ChartGetDouble(m_chart_id,CHART_FIXED_MAX));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "FixedMax" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::FixedMax(const double fixed_max) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetDouble(m_chart_id,CHART_FIXED_MAX,fixed_max));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "FixedMin" property |
|
| //+------------------------------------------------------------------+
|
| double CChart::FixedMin(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(EMPTY_VALUE);
|
| //--- result
|
| return(ChartGetDouble(m_chart_id,CHART_FIXED_MIN));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "FixedMin" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::FixedMin(const double fixed_min) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetDouble(m_chart_id,CHART_FIXED_MIN,fixed_min));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "ScalePointsPerBar" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ScalePPB(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return((bool)ChartGetInteger(m_chart_id,CHART_SCALE_PT_PER_BAR));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "ScalePointsPerBar" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ScalePPB(const bool scale_ppb) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_SCALE_PT_PER_BAR,scale_ppb));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "PointsPerBar" property |
|
| //+------------------------------------------------------------------+
|
| double CChart::PointsPerBar(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(EMPTY_VALUE);
|
| //--- result
|
| return(ChartGetDouble(m_chart_id,CHART_POINTS_PER_BAR));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "PointsPerBar" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::PointsPerBar(const double points_per_bar) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetDouble(m_chart_id,CHART_POINTS_PER_BAR,points_per_bar));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "ShowOHLC" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ShowOHLC(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return((bool)ChartGetInteger(m_chart_id,CHART_SHOW_OHLC));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "ShowOHLC" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ShowOHLC(const bool show) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_SHOW_OHLC,show));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "ShowLineBid" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ShowLineBid(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return((bool)ChartGetInteger(m_chart_id,CHART_SHOW_BID_LINE));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "ShowLineBid" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ShowLineBid(const bool show) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_SHOW_BID_LINE,show));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "ShowLineAsk" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ShowLineAsk(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return((bool)ChartGetInteger(m_chart_id,CHART_SHOW_ASK_LINE));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "ShowLineAsk" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ShowLineAsk(const bool show) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_SHOW_ASK_LINE,show));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "ShowLastLine" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ShowLastLine(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return((bool)ChartGetInteger(m_chart_id,CHART_SHOW_LAST_LINE));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "ShowLastLine" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ShowLastLine(const bool show) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_SHOW_LAST_LINE,show));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "ShowPeriodSep" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ShowPeriodSep(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return((bool)ChartGetInteger(m_chart_id,CHART_SHOW_PERIOD_SEP));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "ShowPeriodSep" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ShowPeriodSep(const bool show) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_SHOW_PERIOD_SEP,show));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "ShowGrid" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ShowGrid(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return((bool)ChartGetInteger(m_chart_id,CHART_SHOW_GRID));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "ShowGrid" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ShowGrid(const bool show) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_SHOW_GRID,show));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "ShowVolumes" property |
|
| //+------------------------------------------------------------------+
|
| ENUM_CHART_VOLUME_MODE CChart::ShowVolumes(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(WRONG_VALUE);
|
| //--- result
|
| return((ENUM_CHART_VOLUME_MODE)ChartGetInteger(m_chart_id,CHART_SHOW_VOLUMES));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "ShowVolumes" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ShowVolumes(const ENUM_CHART_VOLUME_MODE show) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_SHOW_VOLUMES,show));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "ShowObjectDescr" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ShowObjectDescr(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return((bool)ChartGetInteger(m_chart_id,CHART_SHOW_OBJECT_DESCR));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "ShowObjectDescr" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ShowObjectDescr(const bool show) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_SHOW_OBJECT_DESCR,show));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "ShowDateScale" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ShowDateScale(const bool show) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_SHOW_DATE_SCALE,show));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set value of the "ShowPriceScale" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ShowPriceScale(const bool show) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_SHOW_PRICE_SCALE,show));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get color value of the "Background" property |
|
| //+------------------------------------------------------------------+
|
| color CChart::ColorBackground(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(clrNONE);
|
| //--- result
|
| return((color)ChartGetInteger(m_chart_id,CHART_COLOR_BACKGROUND));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set color value of the "Background" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ColorBackground(const color new_color) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_COLOR_BACKGROUND,new_color));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get color value of the "Foreground" property |
|
| //+------------------------------------------------------------------+
|
| color CChart::ColorForeground(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(clrNONE);
|
| //--- result
|
| return((color)ChartGetInteger(m_chart_id,CHART_COLOR_FOREGROUND));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set color value for the "Foreground" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ColorForeground(const color new_color) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_COLOR_FOREGROUND,new_color));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get color value of the "Grid" property |
|
| //+------------------------------------------------------------------+
|
| color CChart::ColorGrid(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(clrNONE);
|
| //--- result
|
| return((color)ChartGetInteger(m_chart_id,CHART_COLOR_GRID));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set color value for the "Grid" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ColorGrid(const color new_color) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_COLOR_GRID,new_color));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get color value of the "Bar Up" property |
|
| //+------------------------------------------------------------------+
|
| color CChart::ColorBarUp(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(clrNONE);
|
| //--- result
|
| return((color)ChartGetInteger(m_chart_id,CHART_COLOR_CHART_UP));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set color value of the "Bar Up" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ColorBarUp(const color new_color) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_COLOR_CHART_UP,new_color));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get color value of the "Bar Down" property |
|
| //+------------------------------------------------------------------+
|
| color CChart::ColorBarDown(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(clrNONE);
|
| //--- result
|
| return((color)ChartGetInteger(m_chart_id,CHART_COLOR_CHART_DOWN));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set color value of the "Bar Down" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ColorBarDown(const color new_color) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_COLOR_CHART_DOWN,new_color));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get color value of the "Candle Bull" property |
|
| //+------------------------------------------------------------------+
|
| color CChart::ColorCandleBull(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(clrNONE);
|
| //--- result
|
| return((color)ChartGetInteger(m_chart_id,CHART_COLOR_CANDLE_BULL));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set color value of the "Candle Bull" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ColorCandleBull(const color new_color) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_COLOR_CANDLE_BULL,new_color));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get color value of the "Candle Bear" property |
|
| //+------------------------------------------------------------------+
|
| color CChart::ColorCandleBear(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(clrNONE);
|
| //--- result
|
| return((color)ChartGetInteger(m_chart_id,CHART_COLOR_CANDLE_BEAR));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set color value of the "Candle Bear" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ColorCandleBear(const color new_color) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_COLOR_CANDLE_BEAR,new_color));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get color value of the "Chart Line" property |
|
| //+------------------------------------------------------------------+
|
| color CChart::ColorChartLine(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(clrNONE);
|
| //--- result
|
| return((color)ChartGetInteger(m_chart_id,CHART_COLOR_CHART_LINE));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set color value of the "Chart Line" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ColorChartLine(const color new_color) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_COLOR_CHART_LINE,new_color));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get color value of the "Volumes" property |
|
| //+------------------------------------------------------------------+
|
| color CChart::ColorVolumes(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(clrNONE);
|
| //--- result
|
| return((color)ChartGetInteger(m_chart_id,CHART_COLOR_VOLUME));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set color value of the "Volumes" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ColorVolumes(const color new_color) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_COLOR_VOLUME,new_color));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get color value of the "Line Bid" property |
|
| //+------------------------------------------------------------------+
|
| color CChart::ColorLineBid(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(clrNONE);
|
| //--- result
|
| return((color)ChartGetInteger(m_chart_id,CHART_COLOR_BID));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set color value of the "Line Bid" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ColorLineBid(const color new_color) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_COLOR_BID,new_color));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get color value of the "Line Ask" property |
|
| //+------------------------------------------------------------------+
|
| color CChart::ColorLineAsk(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(clrNONE);
|
| //--- result
|
| return((color)ChartGetInteger(m_chart_id,CHART_COLOR_ASK));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set color value of the "Line Ask" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ColorLineAsk(const color new_color) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_COLOR_ASK,new_color));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get color value of the "Line Last" property |
|
| //+------------------------------------------------------------------+
|
| color CChart::ColorLineLast(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(clrNONE);
|
| //--- result
|
| return((color)ChartGetInteger(m_chart_id,CHART_COLOR_LAST));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set color value of the "Line Last" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ColorLineLast(const color new_color) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_COLOR_LAST,new_color));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get color value of the "Stop Levels" property |
|
| //+------------------------------------------------------------------+
|
| color CChart::ColorStopLevels(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(clrNONE);
|
| //--- result
|
| return((color)ChartGetInteger(m_chart_id,CHART_COLOR_STOP_LEVEL));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Set color value of the "Stop Levels" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ColorStopLevels(const color new_color) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_COLOR_STOP_LEVEL,new_color));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Shows chart always on top |
|
| //+------------------------------------------------------------------+
|
| bool CChart::BringToTop(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_BRING_TO_TOP,true));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Sets flag to generate event of creating objects |
|
| //+------------------------------------------------------------------+
|
| bool CChart::EventObjectCreate(const bool flag) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_EVENT_OBJECT_CREATE,flag));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Sets flag to generate event of deleting objects |
|
| //+------------------------------------------------------------------+
|
| bool CChart::EventObjectDelete(const bool flag) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_EVENT_OBJECT_DELETE,flag));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Sets flag to generate event of moving mouse cursor |
|
| //+------------------------------------------------------------------+
|
| bool CChart::EventMouseMove(const bool flag) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_EVENT_MOUSE_MOVE,flag));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Sets flag to mouse scrolling |
|
| //+------------------------------------------------------------------+
|
| bool CChart::MouseScroll(const bool flag) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetInteger(m_chart_id,CHART_MOUSE_SCROLL,flag));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "VisibleBars" property |
|
| //+------------------------------------------------------------------+
|
| int CChart::VisibleBars(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(0);
|
| //--- result
|
| return((int)ChartGetInteger(m_chart_id,CHART_WIDTH_IN_BARS));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "WindowsTotal" property |
|
| //+------------------------------------------------------------------+
|
| int CChart::WindowsTotal(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(0);
|
| //--- result
|
| return((int)ChartGetInteger(m_chart_id,CHART_WINDOWS_TOTAL));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "WindowIsVisible" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::WindowIsVisible(const int num) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return((bool)ChartGetInteger(m_chart_id,CHART_WINDOW_IS_VISIBLE,num));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "WindowHandle" property |
|
| //+------------------------------------------------------------------+
|
| int CChart::WindowHandle(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(INVALID_HANDLE);
|
| //--- result
|
| return((int)ChartGetInteger(m_chart_id,CHART_WINDOW_HANDLE));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "FirstVisibleBar" property |
|
| //+------------------------------------------------------------------+
|
| int CChart::FirstVisibleBar(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(-1);
|
| //--- result
|
| return((int)ChartGetInteger(m_chart_id,CHART_FIRST_VISIBLE_BAR));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "WidthInBars" property |
|
| //+------------------------------------------------------------------+
|
| int CChart::WidthInBars(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(0);
|
| //--- result
|
| return((int)ChartGetInteger(m_chart_id,CHART_WIDTH_IN_BARS));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "WidthInPixels" property |
|
| //+------------------------------------------------------------------+
|
| int CChart::WidthInPixels(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(0);
|
| //--- result
|
| return((int)ChartGetInteger(m_chart_id,CHART_WIDTH_IN_PIXELS));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "HeightInPixels" property |
|
| //+------------------------------------------------------------------+
|
| int CChart::HeightInPixels(const int num) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(0);
|
| //--- result
|
| return((int)ChartGetInteger(m_chart_id,CHART_HEIGHT_IN_PIXELS,num));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "WindowYDistance" property |
|
| //+------------------------------------------------------------------+
|
| int CChart::SubwindowY(const int num) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(0);
|
| //--- result
|
| return((int)ChartGetInteger(m_chart_id,CHART_WINDOW_YDISTANCE,num));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "PriceMin" property |
|
| //+------------------------------------------------------------------+
|
| double CChart::PriceMin(const int num) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(EMPTY_VALUE);
|
| //--- result
|
| return(ChartGetDouble(m_chart_id,CHART_PRICE_MIN,num));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "PriceMax" property |
|
| //+------------------------------------------------------------------+
|
| double CChart::PriceMax(const int num) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(EMPTY_VALUE);
|
| //--- result
|
| return(ChartGetDouble(m_chart_id,CHART_PRICE_MAX,num));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Get value of the "IsObject" property |
|
| //+------------------------------------------------------------------+
|
| bool CChart::IsObject(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return((bool)ChartGetInteger(m_chart_id,CHART_IS_OBJECT));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Chart close |
|
| //+------------------------------------------------------------------+
|
| void CChart::Close(void)
|
| {
|
| if(m_chart_id!=-1)
|
| {
|
| ChartClose(m_chart_id);
|
| m_chart_id=-1;
|
| }
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Chart navigation |
|
| //+------------------------------------------------------------------+
|
| bool CChart::Navigate(const ENUM_CHART_POSITION position,const int shift) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartNavigate(m_chart_id,position,shift));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Access functions long ChartGetInteger(...) |
|
| //+------------------------------------------------------------------+
|
| long CChart::GetInteger(const ENUM_CHART_PROPERTY_INTEGER prop_id,const int subwindow) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(0);
|
| //--- result
|
| return(ChartGetInteger(m_chart_id,prop_id,subwindow));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Access function bool ChartGetInteger(...) |
|
| //+------------------------------------------------------------------+
|
| bool CChart::GetInteger(const ENUM_CHART_PROPERTY_INTEGER prop_id,const int subwindow,long &value) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartGetInteger(m_chart_id,prop_id,subwindow,value));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Access function ChartSetInteger(...) |
|
| //+------------------------------------------------------------------+
|
| bool CChart::SetInteger(const ENUM_CHART_PROPERTY_INTEGER prop_id,const long value) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //---
|
| return(ChartSetInteger(m_chart_id,prop_id,value));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Access function double ChartGetDouble(...) |
|
| //+------------------------------------------------------------------+
|
| double CChart::GetDouble(const ENUM_CHART_PROPERTY_DOUBLE prop_id,const int subwindow) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(EMPTY_VALUE);
|
| //--- result
|
| return(ChartGetDouble(m_chart_id,prop_id,subwindow));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Access function bool ChartGetDouble(...) |
|
| //+------------------------------------------------------------------+
|
| bool CChart::GetDouble(const ENUM_CHART_PROPERTY_DOUBLE prop_id,const int subwindow,double &value) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartGetDouble(m_chart_id,prop_id,subwindow,value));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Access function ChartSetDouble(...) |
|
| //+------------------------------------------------------------------+
|
| bool CChart::SetDouble(const ENUM_CHART_PROPERTY_DOUBLE prop_id,const double value) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetDouble(m_chart_id,prop_id,value));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Access function string ChartGetString(...) |
|
| //+------------------------------------------------------------------+
|
| string CChart::GetString(const ENUM_CHART_PROPERTY_STRING prop_id) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return("");
|
| //--- result
|
| return(ChartGetString(m_chart_id,prop_id));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Access functions bool ChartGetString(...) |
|
| //+------------------------------------------------------------------+
|
| bool CChart::GetString(const ENUM_CHART_PROPERTY_STRING prop_id,string &value) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartGetString(m_chart_id,prop_id,value));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Access function ChartSetString(...) |
|
| //+------------------------------------------------------------------+
|
| bool CChart::SetString(const ENUM_CHART_PROPERTY_STRING prop_id,const string value) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetString(m_chart_id,prop_id,value));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Access function ChartSetSymbolPeriod(...) |
|
| //+------------------------------------------------------------------+
|
| bool CChart::SetSymbolPeriod(const string symbol,const ENUM_TIMEFRAMES period) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartSetSymbolPeriod(m_chart_id,symbol,period));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Access function ChartApplyTemplate(...) |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ApplyTemplate(const string filename) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartApplyTemplate(m_chart_id,filename));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Access function ChartScreenShot(...) |
|
| //+------------------------------------------------------------------+
|
| bool CChart::ScreenShot(const string filename,const int width,const int height,const ENUM_ALIGN_MODE align_mode) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartScreenShot(m_chart_id,filename,width,height,align_mode));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Access function WindowOnDropped() |
|
| //+------------------------------------------------------------------+
|
| int CChart::WindowOnDropped(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(0);
|
| //--- result
|
| return(ChartWindowOnDropped());
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Access function PriceOnDropped() |
|
| //+------------------------------------------------------------------+
|
| double CChart::PriceOnDropped(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(EMPTY_VALUE);
|
| //--- result
|
| return(ChartPriceOnDropped());
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Access function TimeOnDropped() |
|
| //+------------------------------------------------------------------+
|
| datetime CChart::TimeOnDropped(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartTimeOnDropped());
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Access functions XOnDropped() |
|
| //+------------------------------------------------------------------+
|
| int CChart::XOnDropped(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(0);
|
| //--- result
|
| return(ChartXOnDropped());
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Access functions YOnDropped() |
|
| //+------------------------------------------------------------------+
|
| int CChart::YOnDropped(void) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(0);
|
| //--- result
|
| return(ChartYOnDropped());
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Adds indicator to chart |
|
| //+------------------------------------------------------------------+
|
| bool CChart::IndicatorAdd(const int subwin,const int handle) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartIndicatorAdd(m_chart_id,subwin,handle));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Deletes indicator from chart |
|
| //+------------------------------------------------------------------+
|
| bool CChart::IndicatorDelete(const int subwin,const string name) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(false);
|
| //--- result
|
| return(ChartIndicatorDelete(m_chart_id,subwin,name));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Gets number of indicators in chart subwindow |
|
| //+------------------------------------------------------------------+
|
| int CChart::IndicatorsTotal(const int subwin) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return(0);
|
| //--- result
|
| return(ChartIndicatorsTotal(m_chart_id,subwin));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Gets short name of indicator |
|
| //+------------------------------------------------------------------+
|
| string CChart::IndicatorName(const int subwin,const int index) const
|
| {
|
| //--- check
|
| if(m_chart_id==-1)
|
| return("");
|
| //--- result
|
| return(ChartIndicatorName(m_chart_id,subwin,index));
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Writing parameters of chart to file |
|
| //+------------------------------------------------------------------+
|
| bool CChart::Save(const int file_handle)
|
| {
|
| string work_str;
|
| int work_int;
|
| //--- check
|
| if(file_handle==INVALID_HANDLE || m_chart_id==-1)
|
| return(false);
|
| //--- write start marker - 0xFFFFFFFFFFFFFFFF
|
| if(FileWriteLong(file_handle,-1)!=sizeof(long))
|
| return(false);
|
| //--- write chart type
|
| if(FileWriteInteger(file_handle,Type(),INT_VALUE)!=INT_VALUE)
|
| return(false);
|
| //--- write chart symbol
|
| work_str=Symbol();
|
| work_int=StringLen(work_str);
|
| if(FileWriteInteger(file_handle,work_int,INT_VALUE)!=INT_VALUE)
|
| return(false);
|
| if(work_int!=0) if(FileWriteString(file_handle,work_str,work_int)!=work_int)
|
| return(false);
|
| //--- write period of chart
|
| if(FileWriteInteger(file_handle,Period(),INT_VALUE)!=sizeof(int))
|
| return(false);
|
| //--- write value of the "Mode" property
|
| if(FileWriteInteger(file_handle,(int)ChartGetInteger(m_chart_id,CHART_MODE),INT_VALUE)!=sizeof(int))
|
| return(false);
|
| //--- write value of the "Foreground" property
|
| if(FileWriteInteger(file_handle,(int)ChartGetInteger(m_chart_id,CHART_FOREGROUND),CHAR_VALUE)!=sizeof(char))
|
| return(false);
|
| //--- write value of the "Shift" property
|
| if(FileWriteInteger(file_handle,(int)ChartGetInteger(m_chart_id,CHART_SHIFT),CHAR_VALUE)!=sizeof(char))
|
| return(false);
|
| //--- write value of the "ShiftSize" property
|
| if(FileWriteInteger(file_handle,(int)ChartGetInteger(m_chart_id,CHART_SHIFT),INT_VALUE)!=sizeof(int))
|
| return(false);
|
| //--- write value of the "AutoScroll" property
|
| if(FileWriteInteger(file_handle,(int)ChartGetInteger(m_chart_id,CHART_AUTOSCROLL),CHAR_VALUE)!=sizeof(char))
|
| return(false);
|
| //--- write value of the "Scale" property
|
| if(FileWriteInteger(file_handle,(int)ChartGetInteger(m_chart_id,CHART_SCALE),INT_VALUE)!=sizeof(int))
|
| return(false);
|
| //--- write value of the "ScaleFix" property
|
| if(FileWriteInteger(file_handle,(int)ChartGetInteger(m_chart_id,CHART_SCALEFIX),CHAR_VALUE)!=sizeof(char))
|
| return(false);
|
| //--- write value of the "ScaleFix_11" property
|
| if(FileWriteInteger(file_handle,(int)ChartGetInteger(m_chart_id,CHART_SCALEFIX_11),CHAR_VALUE)!=sizeof(char))
|
| return(false);
|
| //--- write value of the "FixedMax" property
|
| if(FileWriteDouble(file_handle,ChartGetDouble(m_chart_id,CHART_FIXED_MAX))!=sizeof(double))
|
| return(false);
|
| //--- write value of the "FixedMin" property
|
| if(FileWriteDouble(file_handle,ChartGetDouble(m_chart_id,CHART_FIXED_MIN))!=sizeof(double))
|
| return(false);
|
| //--- write the "ScalePPB" property
|
| if(FileWriteInteger(file_handle,(int)ChartGetInteger(m_chart_id,CHART_SCALE_PT_PER_BAR),CHAR_VALUE)!=sizeof(char))
|
| return(false);
|
| //--- write value of the "PointsPerBar" property
|
| if(FileWriteDouble(file_handle,ChartGetDouble(m_chart_id,CHART_POINTS_PER_BAR))!=sizeof(double))
|
| return(false);
|
| //--- write value of the "ShowOHLC" property
|
| if(FileWriteInteger(file_handle,(int)ChartGetInteger(m_chart_id,CHART_SHOW_OHLC),CHAR_VALUE)!=sizeof(char))
|
| return(false);
|
| //--- write value of the "ShowLineBid" property
|
| if(FileWriteInteger(file_handle,(int)ChartGetInteger(m_chart_id,CHART_SHOW_BID_LINE),CHAR_VALUE)!=sizeof(char))
|
| return(false);
|
| //--- write value of the "ShowLineAsk" property
|
| if(FileWriteInteger(file_handle,(int)ChartGetInteger(m_chart_id,CHART_SHOW_ASK_LINE),CHAR_VALUE)!=sizeof(char))
|
| return(false);
|
| //--- write value of the "ShowLastLine" property
|
| if(FileWriteInteger(file_handle,(int)ChartGetInteger(m_chart_id,CHART_SHOW_LAST_LINE),CHAR_VALUE)!=sizeof(char))
|
| return(false);
|
| //--- write value of the "ShowPeriodSep" property
|
| if(FileWriteInteger(file_handle,(int)ChartGetInteger(m_chart_id,CHART_SHOW_PERIOD_SEP),CHAR_VALUE)!=sizeof(char))
|
| return(false);
|
| //--- write value of the "ShowGrid" property
|
| if(FileWriteInteger(file_handle,(int)ChartGetInteger(m_chart_id,CHART_SHOW_GRID),CHAR_VALUE)!=sizeof(char))
|
| return(false);
|
| //--- write value of the "ShowVolumes" property
|
| if(FileWriteInteger(file_handle,(int)ChartGetInteger(m_chart_id,CHART_SHOW_VOLUMES),INT_VALUE)!=sizeof(int))
|
| return(false);
|
| //--- write value of the "ShowObjectDescr" property
|
| if(FileWriteInteger(file_handle,(int)ChartGetInteger(m_chart_id,CHART_SHOW_OBJECT_DESCR),CHAR_VALUE)!=sizeof(char))
|
| return(false);
|
| //--- successful
|
| return(true);
|
| }
|
| //+------------------------------------------------------------------+
|
| //| Reading parameters of chart from file |
|
| //+------------------------------------------------------------------+
|
| bool CChart::Load(const int file_handle)
|
| {
|
| bool resutl=true;
|
| string work_str;
|
| int work_int;
|
| //--- check
|
| if(file_handle==INVALID_HANDLE || m_chart_id==-1)
|
| return(false);
|
| //--- read and checking start marker - 0xFFFFFFFFFFFFFFFF
|
| if(FileReadLong(file_handle)!=-1) return(false);
|
| //--- read and checking chart type
|
| if(FileReadInteger(file_handle,INT_VALUE)!=Type()) return(false);
|
| //--- read chart symbol
|
| work_int=FileReadInteger(file_handle);
|
| if(work_int!=0) work_str=FileReadString(file_handle,work_int);
|
| else work_str="";
|
| //--- read chart period
|
| work_int=FileReadInteger(file_handle);
|
| SetSymbolPeriod(work_str,(ENUM_TIMEFRAMES)work_int);
|
| //--- read value of the "Mode" property
|
| if(!ChartSetInteger(m_chart_id,CHART_MODE,FileReadInteger(file_handle,INT_VALUE)))
|
| return(false);
|
| //--- read value of the "Foreground" property
|
| if(!ChartSetInteger(m_chart_id,CHART_FOREGROUND,FileReadInteger(file_handle,CHAR_VALUE)))
|
| return(false);
|
| //--- read value of the "Shift" property
|
| if(!ChartSetInteger(m_chart_id,CHART_SHIFT,FileReadInteger(file_handle,CHAR_VALUE)))
|
| return(false);
|
| //--- read value of the "ShiftSize" property
|
| if(!ChartSetInteger(m_chart_id,CHART_SHIFT,FileReadInteger(file_handle,INT_VALUE)))
|
| return(false);
|
| //--- read value of the "AutoScroll" property
|
| if(!ChartSetInteger(m_chart_id,CHART_AUTOSCROLL,FileReadInteger(file_handle,CHAR_VALUE)))
|
| return(false);
|
| //--- read value of the "Scale" property
|
| if(!ChartSetInteger(m_chart_id,CHART_SCALE,FileReadInteger(file_handle,INT_VALUE)))
|
| return(false);
|
| //--- read value of the "ScaleFix" property
|
| if(!ChartSetInteger(m_chart_id,CHART_SCALEFIX,FileReadInteger(file_handle,CHAR_VALUE)))
|
| return(false);
|
| //--- read value of the "ScaleFix_11" property
|
| if(!ChartSetInteger(m_chart_id,CHART_SCALEFIX_11,FileReadInteger(file_handle,CHAR_VALUE)))
|
| return(false);
|
| //--- read value of the "FixedMax" property
|
| if(!ChartSetDouble(m_chart_id,CHART_FIXED_MAX,FileReadDatetime(file_handle)))
|
| return(false);
|
| //--- read value of the "FixedMin" property
|
| if(!ChartSetDouble(m_chart_id,CHART_FIXED_MIN,FileReadDatetime(file_handle)))
|
| return(false);
|
| //--- read value of the "ScalePPB" property
|
| if(!ChartSetInteger(m_chart_id,CHART_SCALE_PT_PER_BAR,FileReadInteger(file_handle,CHAR_VALUE)))
|
| return(false);
|
| //--- read value of the "PointsPerBar" property
|
| if(!ChartSetDouble(m_chart_id,CHART_POINTS_PER_BAR,FileReadDatetime(file_handle)))
|
| return(false);
|
| //--- read value of the "ShowOHLC" property
|
| if(!ChartSetInteger(m_chart_id,CHART_SHOW_OHLC,FileReadInteger(file_handle,CHAR_VALUE)))
|
| return(false);
|
| //--- read value of the "ShowLineBid" property
|
| if(!ChartSetInteger(m_chart_id,CHART_SHOW_BID_LINE,FileReadInteger(file_handle,CHAR_VALUE)))
|
| return(false);
|
| //--- read value of the "ShowLineAsk" property
|
| if(!ChartSetInteger(m_chart_id,CHART_SHOW_ASK_LINE,FileReadInteger(file_handle,CHAR_VALUE)))
|
| return(false);
|
| //--- read value of the "ShowLastLine" property
|
| if(!ChartSetInteger(m_chart_id,CHART_SHOW_LAST_LINE,FileReadInteger(file_handle,CHAR_VALUE)))
|
| return(false);
|
| //--- read value of the "ShowPeriodSep" property
|
| if(!ChartSetInteger(m_chart_id,CHART_SHOW_PERIOD_SEP,FileReadInteger(file_handle,CHAR_VALUE)))
|
| return(false);
|
| //--- read value of the "ShowGrid" property
|
| if(!ChartSetInteger(m_chart_id,CHART_SHOW_GRID,FileReadInteger(file_handle,CHAR_VALUE)))
|
| return(false);
|
| //--- read value of the "ShowVolumes" property
|
| if(!ChartSetInteger(m_chart_id,CHART_SHOW_VOLUMES,FileReadInteger(file_handle,INT_VALUE)))
|
| return(false);
|
| //--- read value of the "ShowObjectDescr" property
|
| if(!ChartSetInteger(m_chart_id,CHART_SHOW_OBJECT_DESCR,FileReadInteger(file_handle,CHAR_VALUE)))
|
| return(false);
|
| //--- successful
|
| return(resutl);
|
| }
|
| //+------------------------------------------------------------------+
|