
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
в чем разница у этих функций?
не могу понять для чего первая понадобилась
на достаточность баров обычно Bars
если нужно проверить расчет другого индикатора(хендла), то
В mt5, если мне не изменяет память, так было всегда.
Вот-вот, и для подготовки, скажем, мне нужны дополнительные буфферы, и если число баров недостаточно - то смысла отображать вобще нет. Я запрашиваю в инициализации бары, а мне выдаётся, что их нет... Соответственно, и инициализироваться нечем.
Пока обошёл эту проблему, инициализируясь на первом пришедшем тике. Но, по-моему, это неправильно, тем более, что в МТ4 - было всё в порядке в этом плане, в функции Init() все данные подготовлены.
если нужно проверить расчет другого индикатора(хендла), то
А если нужны бары по другому символу?
Лично я устаревшей Bars() без параметров вобще не пользуюсь, поскольку непонятно внутри кода, к каким барам она относится.
Ну а с помощью функции SeriesInfoInteger() можно из одного места получить и другие данные. Как мне кажется, эта функция более разумна внутри класов, поставляющих данные, используя функции доступа к таймсериям.
А если нужны бары по другому символу?
Лично я устаревшей Bars() без параметров вобще не пользуюсь, поскольку непонятно внутри кода, к каким барам она относится.
Ну а с помощью функции SeriesInfoInteger() можно из одного места получить и другие данные. Как мне кажется, эта функция более разумна внутри класов, поставляющих данные, используя функции доступа к таймсериям.
у Bars и есть выбор символа и TF
в штатных индикаторах всегда в OnCalculated идет проверка, только вместо Bars, rates_total
Вот-вот, и для подготовки, скажем, мне нужны дополнительные буфферы, и если число баров недостаточно - то смысла отображать вобще нет. Я запрашиваю в инициализации бары, а мне выдаётся, что их нет... Соответственно, и инициализироваться нечем.
Пока обошёл эту проблему, инициализируясь на первом пришедшем тике. Но, по-моему, это неправильно, тем более, что в МТ4 - было всё в порядке в этом плане, в функции Init() все данные подготовлены.
Если это работает, значит это правильно. Было бы не правильно, оно бы не работало. Логично?
Вот взял первый попавшийся индикатор, перенёс OnInit() в OnCalculate().
Работает. Значит всё норм)))
вырезка из DeepSeek
это должно быть в OnCalculated
Bars можно на rates_total для текущего символа и тф заменить
Если это работает, значит это правильно. Было бы не правильно, оно бы не работало. Логично?
НЕТ.
Когда заложен нос - люди дышат ртом, и это у них вполне себе получается. Однако, рот человека, всё-таки, не предназначен для дыхания, и дышать им в обычных условиях неправильно.
Также и тут - начальные проверки и инициализация должны проводиться в Init(). Если при этом таймсерии могут быть недоступны - это должно быть, как минимум, чётко указанно в описании события Init для индикаторов. В справке ничего этого нет сказано. В описании порядка доступа к таймсериям - указано, что бары могут быть несформированы, и для этого надо использовать скрипт с функцией Sleep(), которая не должна вызываться в индикаторах.
Наконец важно и то, что если индикатор запускается на графике - то всё проходит нормально, и количество баров благополучно выдаётся в функции Init(). Если же терминал перезапущен - то в функции Init() количество баров нулевое. На мой взгляд, тут надо либо привести к общему поведению, когда в функции Init() таймсерии доступны (или недоступны), ну, либо, хотя бы указать в справке - что поведение не определено, и запрашивать число баров в этой функции нельзя.
DeepSeek, конечно, авторитет... Особенно, учитывая, что функция Bars() появилась РАНЬШЕ, чем функция SeriesInfoInteger() (если не ошибаюсь, ещё в МТ3).
у Bars и есть выбор символа и TF
Ну, так я ведь и сказал - "без параметров".
В обычных случаях разницы нет, однако, когда надо в одном месте получать разные данные, и в том числе количество баров - предпочтительнее SeriesInfoInteger(), а не отдельные функции, среди которых будет и Bars()
НЕТ.
Когда заложен нос - люди дышат ртом, и это у них вполне себе получается. Однако, рот человека, всё-таки, не предназначен для дыхания, и дышать им в обычных условиях неправильно.
Также и тут - начальные проверки и инициализация должны проводиться в Init(). Если при этом таймсерии могут быть недоступны - это должно быть, как минимум, чётко указанно в описании события Init для индикаторов. В справке ничего этого нет сказано. В описании порядка доступа к таймсериям - указано, что бары могут быть несформированы, и для этого надо использовать скрипт с функцией Sleep(), которая не должна вызываться в индикаторах.
Наконец важно и то, что если индикатор запускается на графике - то всё проходит нормально, и количество баров благополучно выдаётся в функции Init(). Если же терминал перезапущен - то в функции Init() количество баров нулевое. На мой взгляд, тут надо либо привести к общему поведению, когда в функции Init() таймсерии доступны (или недоступны), ну, либо, хотя бы указать в справке - что поведение не определено, и запрашивать число баров в этой функции нельзя.
DeepSeek, конечно, авторитет... Особенно, учитывая, что функция Bars() появилась РАНЬШЕ, чем функция SeriesInfoInteger() (если не ошибаюсь, ещё в МТ3).
Ну, так я ведь и сказал - "без параметров".
В обычных случаях разницы нет, однако, когда надо в одном месте получать разные данные, и в том числе количество баров - предпочтительнее SeriesInfoInteger(), а не отдельные функции, среди которых будет и Bars()
НЕТ.
Ну, собственно, я не спорю. Я просто привёл пример, что ехать можно и без шашечек.
Поведение терминала при старте действительно похоже на баг.
Баги сказано писать сюда.