r772ra: Немного по другому, как понял я. Как то так.
Ну так именно это и советовали до меня. Но iHighest(NULL, MODE_HIGH, bar+1, 1) возвращает индекс бара High которого выше всех остальных на этом промежутке, а ты спрашивал про High текущего дня.
Ну так именно это и советовали до меня. Но iHighest(NULL, MODE_HIGH, bar+1, 1) возвращает индекс бара High которого выше всех остальных на этом промежутке, а ты спрашивал про High текущего дня.
Согласен, "iHighest(NULL, MODE_HIGH, bar+1, 1) возвращает индекс бара High которого выше всех остальных на этом промежутке" . А я имею ввиду High оставшегося текущего дня.
Попробую пояснить точнее...
#property indicator_separate_window#property indicator_buffers1#property indicator_label1 "longBars"#property indicator_color1 clrBlue#property indicator_width1 2//---углубление в историю на...externint barsToProcess = 100;
//---indicators Buffersdouble longBarsBuffer[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
SetIndexBuffer(0,longBarsBuffer);
SetIndexStyle(0,DRAW_HISTOGRAM);
IndicatorDigits(Digits);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
int counted_bars=IndicatorCounted(),
limit;
if (counted_bars<0) return(-1);
if (counted_bars>0)
counted_bars--;
limit=Bars-counted_bars;
if(limit>barsToProcess)
limit=barsToProcess;
double longValue;
for(int i=0;i<limit;i++)
{
longValue = Close[i+1]-Open[i+3];
//--- само условиеif(longValue>0)
//---собственно что необходимо получить: если на i-том баре выполнилось условие(i>0), то находим High от этого бара и //---до конца этого дня,я имею ввиду максимум всего этого промежутка. Примерно: Если условие выполнилось
//---на i=12h,то High от 12 до 00:00,//--- если i=01:00, то High от 01:00 до 00:00, если i=22:00, то High от 22:00 до 00:00. Как то так. Возможно ли это реализовать? //---Может я не правильно сделал цикл? Как его правильно организовать?
longBarsBuffer[i]=High[от i - и до конца дня] - то что необходимо получить.
else
longBarsBuffer[i]=0.0;
Если можно сильно не ругайте:) ...объясните пожалуйста, как это сделать?
Согласен, "iHighest(NULL, MODE_HIGH, bar+1, 1) возвращает индекс бара High которого выше всех остальных на этом промежутке" . А я имею ввиду High оставшегося текущего дня.
Попробую пояснить точнее...
Если можно сильно не ругайте:) ...объясните пожалуйста, как это сделать?
Сначала я подумал что это простая очепятка, но теперь уже нет сомнений, ты хочешь заглянуть в будущее??? Тогда тебе поможет только Док из фильма "Назад в будущее".
AlexeyVik: Сначала я подумал что это простая очепятка, но теперь уже нет сомнений, ты хочешь заглянуть в будущее??? Тогда тебе поможет только Док из фильма "Назад в будущее".
Боюсь, Док мне не поможет...не тем занимается:)
Да этот вопрос, " High оставшегося текущего дня.", ставит немного в тупик. До самого только дошло, действительно можно подумать, что это попытка заглянуть в будущее в этот день . Это немного не так. Я хотел считать _High оставшегося текущего дня с начала ценового массива и до предпоследнего дня(вчерашнего), т.к. все данные есть. А последний(сегодняшний) день пересчитывать как только он завершиться. Иначе все будет выглядеть как Вы и сказали _ попытка заглянуть в будущее! Если начинать с начала ценового массива, и продвигаясь до конца(вчерашнего дня), то, High на каждом последующем проверяемом баре будет меняться. Поэтому и спрашивал как вычесть High оставшейся части дня. Недоговорил только что текущий день не берется, т.к. еще не завершен. Простите, сразу и не сообразил:) . Подскажите, как организовать такой расчет? Вообще он возможен?
Да этот вопрос, " High оставшегося текущего дня.", ставит немного в тупик. До самого только дошло, действительно можно подумать, что это попытка заглянуть в будущее в этот день . Это немного не так. Я хотел считать _High оставшегося текущего дня с начала ценового массива и до предпоследнего дня(вчерашнего), т.к. все данные есть. А последний(сегодняшний) день пересчитывать как только он завершиться. Иначе все будет выглядеть как Вы и сказали _ попытка заглянуть в будущее! Если начинать с начала ценового массива, и продвигаясь до конца(вчерашнего дня), то, High на каждом последующем проверяемом баре будет меняться. Поэтому и спрашивал как вычесть High оставшейся части дня. Недоговорил только что текущий день не берется, т.к. еще не завершен. Простите, сразу и не сообразил:) . Подскажите, как организовать такой расчет? Вообще он возможен?
Попробую понять ваш вопрос. Вам надо найти High среди баров 1) предыдущий день и то что есть на сегодня, или 2) только то что есть на сегодня? Может iHighest() поможет?
paladin80: Попробую понять ваш вопрос. Вам надо найти High среди баров 1) предыдущий день и то что есть на сегодня, или 2) только то что есть на сегодня? Может iHighest() поможет?
Уважаемые, попробую объяснить по-максимуму чего хочу добиться... ..или получится у меня ..или совсем всех запутаю!
Вот смотрите, есть массив цен, допустим с _1.02.2015. по 15.12.2015(сегодняшний день) ,берем PERIOD_H1.
1_беру простую формулу _val=Close[i]-Open[i]
2_задаю простое условие if (val>0) - проверку нужно начинать с _1.02.2015.
-если условие выполнилось, допустим на каком то баре, то от этого бара и до конца этого дня находим _High. Например: Close[4]-Open[4]>0, т.е. допустим бар с индексом[i=4] принадлежит _1.02.2015 10:00, значит от 10:00 -этого дня и до 00:00 - конца этого дня, - находим _High. Соответственно, если условие сработало в другой день , то действуем по аналогичному принципу. И так через весь массив цен. Расчет должен начинаться с _1.02.2015. до 14.12.2015 (предпоследнего дня), почему до предпоследнего дня, - т.к. последний день еще не завершен и High всего дня не известен . Как только завершится последний день, - проверяем и его на условие. Так как данные с _1.02.2015. до 14.12.2015 (предпоследнего дня) известны, то это не будет выглядеть как -попытка заглянуть в будущее:)
- если условие не выполнилось, - ничего не делаем, в массив записывается пустое значение.
Вот собственно вся "задумка". Как ее сделать, как определить через цикл, - ума не приложу!
Да этот вопрос, " High оставшегося текущего дня.", ставит немного в тупик. До самого только дошло, действительно можно подумать, что это попытка заглянуть в будущее в этот день . Это немного не так. Я хотел считать _High оставшегося текущего дня с начала ценового массива и до предпоследнего дня(вчерашнего), т.к. все данные есть. А последний(сегодняшний) день пересчитывать как только он завершиться. Иначе все будет выглядеть как Вы и сказали _ попытка заглянуть в будущее! Если начинать с начала ценового массива, и продвигаясь до конца(вчерашнего дня), то, High на каждом последующем проверяемом баре будет меняться. Поэтому и спрашивал как вычесть High оставшейся части дня. Недоговорил только что текущий день не берется, т.к. еще не завершен. Простите, сразу и не сообразил:) . Подскажите, как организовать такой расчет? Вообще он возможен?
Ну если так, то опять возвращаемся к iHighest() но сколько баров считать и от которого начинать надо рассчитать с помощью iBarShift()
Уважаемые, попробую объяснить по-максимуму чего хочу добиться... ..или получится у меня ..или совсем всех запутаю!
...
Продолжаем разговор... Как я понял задание можно свести к следующему. Для упрощения будем исследовать только вчерашний день, период Н1.
Сначала ищется самая ранняя свеча (просматривая с левой стороны на графике вчерашнего дня), у которой Close выше Open, т.е. ищем самую первую бычью свечу. Если такая найдена, то начиная от неё (включая и её) аж до самой поздней данного дня, надо найти такую свечу, у которой самый высокий High. Напр., если время открытия первой бычьей свечи 10:00, то от неё и до свечи 23:00 ищем свечу с наивысшим High. Так?
Продолжаем разговор... Как я понял задание можно свести к следующему. Для упрощения будем исследовать только вчерашний день, период Н1.
Сначала ищется самая ранняя свеча (просматривая с левой стороны на графике вчерашнего дня), у которой Close выше Open, т.е. ищем самую первую бычью свечу. Если такая найдена, то начиная от неё (включая и её) аж до самой поздней данного дня, надо найти такую свечу, у которой самый высокий High. Напр., если время открытия первой бычьей свечи 10:00, то от неё и до свечи 23:00 ищем свечу с наивысшим High. Так?
ООО, хвала всевышнему... меня поняли! ДА! ДА! ДА! Именно этого я и пытаюсь добиться. Если знаете, подскажите как это сделать?
Немного по другому, как понял я. Как то так.
Ну так именно это и советовали до меня.
Но iHighest(NULL, MODE_HIGH, bar+1, 1) возвращает индекс бара High которого выше всех остальных на этом промежутке, а ты спрашивал про High текущего дня.
Ну так именно это и советовали до меня.
Но iHighest(NULL, MODE_HIGH, bar+1, 1) возвращает индекс бара High которого выше всех остальных на этом промежутке, а ты спрашивал про High текущего дня.
Согласен, "iHighest(NULL, MODE_HIGH, bar+1, 1) возвращает индекс бара High которого выше всех остальных на этом промежутке" . А я имею ввиду High оставшегося текущего дня.
Попробую пояснить точнее...
Если можно сильно не ругайте:) ...объясните пожалуйста, как это сделать?
Согласен, "iHighest(NULL, MODE_HIGH, bar+1, 1) возвращает индекс бара High которого выше всех остальных на этом промежутке" . А я имею ввиду High оставшегося текущего дня.
Попробую пояснить точнее...
Если можно сильно не ругайте:) ...объясните пожалуйста, как это сделать?
Сначала я подумал что это простая очепятка, но теперь уже нет сомнений, ты хочешь заглянуть в будущее??? Тогда тебе поможет только Док из фильма "Назад в будущее".
Боюсь, Док мне не поможет...не тем занимается:)
Да этот вопрос, " High оставшегося текущего дня.", ставит немного в тупик. До самого только дошло, действительно можно подумать, что это попытка заглянуть в будущее в этот день . Это немного не так. Я хотел считать _High оставшегося текущего дня с начала ценового массива и до предпоследнего дня(вчерашнего), т.к. все данные есть. А последний(сегодняшний) день пересчитывать как только он завершиться. Иначе все будет выглядеть как Вы и сказали _ попытка заглянуть в будущее! Если начинать с начала ценового массива, и продвигаясь до конца(вчерашнего дня), то, High на каждом последующем проверяемом баре будет меняться. Поэтому и спрашивал как вычесть High оставшейся части дня. Недоговорил только что текущий день не берется, т.к. еще не завершен. Простите, сразу и не сообразил:) . Подскажите, как организовать такой расчет? Вообще он возможен?
Боюсь, Док мне не поможет...не тем занимается:)
Да этот вопрос, " High оставшегося текущего дня.", ставит немного в тупик. До самого только дошло, действительно можно подумать, что это попытка заглянуть в будущее в этот день . Это немного не так. Я хотел считать _High оставшегося текущего дня с начала ценового массива и до предпоследнего дня(вчерашнего), т.к. все данные есть. А последний(сегодняшний) день пересчитывать как только он завершиться. Иначе все будет выглядеть как Вы и сказали _ попытка заглянуть в будущее! Если начинать с начала ценового массива, и продвигаясь до конца(вчерашнего дня), то, High на каждом последующем проверяемом баре будет меняться. Поэтому и спрашивал как вычесть High оставшейся части дня. Недоговорил только что текущий день не берется, т.к. еще не завершен. Простите, сразу и не сообразил:) . Подскажите, как организовать такой расчет? Вообще он возможен?
Попробую понять ваш вопрос. Вам надо найти High среди баров 1) предыдущий день и то что есть на сегодня, или 2) только то что есть на сегодня? Может iHighest() поможет?
Уважаемые, попробую объяснить по-максимуму чего хочу добиться... ..или получится у меня ..или совсем всех запутаю!
Вот смотрите, есть массив цен, допустим с _1.02.2015. по 15.12.2015(сегодняшний день) ,берем PERIOD_H1.
1_беру простую формулу _val=Close[i]-Open[i]
2_задаю простое условие if (val>0) - проверку нужно начинать с _1.02.2015.
-если условие выполнилось, допустим на каком то баре, то от этого бара и до конца этого дня находим _High. Например: Close[4]-Open[4]>0, т.е. допустим бар с индексом[i=4] принадлежит _1.02.2015 10:00, значит от 10:00 -этого дня и до 00:00 - конца этого дня, - находим _High. Соответственно, если условие сработало в другой день , то действуем по аналогичному принципу. И так через весь массив цен. Расчет должен начинаться с _1.02.2015. до 14.12.2015 (предпоследнего дня), почему до предпоследнего дня, - т.к. последний день еще не завершен и High всего дня не известен . Как только завершится последний день, - проверяем и его на условие. Так как данные с _1.02.2015. до 14.12.2015 (предпоследнего дня) известны, то это не будет выглядеть как -попытка заглянуть в будущее:)
- если условие не выполнилось, - ничего не делаем, в массив записывается пустое значение.
Вот собственно вся "задумка". Как ее сделать, как определить через цикл, - ума не приложу!
Боюсь, Док мне не поможет...не тем занимается:)
Да этот вопрос, " High оставшегося текущего дня.", ставит немного в тупик. До самого только дошло, действительно можно подумать, что это попытка заглянуть в будущее в этот день . Это немного не так. Я хотел считать _High оставшегося текущего дня с начала ценового массива и до предпоследнего дня(вчерашнего), т.к. все данные есть. А последний(сегодняшний) день пересчитывать как только он завершиться. Иначе все будет выглядеть как Вы и сказали _ попытка заглянуть в будущее! Если начинать с начала ценового массива, и продвигаясь до конца(вчерашнего дня), то, High на каждом последующем проверяемом баре будет меняться. Поэтому и спрашивал как вычесть High оставшейся части дня. Недоговорил только что текущий день не берется, т.к. еще не завершен. Простите, сразу и не сообразил:) . Подскажите, как организовать такой расчет? Вообще он возможен?
Ну если так, то опять возвращаемся к iHighest() но сколько баров считать и от которого начинать надо рассчитать с помощью iBarShift()
Вы не могли бы показать, как это сделать в цикле? Не могу сообразить как правильно его оформить.
Уважаемые, попробую объяснить по-максимуму чего хочу добиться... ..или получится у меня ..или совсем всех запутаю!
...Продолжаем разговор... Как я понял задание можно свести к следующему. Для упрощения будем исследовать только вчерашний день, период Н1.
Сначала ищется самая ранняя свеча (просматривая с левой стороны на графике вчерашнего дня), у которой Close выше Open, т.е. ищем самую первую бычью свечу. Если такая найдена, то начиная от неё (включая и её) аж до самой поздней данного дня, надо найти такую свечу, у которой самый высокий High. Напр., если время открытия первой бычьей свечи 10:00, то от неё и до свечи 23:00 ищем свечу с наивысшим High. Так?
Продолжаем разговор... Как я понял задание можно свести к следующему. Для упрощения будем исследовать только вчерашний день, период Н1.
Сначала ищется самая ранняя свеча (просматривая с левой стороны на графике вчерашнего дня), у которой Close выше Open, т.е. ищем самую первую бычью свечу. Если такая найдена, то начиная от неё (включая и её) аж до самой поздней данного дня, надо найти такую свечу, у которой самый высокий High. Напр., если время открытия первой бычьей свечи 10:00, то от неё и до свечи 23:00 ищем свечу с наивысшим High. Так?