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