iLow первого сегодняшнего бара - страница 2

 
Alexey Viktorov #:

Сначала скажите как вы определяете открытие сессии…

так как мне iLow нужен 5мин-го бара , то соответственно  открытие сессии для меня это первый 5 минутный бар сегодняшнего дня

 
Alexander Sevastyanov #:

Похоже что под сессий топикстартер подразумевает начало торгового дня (судя по названию темы), но возможны варианты. 
Хотя, строго говоря, для форекса сессий несколько в сутках.
Умение задать вопрос правильно - это наука. )))

я объясню, дело в том что мой советник, может быть запущен как на акциях так и на Форексе, на Форексе отсчет 00:00 нынешнего дня, а на акциях 14:30, но я не хочу привязываться и к высчитыванию сегодняшней даты

поэтому, я хотел узнать дату на таймфрейма D1 , и потом исходя из этого, подставить в 5 мин и получить индекс свечи, но не хватка опыта не позволила с кондочка, нахрапом, поэтому обратился к более опытным

спасибо

 
Nikolai Semko #:

Во-первых, эти два выражения генерируют один и тот же код. Компилятор заменяет умножение нескольких констант на одну константу. Записал длинно для наглядности.

Во-вторых, арифметические операции почти бесплатные в сравнению с функциями TimeCurrent() или iTime()
В-третьих функция TimeCurrent() намного быстрее функциям подобным  iTime(). Думаю в раз 10-20.
Можете проверить. Мне лень, так как делал это уже много раз и просто это знаю.

ЗЫ
В-четвертых,
Если Вы находитесь не на D1 ТФ, то нет гарантии при первом вызове, что массив D1 уже сформирован, и поэтому Вы поймаете лаг на ровном месте, пока система не сформирует D1 массив

Спасибо за развернутый исчерпывающий ответ.

 
Alexander Sevastyanov #:

Спасибо за развернутый исчерпывающий ответ.

попробовал два варианта

СПАСИБО ВАМ ОГРОМНОЕ

но я получил не точный результат, мне очень важен точный ilow 5 минутного первого бара

 
lbgraf #:

попробовал два варианта

СПАСИБО ВАМ ОГРОМНОЕ

но я получил не точный результат, мне очень важен точный ilow 5 минутного первого бара

И так неточный?
double low = iLow(_Symbol, PERIOD_M5 ,iBarShift(_Symbol,_Period,60*60*24*(TimeCurrent()/(60*60*24))));


 
да именно так я и написал

результат 2,62 а на самом деле должен быть 2,25

акция CNSP за 31,04,2023


 
lbgraf #:
да именно так я и написал

результат 2,62 а на самом деле должен быть 2,25

акция CNSP за 31,04,2023


Значит там другой день, не текущий
 
Nikolai Semko #:
Значит там другой день, не текущий

ну да там последний день 21,04,2023 TimeCurrent тоже показывает 21,04,2023

последние торги были 21,04,2023


проверил евро Доллор, точно, а на акции нет

 
lbgraf #:

ну да там последний день 21,04,2023 TimeCurrent тоже показывает 21,04,2023

последние торги были 21,04,2023


проверил евро Доллор, точно, а на акции нет

Распринтуйте время того же бара через iTime
Наверное ближайший бар от начала новых суток находится в предыдущих сутках. Тогда можно ставить проверку на предыдущий день и в этом случае брать следующий бар.
 
Nikolai Semko #:
Распринтуйте время того же бара через iTime
Наверное ближайший бар от начала новых суток находится в предыдущих сутках. Тогда можно ставить проверку на предыдущий день и в этом случае брать следующий бар.

Скорее всего вы правы, я уже запутался в формулах, как это будет в вашей формуле пожалуйста