Смена ТФ - проблема - страница 8

 

Короче вывод такой.

Считаем вручную разницу посчитаных и не посчитаных баров и если больше 1 то...

обнуляем буфера сразу весь или поелементно.

 

Не красиво. Может разработчики всё таки сами займутся обнулением если есть условие? 

 
Vasyl Nosal:

Короче вывод такой.

Считаем вручную разницу посчитаных и не посчитаных баров и если больше 1 то...

обнуляем буфера сразу весь или поелементно.

 

Не красиво. Может разработчики всё таки сами займутся обнулением если есть условие? 

Опять двадцать-пять :) . В таком случае зачем Вам голова? Невозможно предусмотреть всех вариантов реакции на события. Выбор варианта лежит на плечах программиста (хотя, тут и делать нечего, две строчки: проверить на ==0 и отреагировать).
 
Vasyl Nosal:

Короче вывод такой.

Считаем вручную разницу посчитаных и не посчитаных баров и если больше 1 то...

обнуляем буфера сразу весь или поелементно.

 

Не красиво. Может разработчики всё таки сами займутся обнулением если есть условие? 

Шо, опять?!! © :D И это после всех объяснений с примерами, как правильно писать индикаторы? )))

 
Sergei Vladimirov:

Шо, опять?!! © :D И это после всех объяснений с примерами, как правильно писать индикаторы? )))

Дык. В моём варианте и в вашем идёт обнуление, не? 
 
Vasyl Nosal:
Дык. В моём варианте и в вашем идёт обнуление, не? 

В моём варианте рассчитывается каждый бар. Если значение буфера на таком-то баре должно быть нулевым, оно станет нулевым, если оно должно быть равно 5, оно станет равно 5. Конкретно в вашем случае можно и просто обнулить буферы через ArrayInitialize(), а потом не рассчитывать те бары, где значение буферов должно остаться нулевым. Но это, во-первых, плохой стиль программирования (очень плохой!), а во-вторых, это частный случай.

Все бары нужно рассчитывать явно. Только так вы можете быть уверены в том, что ни в одной ячейке не будет "мусора", непересчитаных данных и т.п., и вам не придётся отлавливать баги (с которыми вы в этой ветке и боролись).

И факт обновления истории специально отслеживать тоже не нужно, это лишнее. Просто начинайте расчет с бара [rates_total - MathMax(prev_calculated, 1)], и всё всегда будет гарантированно посчитано и пересчитано при необходимости.

 
Sergei Vladimirov:

В моём варианте рассчитывается каждый бар. Если значение буфера на таком-то баре должно быть нулевым, оно станет нулевым, если оно должно быть равно 5, оно станет равно 5. Конкретно в вашем случае можно и просто обнулить буферы через ArrayInitialize(), а потом не рассчитывать те бары, где значение буферов должно остаться нулевым. Но это, во-первых, плохой стиль программирования (очень плохой!), а во-вторых, это частный случай.

Все бары нужно рассчитывать явно. Только так вы можете быть уверены в том, что ни в одной ячейке не будет "мусора", непересчитаных данных и т.п., и вам не придётся отлавливать баги (с которыми вы в этой ветке и боролись).

И факт обновления истории специально отслеживать не нужно, это лишнее. Просто начинайте расчет с бара [rates_total - MathMax(prev_calculated, 1)], и всё всегда будет гарантированно посчитано и пересчитано при необходимости.

Ай. Ладно.

Всё ровно разработчики ничего не внедрят.

Всем спасибо. 

Причина обращения: