Показывать значения из другого периода

 

Есть идея показывать значения закрытия дня на более мелком масштабе. К примеру выводить данные о закрытии дня на график H4.

Нашел функцию iClose() в которую можно передать период, но цикл перебора, вызывающий эту функцию, идет по текущему периоду, т.е. H4.

Получается :

H4[0]=D1[0]

H4[-1]=D1[-1]

H4[-2]=D1[-2]

А должно быть

H4[0]=D1[0]

H4[-1]=D1[-1]

H4[-2]=D1[-1]


Может уже есть реализации подобного, вроде в базе не нашел. Подскажите куда копать?

 
int start()
{
GlobalVariableSet("D1",Close[1]);
return(0);
}

експерт ставиш на D1

int start()
{
Comment(GlobalVariableGet("D1"));
return(0);
}

експерт ставиш на любай другой ТФ

 
MOLET >>:

експерт ставиш на D1

експерт ставиш на любай другой ТФ

Спасибо, идею понял :) Один эксперт передает значение другому эксперту.


Но я хотел немного не этого. Суть в том, что графики меньшего периода содержат данные большего периода. Чтобы не переключаться на график большего периода лучше чтобы его данные, отражались в этом периоде.

Вот к примеру, хотим видеть значения скользящих средних, чтобы определить куда движется тренд на днях. И на H4 видим что тренд идет вниз, или вверх, чтобы вставать в позицию не противореча основной тенденции.

 
Не проще поставить МА с D1 на H4?
 

Не понял, каким образом?

 

Вот на примере скользящих средних. Так как период скользящей средней считается в барах, то просто пересчитывайте этот период на более старший таймфрейм (ТФ). Допустим строим скользящую среднюю на ТФ M15 и берем ее период равным 14, тогда для получения значения этой скользящей средней пересчитываем ее период на старший ТФ, если нужно на ТФ H1, то умножаем период (14) на 4, получаем 56. Соответственно скользящая средняя на ТФ M15 с периодом 56 равна скользящей средней на ТФ H1 с периодом 14, так как по времени этот период будет одинаков.

А можно просто написать в коде эксперта получение значения МА с более старшего ТФ, т.е. переменная=iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)  где timeframe пишем PERIOD_H1. Только одно но, при таком подходе, при тестировании експерт будет заглядывать в будущее, так как в тестере, если на M15 у вас сформирован первый бар, то на H1 сформирован целиком бар H1 из истории, а значит вы знаете его параметры раньше на 45 минут, поэтому тест будет не совсем корректен.

 
StSpirit >>:

Вот на примере скользящих средних. Так как период скользящей средней считается в барах, то просто пересчитывайте этот период на более старший таймфрейм (ТФ). Допустим строим скользящую среднюю на ТФ M15 и берем ее период равным 14, тогда для получения значения этой скользящей средней пересчитываем ее период на старший ТФ, если нужно на ТФ H1, то умножаем период (14) на 4, получаем 56. Соответственно скользящая средняя на ТФ M15 с периодом 56 равна скользящей средней на ТФ H1 с периодом 14, так как по времени этот период будет одинаков.

А можно просто написать в коде эксперта получение значения МА с более старшего ТФ, т.е. переменная=iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift) где timeframe пишем PERIOD_H1. Только одно но, при таком подходе, при тестировании експерт будет заглядывать в будущее, так как в тестере, если на M15 у вас сформирован первый бар, то на H1 сформирован целиком бар H1 из истории, а значит вы знаете его параметры раньше на 45 минут, поэтому тест будет не совсем корректен.

Спасибо, очень полезная информация, особенно по эксперту.

А по поводу встроенных функций с указанием периода, то я так пробовал, но если цикл идет по 15минутка, то в результате и получается значение индикатора меняется каждые 15 минут... нужен алгорит пересчета. Буду думать, благо есть над чем. :)

Причина обращения: