ну а просто на минутках чего это мешает сделать?
Time[0] - время текущего нулевого бара есть
--
int TimeHour( | datetime time) |
Возвращает
час для указанного времени.
---
условно - сделай цикл от текущего бара на -61 бар назад
поверь - равен ли час у этого бара - часу у нулевого (тогда в обработку его) {
__и тут обрабатывай их по своему желанию...
}
Как и 3 дня назад, я не понимаю, каков смысл суммирования нескольких выборочных цен.
Neelan, просвятите, пожалуйста.
ну а просто на минутках чего это мешает сделать?
Попытался. Первый цикл сделал сразу, а вот со вторым, отвечающим за суммирование цен пока не пойму что не так. Вот код:
int start() { double lw,cls; int i, j; int th=TimeHour(Time[0]); for (i = 61; i>=0; i--){ if(TimeHour(Time[i])!=th) continue; if (lw<NormalizeDouble(Low[i], Digits) || lw<=0) { lw=NormalizeDouble(Low[i], Digits); for (j = i; j<=61; j++){ if(TimeHour(Time[j])!=th) continue; cls=NormalizeDouble(Close[j], Digits)+cls; } } } return(0); }
У меня навязчивая идея, что этот вопрос 3 дня назад я уже читал.
Как и 3 дня назад, я не понимаю, каков смысл суммирования нескольких выборочных цен.
Neelan, просвятите, пожалуйста.
а второй то цикл зачем? если Уже бар попал в текущий час то делай им свои проверки и суммирования...
if (lw<NormalizeDouble(Low[i], Digits) || lw<=0) { lw=NormalizeDouble(Low[i], Digits); }Т.е только на новом Low. И если первый цикл считает от 61 до 0, то второй наоборот от i до начала часа.
да там вроде верно - с суммированием... ты только тогда уж предварительные подсчёты сохраняй в буферах для отрисовки
или тебе нужен только самый последний Лоу в течении текущего часа?
int start() { double lw,cls; int i, j; int th = TimeHour(Time[0]); // for (i = 61; i>=0; i--){ if (TimeHour(Time[i]) = th) { if (NormalizeDouble(Low[i], Digits) < lw) { lw=NormalizeDouble(Low[i], Digits); cls = 0; for (j = i; j<=61; j++) { if(TimeHour(Time[j]) = th) { cls = NormalizeDouble(Close[j], Digits) + cls; } } } } } return(0); }
да там вроде верно - с суммированием... ты только тогда уж предварительные подсчёты сохраняй в буферах для отрисовки
или тебе нужен только самый последний Лоу в течении текущего часа?
Cамый низкий Low, в течении текущего часа.
В распринтовке Print (" j =", j); пишет ерунду. Должен писать от i == индексу самого низкого Low и до начала часа. Т.е. например j=7; j=8; j=9; j=10; j=11; j=12;
ну выведи j через DoubleToStr(j, 0)
int start() { double lw,cls; int i, j, k; int th = TimeHour(Time[0]); // for (i = 61; i>=0; i--){ if (TimeHour(Time[i]) = th) { if (NormalizeDouble(Low[i], Digits) < lw) { lw=NormalizeDouble(Low[i], Digits); cls = 0; print сюда вставь for (j = i; j<=61; j++) { if(TimeHour(Time[j]) = th) { cls = NormalizeDouble(Close[j], Digits) + cls; } } } } } return(0); }
ну выведи j через DoubleToStr(j, 0)
Так даже цикл не запустился. Пишет cls=0; lw=0;

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Форумчане, скажите как реализовать следующую идею.
Есть нулевой часовой бар. Внутри этого бара расположены несколько минутных баров. Исходя из данных только этих минутных баров нужно построить индюк из 2-ух линий по схеме:
1. Считая от начала часа на новых Low минуток производится суммирование всех цен Close минуток от начала часа и до текущего момента, но не дальше конца часа.2. Также считая от начала часа на новых High минуток производится суммирование всех цен Open минуток от начала часа и до текущего момента, но не дальше конца часа.
Заранее спасибо!