Какие приёмы и методы могут использоваться в мультифреймовых индикаторах для предотвращения получения красивой картинки из-за подглядывания в будущее на старших ТФ ? - страница 4

 
Dmitry Fedoseev #:

Вроде да. Только к bar_Shift_W1 еще бы добавить 1, чтобы был сформированный бар.

Зачем обращаться к предыдущему недельному бару, если он берёт цену открытия?

 

в личных библиотеках, при обращении к таймсериям и им подобным данным, номер бара "по умолчанию" = 1. Хотя актуальный 0. 
просто значения индикаторов на незакрытых барах не являются полностью определёнными. 

double daily_macd=D1[MACD];  // это MACD на вчера

можно дёрнуть D1[MACD][0], но это неправильно, в последнем дне меньшее число часов чем в других, это немного не MACD совсем. 

вообще, надо учитывать, что при обращении к другим таймфреймам стоит добавлять 1 к индексам, чтобы не учитывать в них "незакрытый бар".
В OnCalculate индикаторов, чтобы не обманывать самого себя - обращения через время, то есть сначала получаем индекс ТФ через время и добавляем 1.

Если так не делать, то картинка получается очень красивой, но совершенно бесполезной

PS/ но до нашего кодо-спамера такое не доходит и кодобейз забита кривыми мультитф.

 
PapaYozh #:

Зачем обращаться к предыдущему недельному бару, если он берёт цену открытия?

Да, не обратил внимания, тогда не надо 1.

Лучше вообще не заморачиваться на цены открытия.

 
Dmitry Fedoseev #:

Вроде да. Только к bar_Shift_W1 еще бы добавить 1, чтобы был сформированный бар.

Значит вы считаете, что цену открытия  текущего бара старшего ТФ использовать нельзя?

 
Dmitry Fedoseev #:

Да, не обратил внимания, тогда не надо 1.

Лучше вообще не заморачиваться на цены открытия.

Что значит не заморачиваться? А если мне цена открытия текущего бара старшего ТФ нужна для расчёта сигнала?

 
Maxim Kuznetsov #:

в личных библиотеках, при обращении к таймсериям и им подобным данным, номер бара "по умолчанию" = 1. Хотя актуальный 0. 
просто значения индикаторов на незакрытых барах не являются полностью определёнными. 

double daily_macd=D1[MACD];  // это MACD на вчера

можно дёрнуть D1[MACD][0], но это неправильно, в последнем дне меньшее число часов чем в других, это немного не MACD совсем. 

вообще, надо учитывать, что при обращении к другим таймфреймам стоит добавлять 1 к индексам, чтобы не учитывать в них "незакрытый бар".
В OnCalculate индикаторов, чтобы не обманывать самого себя - обращения через время, то есть сначала получаем индекс ТФ через время и добавляем 1.

Если так не делать, то картинка получается очень красивой, но совершенно бесполезной

PS/ но до нашего кодо-спамера такое не доходит и кодобейз забита кривыми мультитф.

Значит вы считаете, что цену открытия  текущего бара старшего ТФ использовать нельзя? Добавляем 1 к чему? Чтобы получить что? Знаком с понятием индекс бара, но не знаком с понятием  индекс ТФ.

 
khorosh #:

Значит вы считаете, что цену открытия  текущего бара старшего ТФ использовать нельзя? Добавляем 1 к чему? Чтобы получить что?

предположим что рабочий таймфрейм M5, сейчас 10:38, нужно нечто на 9:17 от H1

чтобы получить данные H1, берём iBarShift(_Symbol,PERIOD_H1,"9:17") и добавляем 1, получаем индекс бара H1 уже закрытого к моменту 9:17. Вот по нему уже можно брать в рассчёт данные бара и индикаторов. 

 
Maxim Kuznetsov #:

предположим что рабочий таймфрейм M5, сейчас 10:38, нужно нечто на 9:17 от H1

чтобы получить данные H1, берём iBarShift(_Symbol,PERIOD_H1,"9:17") и добавляем 1, получаем индекс бара H1 уже закрытого к моменту 9:17. Вот по нему уже можно брать в расчёт данные бара и индикаторов. 

 Давайте поконкретней, речь идёт о мультифреймовом индикаторе и мы находимся внутри цикла перебора индекса бара текущего младшего ТФ. И там мы не используем константы типа  "9:17".
И вообще о какой единице речь, разве индексы двух соседних баров старшего ТФ отличаются на единицу? Ведь находясь   внутри цикла перебора индекса бара текущего младшего ТФ, мы индекс бара старшего ТФ выражаем через индекс бара  текущего младшего ТФ. А стало быть добавление 1 не даст значение индекса предыдущего бара старшего ТФ. Добавлять надо не 1, а число, равное количеству баров текущего младшего ТФ, содержащихся внутри бара  старшего ТФ.

 
khorosh #:

 Давайте поконкретней, речь идёт о мультифреймовом индикаторе и мы находимся внутри цикла перебора индекса бара текущего младшего ТФ. И там мы не используем константы типа  "9:17".
И вообще о какой единице речь, разве индексы двух соседних баров старшего ТФ отличаются на единицу? Ведь находясь   внутри цикла перебора индекса бара текущего младшего ТФ, мы индекс бара старшего ТФ выражаем через индекс бара  текущего младшего ТФ. А стало быть добавление 1 не даст значение индекса предыдущего бара старшего ТФ. Добавлять надо не 1, а число, равное количеству баров текущего младшего ТФ, содержащихся внутри бара  старшего ТФ.

Просто никто не может понять смысл.
Проиллюстрируй

Если кратко, то на младьших тфмах будут видны откаты старшего. А это разно направления сделки

Только желание поиметь все движение цены может сподвигнуть на создание такого мультитаймфреймого индикатора.

Беда только в том, что и на одном тфме не больно то у некоторых получается
 
khorosh #:

Что значит не заморачиваться? А если мне цена открытия текущего бара старшего ТФ нужна для расчёта сигнала?

Если нужна именно цена открытия, это другое дело.