Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
в советнике используется
берется значение с 0-го бара, значения индикаторных буферов для него изменяются на каждом тике до закрытия свечи.Все верно, это я экпериментировал, но в сущности это не решает главную проблему.-- Как из эксперта заставить индикатор пересчитать индикаторный буфер не только на запрашиваемом баре, но и несколько баров назад
Возможно решение найдено! Одно из...
Для этого, правда, надо делать специальную версию индикатора.
Господа,
пишу некий индикатор: ...
int handle;
double indicatorBuffer[];
...
int OnInit()
{
... handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice);
...
}
int OnCalculate (const int rates_total, // размер массива price[]
const int prev_calculated, // обработано баров на предыдущем вызове
const int begin, // откуда начинаются значимые данные
const double& price[]) // массив для расчета
{
... что-то делаю
Вопрос в том – как дать знать в handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice), что есть AppPrice?
или как извлечь Apply to: из закладки Parameters для использования в коде?
Заранее спасибо…
Господа,
Вопрос в том – как дать знать в handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice), что есть AppPrice?
или как извлечь Apply to: из закладки Parameters для использования в коде?
Заранее спасибо…
Смотрите OnCalculate():
Выбор необходимой таймсерии или индикатора в качестве массива price[] производится пользователем при запуске индикатора на закладке "Parameters". Для этого необходимо указать нужный элемент в выпадающем списке поля "Apply to".
Для получения значений пользовательского индикатора из других mql5-программ используется функция iCustom(), возвращающая хэндл индикатора для последующих операций. При этом также можно указать необходимый массив price[] или хэндл другого индикатора. Этот параметр должен передаваться последним в списке входных переменных пользовательского индикатора.
Смотрите OnCalculate():
Rosh спасибо, но мой вопрос именно в этом и состоит. Что я должен указать в операторе
handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice);
в качестве AppPrice?
Я очень внимательно читаю доступный help. Возможно жара подействовала, но ...
Rosh спасибо, но мой вопрос именно в этом и состоит. Что я должен указать в операторе
handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice);
в качестве AppPrice?
Я очень внимательно читаю доступный help. Возможно жара подействовала, но ...
Rosh спасибо, но мой вопрос именно в этом и состоит. Что я должен указать в операторе
handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice);
в качестве AppPrice?
Я очень внимательно читаю доступный help. Возможно жара подействовала, но ...
Жара. В качестве AppPrice надо указать ENUM_APPLIED_PRICE)
Swan, спасибо за внимание. Но если использовать
input ENUM_APPLIED_PRICE AppPrice=PRICE_CLOSE; и первую форму
int OnCalculate (const int rates_total, // размер массива price[]
const int prev_calculated, // обработано баров на предыдущем вызове
const int begin, // откуда начинаются значимые данные
const double& price[]) // массив для расчета
то при компиляции получаем предупреждение: Two OnCalculate functions are defined. Price data function will be used NameIndicator.mq5 (стр кол)
и массив price[] остаётся никак не привязан к AppPrice, если только не совпадает с Apply to: в третьей закладке "Parameters".
Вопрос, по сути, можно ли использовать встроенные однобуферные индикаторы типа iMA() и первую форму int OnCalculate(), если массив price[] как-то
используется в расчётах.
Укажите хэндл индикатора, если нужно рассчитать на данных другого индикатора. Или тип цен, на которых будет считаться индикатор.
У нас (скорее у меня) какое-то недопонимание.
Вопрос, по сути, можно ли использовать встроенные однобуферные индикаторы типа iMA() и первую форму int OnCalculate(), если массив price[] как-то
используется в расчётах.
У нас (скорее у меня) какое-то недопонимание.
Вопрос, по сути, можно ли использовать встроенные однобуферные индикаторы типа iMA() и первую форму int OnCalculate(), если массив price[] как-то
используется в расчётах.
Ваш параметр AppPrice никак не связан с функцией OnCalculate().
Вы можете либо задать ему значение одной из ценовых констант (1 вариант), либо хендл какого-то другого индикатора (2 вариант). А далее Вы можете:
1 вариант.
2 вариант.