1. Вы читаете только 4й буфер ("3" в запросе)
2. Вы читаете текущий бар, и три перед ним закрывшиеся
А хотите запрашивать значение текущего бара на всех 4х буферах
у вас:
double v0 = NormalizeDouble(iCustom(NULL,TimeFrame,"macd_f",12, 26, 9, 3, 0), 4); double v1 = NormalizeDouble(iCustom(NULL,TimeFrame,"macd_f",12, 26, 9, 3, 1), 4); double v2 = NormalizeDouble(iCustom(NULL,TimeFrame,"macd_f",12, 26, 9, 3, 2), 4); double v3 = NormalizeDouble(iCustom(NULL,TimeFrame,"macd_f",12, 26, 9, 3, 3), 4);
читаем спецификацию iCustom()
double iCustom(
string symbol, // имя символа
int timeframe, // таймфрейм
string name, // папка/имя_пользовательского индикатора
... // список входных параметров индикатора
int mode, // источник данных
int shift // сдвиг
);
т.е. в вашем случае:
iCustom(NULL,TimeFrame,"macd_f",12, 26, 9, 3, 0)
-- 3 -- номер буфера
-- 0 -- номер бара
параметры индикатора:
extern int FastMAPeriod = 12; extern int SlowMAPeriod = 26; extern int SignalMAPeriod = 9; extern double Display_Factor = 2.0;
-- значение Display_Factor в iCustoms() вы не передаёте
т.е. чтобы считать буфер 2 на баре 1 надо записать:
iCustom(NULL,TimeFrame,"macd_f", FastMAPeriod, SlowMAPeriod, SignalMAPeriod, Display_Factor, 2, 1)
в вашем примере считывание всех четырёх буферов на баре 0 будет выглядеть так:
double v0 = NormalizeDouble(iCustom(NULL,TimeFrame,"macd_f",12, 26, 9, 3, 0, 0), 4); double v1 = NormalizeDouble(iCustom(NULL,TimeFrame,"macd_f",12, 26, 9, 3, 1, 0), 4); double v2 = NormalizeDouble(iCustom(NULL,TimeFrame,"macd_f",12, 26, 9, 3, 2, 0), 4); double v3 = NormalizeDouble(iCustom(NULL,TimeFrame,"macd_f",12, 26, 9, 3, 3, 0), 4);
p.s. по сути, если смотреть ваш пример, то вы считываете значение буфера 3 (нумерация с 0) на баре 0,1,2,3
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Помогите советом, не могу разобраться. Есть кастомный MACD индикатор, в нем 4 буфера
И входные параметры, стандартные для MACD 12,26,9 плюс еще один параметр 3.
Пытаюсь из советника получить эти значения:
Вывожу их для теста
Смотрю в логах - ну совсем не те значения (снимок во вложении). Мне необходимо получить значения первых двух буферов (линии MACD). На графике их крайние значения видны, в отладке - полная ерунда:
Что я делаю не так? Сам индикатор во вложении.