Добрый день!
мне нужно вытащить данные из пользовательского индикатора и при этом не нагружать систему перерасчетом индикатора N-количество раз.
возможно ли в MQL4 вызвать однократно функцию iCustom и скопировать содержимое буфера индикатора ?
если да то как это сделать?
Если вам надо получить значение индикатора только после закрытия свечи и открытия новой то примерно так:
datetime TM = 0; .... void OnTick() { ..... if (TM!=Time[0]) { ... iCustom(); TM = Time[0]; } ..... }
Если вам надо получить значение индикатора только после закрытия свечи и открытия новой то примерно так:
не, iCustom я так понял выполняет добавление индикатора на график и каждый раз его рассчитывает для всех значений и получает нужное нам значение и выполняет этот расчет каждый тик. мне нужно выгрузить значение индикатора в csv файл и потом уже анализировать
не, iCustom я так понял выполняет добавление индикатора на график и каждый раз его рассчитывает для всех значений и получает нужное нам значение и выполняет этот расчет каждый тик. мне нужно выгрузить значение индикатора в csv файл и потом уже анализировать
Тогда исправляйте сам индикатор, что бы он не считал каждый тик.
индикатор рисует стрелочки на графике, есть ли какой либо способ снять информацию с экрана?
Индикаторные буферы у него есть? Если есть то их значения должны показываться в окне данных терминала, и их можно считать с помощью функции iCustom. Если нет то надо искать объекты на графике с помощью функции ObjectFind()
P.S. Хотя нет для функции ObjectFind() надо знать имя объекта. Если имя заранее не известно тогда только путем полного перебора всех объектов на графике и проверки их типа если тип стрелка ( OBJ_ARROW_UP или OBJ_ARROW_DOWN) то это ваш клиент.
Индикаторные буферы у него есть? Если есть то их значения должны показываться в окне данных терминала, и их можно считать с помощью функции iCustom. Если нет то надо искать объекты на графике с помощью функции ObjectFind()
P.S. Хотя нет для функции ObjectFind() надо знать имя объекта. Если имя заранее не известно тогда только путем полного перебора всех объектов на графике и проверки их типа если тип стрелка ( OBJ_ARROW_UP или OBJ_ARROW_DOWN) то это ваш клиент.
> Индикаторные буферы у него есть? Если есть то их значения должны показываться в окне данных терминала, и их можно считать с помощью функции iCustom.
можно пример кода на MQL4
> Индикаторные буферы у него есть? Если есть то их значения должны показываться в окне данных терминала, и их можно считать с помощью функции iCustom.
можно пример кода на MQL4
https://www.mql5.com/ru/docs/indicators/icustom
iCustom
Возвращает значение указанного пользовательского индикатора.
double iCustom( |
Параметры
symbol
[in] Символьное имя инструмента, на данных которого будет вычисляться индикатор. NULL означает текущий символ.
timeframe
[in] Период. Может быть одним из значений перечисления ENUM_TIMEFRAMES. 0 означает период текущего графика.
name
[in] Имя пользовательского индикатора, содержащее путь относительно корневой директории индикаторов (MQL4/Indicators/). Если индикатор находится в поддиректории, например, в MQL4/Indicators/Examples, то имя должно выглядеть соответственно, а именно – "Examples\\имя_индикатора" (обязательно указание двойного обратного слеша вместо одиночного в качестве разделителя).
...
[in] input-параметры пользовательского индикатора, разделенные запятыми. Тип и порядок следования параметров должен соответствовать. Если параметры не указаны, то будут использованы значения по умолчанию.
mode
[in] Индекс линии индикатора. Может принимать значения от 0 до 7 и соответствовать индексу, указанному при вызове функции SetIndexBuffer().
shift
[in] Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).
Возвращаемое значение
Численное значение указанного пользовательского индикатора. Пользовательский индикатор должен быть скомпилирован (файл с расширением EX4) и находиться в директории каталог_терминала\MQL4\\Indicators.
Пример:
double val=iCustom(NULL,0,"SampleInd",13,1,0); |
Параметр mode это есть номер индикаторного буфера.
- www.mql5.com
https://www.mql5.com/ru/docs/indicators/icustom
iCustom
Возвращает значение указанного пользовательского индикатора.
double iCustom( |
Параметры
symbol
[in] Символьное имя инструмента, на данных которого будет вычисляться индикатор. NULL означает текущий символ.
timeframe
[in] Период. Может быть одним из значений перечисления ENUM_TIMEFRAMES. 0 означает период текущего графика.
name
[in] Имя пользовательского индикатора, содержащее путь относительно корневой директории индикаторов (MQL4/Indicators/). Если индикатор находится в поддиректории, например, в MQL4/Indicators/Examples, то имя должно выглядеть соответственно, а именно – "Examples\\имя_индикатора" (обязательно указание двойного обратного слеша вместо одиночного в качестве разделителя).
...
[in] input-параметры пользовательского индикатора, разделенные запятыми. Тип и порядок следования параметров должен соответствовать. Если параметры не указаны, то будут использованы значения по умолчанию.
mode
[in] Индекс линии индикатора. Может принимать значения от 0 до 7 и соответствовать индексу, указанному при вызове функции SetIndexBuffer().
shift
[in] Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).
Возвращаемое значение
Численное значение указанного пользовательского индикатора. Пользовательский индикатор должен быть скомпилирован (файл с расширением EX4) и находиться в директории каталог_терминала\MQL4\\Indicators.
Пример:
double val=iCustom(NULL,0,"SampleInd",13,1,0); |
ну понятно, а все значения индикаторов не получается выгрузить в буфер?
double val=iCustom(NULL,0,"SampleInd",13,1,0); |
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день!
мне нужно вытащить данные из пользовательского индикатора и при этом не нагружать систему перерасчетом индикатора N-количество раз.
возможно ли в MQL4 вызвать однократно функцию iCustom и скопировать содержимое буфера индикатора ?
если да то как это сделать?