• Обзор
  • Отзывы (2)
  • Обсуждение (2)
  • Что нового

Library for Custom Chart

Библиотека 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

Rodrigo da Silva Boa
7126
2015.12.13 10:01 
 

Пользователь не оставил комментарий к оценке

Vadim Strelkov
7889
2014.04.08 12:46 
 

Пользователь не оставил комментарий к оценке

Версия 1.10 - 2015.06.19
1. Добавлена поддержка iTicksChart (https://www.mql5.com/ru/market/product/803)
2. Добавлены функции доступа к ценaм Ask, Bid, Last пользовательского графика по позиции элемента:
double CopyAsk(int position);
double CopyBid(int position);
double CopyLast(int position);
3. Добавлены функции доступа к ценaм Ask, Bid, Last пользовательского графика по начальной позиции и количеству элементов
int CopyAsk(int start_pos,int count,double &array[]);
int CopyBid(int start_pos,int count,double &array[]);
int CopyLast(int start_pos,int count,double &array[]);

Примечание: если iTicksChart не обнаружен, то будут использованы данные торгового инструмента из текущего окна графика. Функции вызываются после CustomChartRefresh() в OnCalculate() или OnTick(). Подробнее смотрите в основном описании библиотеки.
Версия 1.9 - 2013.09.09
Исправлена ошибка в функции CopyTime(int position).
Версия 1.8 - 2013.09.06
Исправлена ошибка CustomChartBars() при работе в тестере.