![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
У Вас ошибочное суждение по всем трём пунктам.
prev_calculate отображает количество ПОСЧИТАННЫХ (обработанных) баров на предыдущем вызове. Это аксиома.
Если история изменилась, подкачалась или индикатор ещё ни разу не рассчитывался - значение prev_calculate==0. Это тоже аксиома.
Что именно из этого непонятно?
У Вас ошибочное суждение по всем трём пунктам.
prev_calculate отображает количество ПОСЧИТАННЫХ (обработанных) баров на предыдущем вызове. Это аксиома.
Если история изменилась, подкачалась или индикатор ещё ни разу не рассчитывался - значение prev_calculate==0. Это тоже аксиома.
Что именно из этого непонятно?
Из этого не понятно только две проблемы:
1. Куда пропадает история если ни терминал ни график не закрывался?
2. Неуже-ли так сложно сделать чтобы в массиве небыло космического мусора при инициализации индикаторного буфера. Или-бы массив инициализировался значением установленным PLOT_EMPTY_VALUE
Из этого не понятно только две проблемы:
1. Куда пропадает история если ни терминал ни график не закрывался?
2. Неуже-ли так сложно сделать чтобы в массиве небыло космического мусора при инициализации индикаторного буфера. Или-бы массив инициализировался значением установленным PLOT_EMPTY_VALUE
1. @Куда пропадает история если ни терминал ни график не закрывался?@ - что имеется в виду?
2. Вот такая вполне жизненная ситуация, встречается на каждом шагу. Мне нужно объявить переменную. Как думаете, какой вариант правильный, а) или б):
б): int i=0;
1. @Куда пропадает история если ни терминал ни график не закрывался?@ - что имеется в виду?
2. Вот такая вполне жизненная ситуация, встречается на каждом шагу. Мне нужно объявить переменную. Как думаете, какой вариант правильный, а) или б):
б): int i=0;
1. Никакого подтекста, прямой понятный вопрос. Терминал работает, котировки поступают, при каждом тике индикатор повторяет пересчёт OnCalculate и отсчитывает prev_calculated возвращая rates_total и вдруг бах!!! и потерян целый бар... Куда???
2. Не надо сгребать в одну кучу переменные, пользовательские массивы и индикаторные буферы.
Похоже что костыль найден. Индикатор запущен с этим костылём. После очередной потери истории будет результат.
Из этого не понятно только две проблемы:
1. Куда пропадает история если ни терминал ни график не закрывался?
2. Неуже-ли так сложно сделать чтобы в массиве небыло космического мусора при инициализации индикаторного буфера. Или-бы массив инициализировался значением установленным PLOT_EMPTY_VALUE
У Вас ошибочное суждение по всем трём пунктам.
prev_calculate отображает количество ПОСЧИТАННЫХ (обработанных) баров на предыдущем вызове. Это аксиома.
Если история изменилась, подкачалась или индикатор ещё ни разу не рассчитывался - значение prev_calculate==0. Это тоже аксиома.
Что именно из этого непонятно?
Ах батенька, чем, по-вашему, баг отличается от аксиомы? Посыпать мозги словами здесь не требуется - всё сформулированное в 3х пунктах легко видно в моём 1м посте. Если всё не так - вы же программист а не плотник, покажите в коде как вы голым prev_calculated без доп костылей порешите по отдельности перечисленные в 3х пунктах простые задачи: покажете сколько баров обсчитано на предыдущем тике, определите первый вызов OnCalculate и определите что история (контрольная сумма) изменена. Ничего додумывать за пользователя, подгонять под ваши аксиомы не надо - задачи сформулированы, очень просты и однозначны как полпальца
Alexey Viktorov:
Этого в документации НЕТУ!!! Следовательно это сочинения на вольную тему. Равно как и моё заявление об автоматической инициализации, даже круче. Моё хоть с оговоркой было...
К вопросу про инициализацию буферов при инициализации. Рассудите логически. В OnInit() нет доступа к rates_total, так? Если в OnInit() нет доступа к rates_total, то и размеры буферов индикатора еще не известны ( =0 можете проверить сами). А раз размер буферов индикатора = 0, то что Вы собираетесь обнулять?
Ах батенька, чем, по-вашему, баг отличается от аксиомы? Посыпать мозги словами здесь не требуется - всё сформулированное в 3х пунктах легко видно в моём 1м посте. Если всё не так - вы же программист а не плотник, покажите в коде как вы голым prev_calculated без доп костылей порешите по отдельности перечисленные в 3х пунктах простые задачи: покажете сколько баров обсчитано на предыдущем тике, определите первый вызов OnCalculate и определите что история (контрольная сумма) изменена. Ничего додумывать за пользователя, подгонять под ваши аксиомы не надо - задачи сформулированы, очень просты и однозначны как полпальца
Неуже-ли так сложно сделать чтобы в массиве небыло космического мусора при инициализации индикаторного буфера. Или-бы массив инициализировался значением установленным PLOT_EMPTY_VALUE
ArrayFill(Buffer, prev_calculated, rates_total - prev_calculated, EMPTY_VALUE);
1. Никакого подтекста, прямой понятный вопрос. Терминал работает, котировки поступают, при каждом тике индикатор повторяет пересчёт OnCalculate и отсчитывает prev_calculated возвращая rates_total и вдруг бах!!! и потерян целый бар... Куда???
2. Не надо сгребать в одну кучу переменные, пользовательские массивы и индикаторные буферы.
Похоже что костыль найден. Индикатор запущен с этим костылём. После очередной потери истории будет результат.
1. Снова поток мысли, но сути я так и не увидел.
2. На вопрос Вы так и не ответили, что говорит о том, что Вы никогда не задумывались над тем, что храниться в переменной после её объявления.