prev_calculated - страница 7

 
Alexander Puzanov:

У Вас ошибочное суждение по всем трём пунктам.

prev_calculate отображает количество ПОСЧИТАННЫХ (обработанных) баров на предыдущем вызове. Это аксиома.

Если история изменилась, подкачалась или индикатор ещё ни разу не рассчитывался - значение prev_calculate==0. Это тоже аксиома.

Что именно из этого непонятно?

 
Karputov Vladimir:

У Вас ошибочное суждение по всем трём пунктам.

prev_calculate отображает количество ПОСЧИТАННЫХ (обработанных) баров на предыдущем вызове. Это аксиома.

Если история изменилась, подкачалась или индикатор ещё ни разу не рассчитывался - значение prev_calculate==0. Это тоже аксиома.

Что именно из этого непонятно?

Из этого не понятно только две проблемы:

1. Куда пропадает история если ни терминал ни график не закрывался?

2. Неуже-ли так сложно сделать чтобы в массиве небыло космического мусора при инициализации индикаторного буфера. Или-бы массив инициализировался значением установленным PLOT_EMPTY_VALUE

 
Alexey Viktorov:

Из этого не понятно только две проблемы:

1. Куда пропадает история если ни терминал ни график не закрывался?

2. Неуже-ли так сложно сделать чтобы в массиве небыло космического мусора при инициализации индикаторного буфера. Или-бы массив инициализировался значением установленным PLOT_EMPTY_VALUE

1. @Куда пропадает история если ни терминал ни график не закрывался?@ - что имеется в виду?

2. Вот такая вполне жизненная ситуация, встречается на каждом шагу. Мне нужно объявить переменную. Как думаете, какой вариант правильный, а) или б):

a): int i;
б): int i=0;
 
Karputov Vladimir:

1. @Куда пропадает история если ни терминал ни график не закрывался?@ - что имеется в виду?

2. Вот такая вполне жизненная ситуация, встречается на каждом шагу. Мне нужно объявить переменную. Как думаете, какой вариант правильный, а) или б):

a): int i;
б): int i=0;

1. Никакого подтекста, прямой понятный вопрос. Терминал работает, котировки поступают, при каждом тике индикатор повторяет пересчёт OnCalculate и отсчитывает prev_calculated возвращая rates_total и вдруг бах!!! и потерян целый бар... Куда???

2. Не надо сгребать в одну кучу переменные, пользовательские массивы и индикаторные буферы.


Похоже что костыль найден. Индикатор запущен с этим костылём. После очередной потери истории будет результат.

 
Alexey Viktorov:

Из этого не понятно только две проблемы:

1. Куда пропадает история если ни терминал ни график не закрывался?

2. Неуже-ли так сложно сделать чтобы в массиве небыло космического мусора при инициализации индикаторного буфера. Или-бы массив инициализировался значением установленным PLOT_EMPTY_VALUE

2. Несложно, но ненужно, даже нежелательно. Потому-что буферы заполняются рассчитанными индикаторными данными. Незачем делать лишнее.
 
Karputov Vladimir:

У Вас ошибочное суждение по всем трём пунктам.

prev_calculate отображает количество ПОСЧИТАННЫХ (обработанных) баров на предыдущем вызове. Это аксиома.

Если история изменилась, подкачалась или индикатор ещё ни разу не рассчитывался - значение prev_calculate==0. Это тоже аксиома.

Что именно из этого непонятно?

Ах батенька, чем, по-вашему, баг отличается от аксиомы? Посыпать мозги словами здесь не требуется - всё сформулированное в 3х пунктах легко видно в моём 1м посте. Если всё не так - вы же программист а не плотник, покажите в коде как вы голым prev_calculated без доп костылей порешите по отдельности перечисленные в 3х пунктах простые задачи: покажете сколько баров обсчитано на предыдущем тике, определите первый вызов OnCalculate и определите что история (контрольная сумма) изменена. Ничего додумывать за пользователя, подгонять под ваши аксиомы не надо - задачи сформулированы, очень просты и однозначны как полпальца

 

Alexey Viktorov:

Этого в документации НЕТУ!!! Следовательно это сочинения на вольную тему. Равно как и моё заявление об автоматической инициализации, даже круче. Моё хоть с оговоркой было... 

 

Чё ахинею нести? Если такую инициализацию засунуть в OnCalculate то обнуляется на ура без каких либо циклов. Но если обнуляется prev_calculated то обнуляет все данные которые были накоплены в процессе работы...

К вопросу про инициализацию буферов при инициализации. Рассудите логически. В OnInit() нет доступа к rates_total, так? Если в OnInit() нет доступа к rates_total, то и размеры буферов индикатора еще не известны ( =0 можете проверить сами). А раз размер буферов индикатора = 0, то что Вы собираетесь обнулять? 

 
Alexander Puzanov:

Ах батенька, чем, по-вашему, баг отличается от аксиомы? Посыпать мозги словами здесь не требуется - всё сформулированное в 3х пунктах легко видно в моём 1м посте. Если всё не так - вы же программист а не плотник, покажите в коде как вы голым prev_calculated без доп костылей порешите по отдельности перечисленные в 3х пунктах простые задачи: покажете сколько баров обсчитано на предыдущем тике, определите первый вызов OnCalculate и определите что история (контрольная сумма) изменена. Ничего додумывать за пользователя, подгонять под ваши аксиомы не надо - задачи сформулированы, очень просты и однозначны как полпальца

С этим вопросом нужно не к Владимиру (он лишь защищает позицию разработчиков), а к самим разработчикам, которые (в лице Slawa) так и сказали, что при prev_calculated = 0 - заново все пересчитать. Они ведь не всегда могут просчитать все варианты использования индикатора. Если сейчас назрела проблема, то бесполезно мучить модератора, нужно в сервисдеск с подробным описанием.
 
Alexey Viktorov:

Неуже-ли так сложно сделать чтобы в массиве небыло космического мусора при инициализации индикаторного буфера. Или-бы массив инициализировался значением установленным PLOT_EMPTY_VALUE

if (rates_total > prev_calculated)
  ArrayFill(Buffer, prev_calculated, rates_total - prev_calculated, EMPTY_VALUE);
 
Alexey Viktorov:

1. Никакого подтекста, прямой понятный вопрос. Терминал работает, котировки поступают, при каждом тике индикатор повторяет пересчёт OnCalculate и отсчитывает prev_calculated возвращая rates_total и вдруг бах!!! и потерян целый бар... Куда???

2. Не надо сгребать в одну кучу переменные, пользовательские массивы и индикаторные буферы.


Похоже что костыль найден. Индикатор запущен с этим костылём. После очередной потери истории будет результат.

1. Снова поток мысли, но сути я так и не увидел.

2. На вопрос Вы так и не ответили, что говорит о том, что Вы никогда не задумывались над тем, что храниться в переменной после её объявления.