Как определить High дня?

 

Всем доброго дня!

Подскажите как, например для периода Н1, определить High текущего дня 5 баров назад?

PS: нужно писать скрипт, который проанализирует кол-во баров от начала дня до 5-го бара от текущего времени или есть готовая функция?

 
    double ld_High = iHigh (Symbol(), PERIOD_H1, iHighest (Symbol(), PERIOD_H1, MODE_HIGH, 5, 0));
P.S. "для периода Н1 High текущего дня 5 баров назад" - приходится только догадываться... :)))
 
А расскажите мне, чем Хай дня на Д1 отличается от такого же хая на Н1?
 
evillive:
А расскажите мне, чем Хай дня на Д1 отличается от такого же хая на Н1?

Он имеет в виду, найти тот хай дня, который был 5 часов назад. Очевидно, за это время Хай мог быть пробит, поэтому просто iHigh(…), как сделано двумя постами выше, не прокатит.


Вариантов два - либо делать небольшую подпрограмму для расчета, либо запоминать в отдельном буфере значение High дня в начале каждого часа.

 
alsu:

Он имеет в виду, найти тот хай дня, который был 5 часов назад. Очевидно, за это время Хай мог быть пробит, поэтому просто iHigh(…), как сделано двумя постами выше, не прокатит.



iHigh(NULL, PERIOD_H1, 5);
чем не вариант ?
 
VladislavVG:

чем не вариант ?

Покажет High пятого бара на часовом графике, то же, что и High[5]


А надо Хай дневного графика, который был 5 часов назад.

 
alsu:

Покажет High пятого бара на часовом графике, то же, что и High[5]


А надо Хай дневного графика, который был 5 часов назад.


Был не внимательным, здесь Вы правы.

На вскидку, как-то так:

 iHigh(NULL,PERIOD_D1,iHighest(NULL, PERIOD_H1, MODE_HIGH, iBarShift(NULL,PERIOD_D1,iTime(NULL,PERIOD_D1,0),false)-5, 5));
Не очень оптимально, но через вызов стандартных функций.
 
MIB:

Всем доброго дня!

Подскажите как, например для периода Н1, определить High текущего дня 5 баров назад?

PS: нужно писать скрипт, который проанализирует кол-во баров от начала дня до 5-го бара от текущего времени или есть готовая функция?

Определить то просто, только ответьте на вопрос.

Если сeйчас меньше 5 часов, хай какого дня вам нужен- текущего или вчерашнего?

 
alsu:

Он имеет в виду, найти тот хай дня, который был 5 часов назад.

Уже кое-что прояснилось. :)

Если рассчитывать только текущие сутки, и учитывать текущий часовой бар:

    int li_Shift = iBarShift (Symbol(), PERIOD_H1, iTime (Symbol(), PERIOD_D1, 0));   // номер текущего H1 бара
    double ld_High; 
    if (li_Shift < 5) ld_High = iHigh (Symbol(), PERIOD_D1, 0);                       // в текущих сутках не "накопилось" 5 часов
    else ld_High = iHigh (Symbol(), PERIOD_H1, iHighest (Symbol(), PERIOD_H1, MODE_HIGH, li_Shift - 5, 4);
Если нужны другие условия, топикстартер сможет потренироваться.
 
TarasBY:
Уже кое-что прояснилось. :)

Если рассчитывать только текущие сутки, и учитывать текущий часовой бар:

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

Спасибо,мне очень это помогло,я постараюсь результаты в ближайшее время выложить сюда в ветку.
Причина обращения: