mql-for-begginers/Include/Charts/Chart.mqh
2025-07-22 18:30:17 +03:00

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