Проблемы с масштабом графика при отрисовке свечей

Проблемы с масштабом графика при отрисовке свечей
Atom
7/1/2021
Sprite


Добрый день!

Давно мучаюсь, решил оформить в пост:

Если для осей графика убрать галочку "Автоматический диапазон", то при отрисовке каждой свечи график дергается, а затем масштабирование, которое было на графике сбивается и показывается ровно то количество свечей, которое указано в свойстве ChartPanel.MinimumRange (по умолчанию 50).
Таким образом становится невозможным смотреть на крупный или мелкий масштабы графика, так как при каждой новой свечке график "прыгает" и растягивается ровно на определенное количество свечей.
Например если поставить ChartPanel.MinimumRange = 1 при каждой новой свечке вы будете видеть только одну свечку, как бы вы график не растягивали/сжимали.

Прикрепляю видео того, как это выглядит.

Дополнительная информация, которая возможно будет полезна:
1. За "Автоматический диапазон" осей отвечает свойство ChartAxis.AutoRange в объектах ChartArea.XAxises и ChartArea.YAxises. Т.е. я ставлю в коде для всех осей AutoRange = false
2. У меня несколько осей Y в одной ChartPanel.ChartArea, на которых рисуются данные индикаторов, в том числе дополнительные свечи. В видео это не показано, но возможно это на что-то влияет.

Насколько я понимаю такое поведение ненормально и хотелось бы чтобы график не "прыгал", а оставался в том масштабе, на который он растянут мышкой.

Candle1.mp4 570 KB (347) Candle2.mp4 1 MB (345)



Thanks:


< 1 2 
Sprite

Avatar
Date: 12/25/2021
Reply


Спасибо за ответы.

Вопрос по поводу ChartPanel.MinimumRange:

Support
- Причина того что чарт дергается -- свойство ChartPanel.MinimumRange, по умолчанию выставленное в 50 свечей и из-за которого график автоматически менял отображаемый диапазон если свечей было недостаточно.
В следующем релизе поведение будет слегка изменено, теперь заданный диапазон будет использоваться единожды в начале отрисовки. Это должно исправить проблему.

А если в процессе отрисовки пользователь поменяет значение ChartPanel.MinimumRange, новое значение будет учитываться?

Thanks:

Sprite

Avatar
Date: 12/27/2021
Reply


Support
График рендерит всю видимую часть при каждом изменении любого элемента. Поэтому да, чем больше видимых элементов, тем медленнее отрисовка. Если вы отрисовываете 100 серий данных на одном графике, то возможно будет тормозить.

Именно видимых в области экрана? Т.е. если задать ChartPanel.MinimumRange=1, то при одинаковом количестве серий такой график будет рендериться быстрее, чем если задать ChartPanel.MinimumRange=50?

Thanks:

Support

Avatar
Date: 1/11/2022
Reply


Quote:
А если в процессе отрисовки пользователь поменяет значение ChartPanel.MinimumRange, новое значение будет учитываться?

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

Quote:
Именно видимых в области экрана? Т.е. если задать ChartPanel.MinimumRange=1, то при одинаковом количестве серий такой график будет рендериться быстрее, чем если задать ChartPanel.MinimumRange=50?

ChartPanel.MinimumRange тут не имеет значения.
Имеет значение текущий видимый диапазон, и количество данных в этом видимом диапазоне.
Thanks:
< 1 2 

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy