Здравствуйте!
Подскажите пожалуйста, как я могу получить индекс первого бара после открытия сессии , чтобы в последствии использовать его при нахождении iLow этого бара?
Спасибо!
![Документация по MQL5: Доступ к таймсериям и индикаторам / iBarShift Документация по MQL5: Доступ к таймсериям и индикаторам / iBarShift](https://c.mql5.com/36/64/dokumentaciya-po-mql5-dostup-k.png)
- www.mql5.com
простите, а если я не знаю время бара? моя программа должна высчитать сегодняшний первый бар , не могли бы вы поподробнее рассказать?
Здравствуйте!
Подскажите пожалуйста, как я могу получить индекс первого бара после открытия сессии , чтобы в последствии использовать его при нахождении iLow этого бара?
Спасибо!
что-то типа:
double low = iLow(_Symbol,_Period,iBarShift(_Symbol,_Period,60*60*24*(TimeCurrent()/(60*60*24))));
не проверял
Здравствуйте!
Подскажите пожалуйста, как я могу получить индекс первого бара после открытия сессии , чтобы в последствии использовать его при нахождении iLow этого бара?
Спасибо!
![Узнать время первого часового бара дня - Используйте торговые тики вместо всех тиков, мы теряем универсальность. Узнать время первого часового бара дня - Используйте торговые тики вместо всех тиков, мы теряем универсальность.](https://c.mql5.com/36/64/uznat-vremya-pervogo-chasovogo.jpg)
- 2023.02.12
- www.mql5.com
Похоже что под сессий топикстартер подразумевает начало торгового дня (судя по названию темы), но возможны варианты.
Хотя, строго говоря, для форекса сессий несколько в сутках.
Умение задать вопрос правильно - это наука. )))
конечно можно, но я предпочел бы мой вариант из-за более высокой производительности
Я не профи и никогда бы не подумал что 6 арифметических операций + вызов
TimeCurrent()
сработает быстрее чем вызов
iTime(_Symbol,PERIOD_D1,0)
Можно конечно проверить, но теоретически в чем причина?
Я не профи и никогда бы не подумал что 6 арифметических операций + вызов
сработает быстрее чем вызов
Можно конечно проверить, но теоретически в чем причина?
Во-первых, эти два выражения генерируют один и тот же код. Компилятор заменяет умножение нескольких констант на одну константу. Записал длинно для наглядности.
86400*(TimeCurrent()/86400) 60*60*24*(TimeCurrent()/(60*60*24))
Во-вторых, арифметические операции почти бесплатные в сравнению с функциями TimeCurrent() или iTime()
В-третьих функция TimeCurrent() намного быстрее функциям подобным iTime(). Думаю в раз 10-20.
Можете проверить. Мне лень, так как делал это уже много раз и просто это знаю.
ЗЫ
В-четвертых,
Если Вы находитесь не на D1 ТФ, то нет гарантии при первом вызове, что массив D1 уже сформирован, и поэтому Вы поймаете лаг на ровном месте, пока система не сформирует D1 массив
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Подскажите пожалуйста, как я могу получить индекс первого бара после открытия сессии , чтобы в последствии использовать его при нахождении iLow этого бара?
Спасибо!