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