Доступ к младшему таймфрейму для бара

 

Допустим текущий график H4, я хочу отмечать цветными точками те бары где хай был достигнут ранее лоу, а для этого надо рассматривать более младший тайм фрейм

например 4 часовых бара, как мне это закодировать ? пришла идея сравнить индексы int val1;
int val2;
val1=iHighest(NULL,PERIOD_H1,MODE_HIGH,4,i);
val2=iLowest(NULL,PERIOD_H1,MODE_LOW,4,i);

 
RaZoR2008 >>:

Допустим текущий график H4, я хочу отмечать цветными точками те бары где хай был достигнут ранее лоу, а для этого надо рассматривать более младший тайм фрейм

например 4 часовых бара, как мне это закодировать ? пришла идея сравнить индексы int val1;
int val2;
val1=iHighest(NULL,PERIOD_H1,MODE_HIGH,4,i);
val2=iLowest(NULL,PERIOD_H1,MODE_LOW,4,i);



По-моему так на прямую делать нельзя, так как если присоединить такой индикатор к графику, когда на текущем баре будет идти еще не четвертый час, то все сломается, так как все расчеты будут смещены. Както криво я выразился, но надеюсь что все поймут :-) 

Да и нужно тогда наверное использовать не i а на пример 4*i

 
expromt >>:

По-моему так на прямую делать нельзя, так как если присоединить такой индикатор к графику, когда на текущем баре будет идти еще не четвертый час, то все сломается, так как все расчеты будут смещены. Както криво я выразился, но надеюсь что все поймут :-)

Да и нужно тогда наверное использовать не i а на пример 4*i

Вроде так но на деле не корректно похоже работает, надо синхронизироваться именно как Вы писали с последнем баром

 
Можно например при помощи времени открытия бара.
 
expromt >>:
Можно например при помощи времени открытия бара.

Можно так попробовать

int start()
{
for(int i=0; i<Bars; i++)
{
Buffer1[i]=0;
Buffer2[i]=0;

int val1;
int val2;
int ind1;

ind1=0;
for(int j=0; j<Bars; j++)
{
if(Time[i]==iTime(NULL,PERIOD_H1,j))ind1=j;
}

if(ind1>0)
{
val1=iHighest(NULL,PERIOD_H1,MODE_HIGH,4,ind1);
val2=iLowest(NULL,PERIOD_H1,MODE_LOW,4,ind1);

// White
if(Close[i]>Open[i])
{
if(val1>val2)Buffer1[i]=Low[i]-Point*200;
}
// Black
else
{
if(val1<val2)Buffer2[i]=Low[i]-Point*200;
}
}
}
return(0);
}

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