Привет Всем,
Для Примера: график открыт с периодом 1 минута (может быть 5, 15 и т.д.) и для него же организован for-цикл.
Как для текущей свечки (1 минута) найти время открытия/закрытия самой последней (уже закрытой) свечки более высокого периода, допустим Н4?
(Н4 свечка может быть сегодняшняя или в прошедший день, если это начало нового дня)
Спасибо!
iTime(NULL,PERIOD_H4,1) - время открытия. Зарытия прибавить 4*60*60
Спасибо!
По ходу столкнулся с несколькими проблемами - можно ли PERIOD_H4 заменить переменной?
extern string PeriodToTest = "PERIOD_H4"; start { int DayBarOpenTime = iTime(NULL, PeriodToTest, i); . . .
Применение PeriodToTest в таком варианте выдает ошибки.. Кто-нибудь знает как это исправить?
Еще один вопрос, связанный с этим:
int temp = 0; start() { for(i = 1000; i >= 0; i--) { int PeriodBarStartTime = iTime(NULL, PERIOD_H4, i); if(Time[i]==PeriodBarStartTime) { temp = 1; } . . . } }
В этом Примере, почему [temp = 0] всегда? Нигде нет его обнуления.
Получается что на периодах, меньших Н4, Time[i] никогда не равен времени открытия Н4 свечи - но вседь такого быть не может?!
Вижу, я не понимаю как это работает..
.
Спасибо!
Спасибо!
По ходу столкнулся с несколькими проблемами - можно ли PERIOD_H4 заменить переменной?
Применение PeriodToTest в таком варианте выдает ошибки.. Кто-нибудь знает как это исправить?
extern int PeriodToTest = PERIOD_H4; start { int DayBarOpenTime = iTime(NULL, PeriodToTest, i); . . .
Еще один вопрос, связанный с этим:
В этом Примере, почему [temp = 0] всегда? Нигде нет его обнуления.
Получается что на периодах, меньших Н4, Time[i] никогда не равен времени открытия Н4 свечи - но вседь такого быть не может?!
Вижу, я не понимаю как это работает..
.
Спасибо!
Не совсем понятно что ищется.
Есть функция iBarShift()
for(i = 100; i >= 0; i--) { // ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````` HighPreviousPeriod = iHigh(NULL, PeriodToTest, i+1); LowPreviousPeriod = iLow( NULL, PeriodToTest, i+1); int PeriodBarStartTime = iTime(NULL, PeriodToTest, i); int PeriodBarEndTime = PeriodBarStartTime+PeriodUse*60; // ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````` if(Time[i]>=PeriodBarStartTime && Time[i+1]!=PeriodBarStartTime && Time[i]<=PeriodBarEndTime) { status_high = true; status_low = true; temp = 1; } string linename_vline_start = StringConcatenate("MyLine_Hi_Lo_LINES_VLINE_START_", PeriodBarStartTime); ObjectCreate(linename_vline_start, OBJ_VLINE, 0, PeriodBarStartTime, 0); ObjectSet(linename_vline_start, OBJPROP_STYLE, STYLE_SOLID); ObjectSet(linename_vline_start, OBJPROP_WIDTH, 1); ObjectSet(linename_vline_start, OBJPROP_BACK , True); ObjectSet(linename_vline_start, OBJPROP_COLOR, SkyBlue); // ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````` if(High[i]>=HighPreviousPeriod && Low[i]<=HighPreviousPeriod && status_high==true) { string linename_Previous_Day_High = StringConcatenate("MyLine_Hi_Lo_LINES_HiLINE_", Time[i]); ObjectCreate(linename_Previous_Day_High, OBJ_TREND, 0, (iTime(NULL, PeriodToTest, i)),HighPreviousPeriod, Time[i],HighPreviousPeriod); ObjectSet(linename_Previous_Day_High, OBJPROP_STYLE, STYLE_SOLID); ObjectSet(linename_Previous_Day_High, OBJPROP_RAY, False); ObjectSet(linename_Previous_Day_High, OBJPROP_BACK , True); ObjectSet(linename_Previous_Day_High, OBJPROP_WIDTH,1); ObjectSet(linename_Previous_Day_High, OBJPROP_COLOR, Lime); status_high = false; } if(Low[i]<=LowPreviousPeriod && High[i]>=LowPreviousPeriod && status_low==true) { string linename_Previous_Day_Low = StringConcatenate("MyLine_Hi_Lo_LINES_LoLINE_", Time[i]); ObjectCreate(linename_Previous_Day_Low, OBJ_TREND, 0, (iTime(NULL, PeriodToTest, i)),LowPreviousPeriod, Time[i],LowPreviousPeriod); ObjectSet(linename_Previous_Day_Low, OBJPROP_STYLE, STYLE_SOLID); ObjectSet(linename_Previous_Day_Low, OBJPROP_RAY, False); ObjectSet(linename_Previous_Day_Low, OBJPROP_BACK , True); ObjectSet(linename_Previous_Day_Low, OBJPROP_WIDTH,1); ObjectSet(linename_Previous_Day_Low, OBJPROP_COLOR, Magenta); status_low = false; } // ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````` } // for(i = TotalDays; i >= 0; i--)
Я хочу разделить, скажем 1 минутный график на отрезки (по 4 часа в этом Примере) и в каждом
отрезке определить наибольшее и наименьшее значения. Если в следующем отрезке свеча выше предыдущего наибольшего
или меньше наименьшего, то скрипт должен начертить линию, соединяющую наибольшее из предыдущего отрезка со
свечкой, которая его превзошла (и тоже самое для минимумов).
В том виде какой представлен выше, скрипт рисует несколько линий, причем не на всех периодах (я об 1мин - 1час), и
даже те линии что созданы, не ограничиваются свечой, превосходящей предыдущий максимум, а пробегают несколько
Н4 отрезков. Не могу разобраться в чем дело..
Количество баров на каждом таймфрейме разное. и номер бара совсем не должен совпадать на разных таймфреймах. Потому и надо использовать функцию iBarShift(), которая ищет нужный бар по заданному времени.
Я понимаю что количество баров в разные дни может различаться, но у меня нет четкого представления о том
как применение iBarShift() может помочь? Вы предлагаете отказаться от использования iTime()? Или использовать iBarShift()
в качестве дополнительной проверки? Хотелось бы получить больше подробностей.
Спасибо!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Привет Всем,
Для Примера: график открыт с периодом 1 минута (может быть 5, 15 и т.д.) и для него же организован for-цикл.
Как для текущей свечки (1 минута) найти время открытия/закрытия самой последней (уже закрытой) свечки более высокого периода, допустим Н4?
(Н4 свечка может быть сегодняшняя или в прошедший день, если это начало нового дня)
Спасибо!