Библиотека LibCustomChart предназначена для написания своих индикаторов и экспертов, совместимых с пользовательскими графиками, созданных iCustomChart. Пример использования библиотеки в индикаторах и экспертах можно найти в Code Base.
Демонстрационную версию iCustomChart можно скачать бесплатно.
Основные функции библиотеки:
- CustomChartInit – автоматически подключает создаваемый индикатор или эксперт к пользовательскому графику, который загружен в окно графика терминала с помощью iCustomChart. Если пользовательский график не загружен, то все функции библиотеки будут использовать данные инструмента текущего окна графика. Функция вызывается исключительно в OnInit().
bool CustomChartInit(void);
Параметры:
нет.Возвращаемые значения:
false – при ошибке.
true – при успешном выполнении.Примечание: не обнаружение пользовательского графика iCustomChart не считается ошибкой. Если пользовательский график обнаружен, то в журнале будет соответствующее сообщение.
- CustomChartRefresh – обновляет данные пользовательского графика iCustomChart для дальнейшего использования. Это обязательная функция, включаемая один раз в OnCalculate() или OnTick() перед всеми другими используемыми функциями библиотеки.
bool CustomChartRefresh(void);
Параметры:
нет.Возвращаемые значения:
false – при ошибке.
true – при успешном выполнении.Примечание: если iCustomChart не загружен, то будут использованы данные инструмента текущего окна графика.
- CustomChartSync – синхронизирует индикаторный буфер с графиком iCustomChart. Вызывается после CustomChartRefresh() в OnCalculate().
bool CustomChartSync(double &buffer[]);
Параметры:
buffer[] – [out] индикаторный буфер, который необходимо синхронизировать с iCustomChart.Возвращаемые значения:
false – при ошибке.
true – при успешном выполнении.Примечание: если iCustomChart не обнаружен, то индикаторный буфер будет синхронизирован с барами текущего окна графика. Если индикаторный буфер не синхронизирован функцией CustomChartSync(), то он ведет себя синхронно с барами текущего окна графика.
Функции доступа к таймсериям пользовательского графика по позиции элемента
CopyOpen – функция возвращает значение цены открытия указанного бара.
CopyClose – функция возвращает значение цены закрытия указанного бара.
CopyHigh – функция возвращает значение максимальной цены указанного бара.
CopyLow – функция возвращает значение минимальной цены указанного бара.
CopyTime – функция возвращает значение времени открытия указанного бара.
CopyRealVolume – функция возвращает значение торгового объема указанного бара.
CopyTickVolume – функция возвращает значение тикового объема указанного бара.
CopySpread – функция возвращает значение спреда указанного бара.
CopyZeroBuffer – функция возвращает значение нулевого буфера указанного бара.
CopyRates – функция возвращает значение в виде структуры MqlRates указанного бара.
CopyAppliedPrice – функция возвращает значение данных бара в соответствии с выбранной ценовой базой для расчетов.
CopyColor – функция возвращает значение индекса цвета указанного бара.MqlRates CopyRates(int position); datetime CopyTime(int position); double CopyOpen(int position); double CopyClose(int position); double CopyHigh(int position); double CopyLow(int position); double CopyZeroBuffer(int position); double CopyAppliedPrice(ENUM_APPLIED_PRICE _applied_price, int position); long CopyRealVolume(int position); long CopyTickVolume(int position); int CopySpread(int position); int CopyColor(int position);
Параметры:
position – [in] номер бара таймсерии.Возвращаемые значения:Возвращается значение указанного бара таймсерии.
Примечание: если iCustomChart не обнаружен, то будут использованы данные инструмента из текущего окна графика. Стоит отметить, что функции доступа к таймсериям пользовательского графика имеют те же особенности, что и штатные функциидоступа к таймсериям и индикаторам. Вызываются после CustomChartRefresh() в OnCalculate() или OnTick().
Функции доступа к таймсериям пользовательского графика по начальной позиции и количеству элементов
CopyOpen – функция получает в массив данных array цены открытия баров пользовательского графика в указанном количестве.
CopyClose – функция получает в массив данных array цены закрытия баров пользовательского графика в указанном количестве.
CopyHigh – функция получает в массив данных array максимальные цены баров пользовательского графика в указанном количестве.
CopyLow – функция получает в массив данных array минимальные цены баров пользовательского графика в указанном количестве.
CopyTime – функция получает в массив данных array время открытия баров пользовательского графика в указанном количестве.
CopyRealVolume – функция получает в массив данных array торговые объемы баров пользовательского графика в указанном количестве.
CopyTickVolume – функция получает в массив данных array тиковые объемы баров пользовательского графика в указанном количестве.
CopySpread – функция получает в массив данных array спреды баров пользовательского графика в указанном количестве.
CopyZeroBuffer – функция получает в массив данных array значение баров нулевого буфера пользовательского графика в указанном количестве.
CopyRates – функция получает в массив array данные в виде структуры MqlRates в указанном количестве.
CopyAppliedPrice – функция получает в массив данных array значения в соответствии с выбранной ценовой базой для расчетов.
CopyColor – функция получает в массив данных array значение индекса цвета баров пользовательского графика в указанном количестве.int CopyTime(int start_pos,int count,datetime &array[]); int CopyOpen(int start_pos,int count,double &array[]); int CopyClose(int start_pos,int count,double &array[]); int CopyHigh(int start_pos,int count,double &array[]); int CopyLow(int start_pos,int count,double &array[]); int CopyRealVolume(int start_pos,int count,long &array[]); int CopyTickVolume(int start_pos,int count,long &array[]); int CopySpread(int start_pos,int count,int &array[]); int CopyZeroBuffer(int start_pos,int count,double &array[]); int CopyRates(int start_pos, int count, MqlRates &array[]); int CopyAppliedPrice(ENUM_APPLIED_PRICE _applied_price, int start_pos, int count, double &array[]); int CopyColor(int start_pos,int count,int &array[]);
Параметры:
start_pos – [in] номер первого копируемого элемента.
count- [in] количество копируемых элементов.
array[] – [out] массив для получения данных.Возвращаемые значения:Количество скопированных элементов массива либо -1 в случае ошибки.
Примечание: если iCustomChart не обнаружен, то будут использованы данные инструмента из текущего окна графика. Стоит отметить, что функции доступа к таймсериям пользовательского графика имеют те же особенности, что и штатные функции доступа к таймсериям и индикаторам. Вызываются после CustomChartRefresh() в OnCalculate() или OnTick().
Функции получения свойств пользовательского графика
- CustomChartHandle – функция возвращает хэндл индикатора iCustomChart. Вызывается после CustomChartRefresh() в OnCalculate() или OnTick().
int CustomChartHandle(void);
Параметры:
нет.Возвращаемые значения:
Хэндл индикатора iCustomChart либо INVALID_HANDLE, если iCustomChart не обнаружен.Примечание: если iCustomChart не обнаружен, то будут использованы данные инструмента из текущего окна графика.
- CustomChartName – функция возвращает короткое имя индикатора iCustomChart. Вызывается после CustomChartRefresh() в OnCalculate() или OnTick().
string CustomChartName(void);
Параметры:
нет.Возвращаемые значения:
Короткое имя индикатора iCustomChart либо NULL, если ошибка или iCustomChart не обнаружен.Примечание: если iCustomChart не обнаружен, то будут использованы данные инструмента из текущего окна графика.
- CustomChartFile – функция возвращает имя файла индикатора iCustomChart. Вызывается после CustomChartRefresh() в OnCalculate() или OnTick().
string CustomChartFile(void);
Параметры:
нет.Возвращаемые значения:
Имя файла индикатора iCustomChart либо NULL, если ошибка или iCustomChart не обнаружен.Примечание: если iCustomChart не обнаружен, то будут использованы данные инструмента из текущего окна графика. Возвращаемое функцией имя файла формируется относительно папки “каталог_данных_терминала\MQL5\Indicators”.
- CustomChartIsAttach – функция возвращает признак присоединения индикатора, который использует библиотеку, к iCustomChart. Вызывается после CustomChartRefresh() в OnCalculate() или OnTick().
bool CustomChartIsAttach(void);
Параметры:
нет.Возвращаемые значения:
false – если индикатор не присоединен к iCustomChart.
true – если индикатор присоединен к iCustomChart.Примечание: если индикатор не присоединен к iCustomChart, то функции библиотеки будут использовать данные инструмента из текущего окна графика.
- CustomChartHstFile – функция возвращает имя файла истории, который использует iCustomChart. Вызывается после CustomChartRefresh() в OnCalculate() или OnTick().
string CustomChartHstFile(void);
Параметры:
нет.Возвращаемые значения:
Имя файла истории либо NULL, если ошибка или iCustomChart не обнаружен.Примечание: если iCustomChart не обнаружен, то будут использованы данные инструмента из текущего окна графика. Файл истории iCustomChart ищется относительно папки “каталог_данных_терминала\MQL5\Files\iCustomChart\History”. Возвращаемое функцией имя файла истории формируется относительно этой же папки.
- CustomChartBars – функция возвращает количество баров пользовательского графика. Вызывается после CustomChartRefresh() в OnCalculate() или OnTick().
int CustomChartBars(void);
Параметры:
нет.Возвращаемые значения:
количество баров пользовательского графика.Примечание: если iCustomChart не обнаружен, то будут использованы данные инструмента из текущего окна графика.
- CustomChartBegin – функция возвращает номер первого значимого бара пользовательского графика. Вызывается после CustomChartRefresh() в OnCalculate() или OnTick().
int CustomChartBegin(void);
Параметры:
нет.Возвращаемые значения:
номер первого значимого бара пользовательского графика.Примечание: если iCustomChart не обнаружен, то будут использованы данные инструмента из текущего окна графика.
- CustomChartNewBars – функция возвращает количество появившихся новых баров пользовательского графика. Вызывается после CustomChartRefresh() в OnCalculate() или OnTick().
int CustomChartNewBars(void);
Параметры:
нет.Возвращаемое значение:
количество появившихся новых баров пользовательского графика.Примечание: если iCustomChart не обнаружен, то будут использованы данные инструмента из текущего окна графика.
Содержание включаемого файла с описанием функций библиотеки
#import "LibCustomChart.ex5" //--- Основные Функции: bool CustomChartInit(void); bool CustomChartRefresh(void); //--- функция синхронизации индикаторного буфера с iCustomChart: bool CustomChartSync(double &buffer[]); //--- функции доступа к данным таймсерий iCustomChart по позиции элемента: MqlRates CopyRates(int position); datetime CopyTime(int position); double CopyOpen(int position); double CopyClose(int position); double CopyHigh(int position); double CopyLow(int position); double CopyZeroBuffer(int position); double CopyAppliedPrice(ENUM_APPLIED_PRICE _applied_price, int position); long CopyRealVolume(int position); long CopyTickVolume(int position); int CopySpread(int position); int CopyColor(int position); //--- функции доступа к данным таймсерий iCustomChart по начальной позиции и количеству элементов: int CopyTime(int start_pos,int count,datetime &array[]); int CopyOpen(int start_pos,int count,double &array[]); int CopyClose(int start_pos,int count,double &array[]); int CopyHigh(int start_pos,int count,double &array[]); int CopyLow(int start_pos,int count,double &array[]); int CopyRealVolume(int start_pos,int count,long &array[]); int CopyTickVolume(int start_pos,int count,long &array[]); int CopySpread(int start_pos,int count,int &array[]); int CopyZeroBuffer(int start_pos,int count,double &array[]); int CopyRates(int start_pos, int count, MqlRates &array[]); int CopyAppliedPrice(ENUM_APPLIED_PRICE _applied_price, int start_pos, int count, double &array[]); int CopyColor(int start_pos,int count,int &array[]); //--- функции доступа к свойствам iCustomChart: int CustomChartBars(void); int CustomChartBegin(void); int CustomChartNewBar(void); bool CustomChartIsAttach(void); int CustomChartHandle(void); string CustomChartHstFile(void); string CustomChartFile(void); string CustomChartName(void); #import