Одна тоска, печаль при работе с графиками... 🤬 Те чарты, что в msdn имеют на много больше свойств и методов, и разнятся с теми, что в доках S# Например, в проекте GetCandles можно проверить, что при отрисовке исторических свечек на нормальном периоде времени все окно зависает нафиг пока не обработает все свечи и только потом покажет готовый график. К каким свойствам и методам обращаться, чтобы он брал свечку, выводил ее на график и только потом делал это с другой свечкой? Ладно бы график, все окно зависает.
ChartArea() - высота областей не настраивается. Где бы ты ее не задавал - в итоге стандартные 100 выводит и хоть ты тресни. Сказали, что передали разработчикам, те видимо забили.
EquityCurveChart()- легенда на пол графика, доступа к ее настройкам никаких. В процессе построения свои значения не показывает и даже после построения график чиcтый... пока не подвигаешь мышкой окно 😀 . Доступ к методам и свойствам минимальный.
Дока на графики вообще на половину не переведена.
И так по мелочи: Chart.CrossHairAxisLabels - здорово, можно выводить. Вот только куча не нужных цифр после запятой, как округлять? Наверное, опять к разработчикам...
Бонус: candles.Count выводит в два раза больше свечек, чем положено.
Если берете стандартные функции из C#, то зачем их урезать?
Очень вероятно, что я как начинающий, что-то проглядел, не внимательно читал документы, да, и, вообще, нажимал кнопки, какие попали на глаза без разбору. Буду рад, если профессионалы укажут на мои недостатки!
Заранее спасибо.
Kommentare (9)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Вообще то наш чарт построен на СкиЧарте. Это не стандартный компонент, и стоит почти что 50к рубликов. Распространять по лиц. соглашению мы не имеем право лицензию СкиЧарт, как и сам компонент. И поэтому он обернут (=урезан) в наши методы, и распространяется дэ факто и дэ юрэ наша обертка, тоесть производное решение. Именно в таком виде график получает бесплатное распространение. Если хотите фул тротэл, то велкам на сайт производителя, и сможете заюзать компонент со всеми его фичами. Только придется уплатить 50к.
Что касается замирания всех окон, то почти уверен, что это вовсе не из-за графика, а за частого маршалинга данных в ГУИ поток.
Очень хорошо, что платформа использует качественные профессиональные компоненты. Но я и не планирую с этими графиками строить траектории движения космических кораблей. Просто хочу, чтобы график отрисовывался во время получения данных и было понятно, что он делает. Стандартные функции C# это позволяют, а профессиональные значит нет)
Я могу выложить код. И, надеюсь, мне подскажут как решить проблему с "маршалингом" или чем бы то ни было😀
Код:
Передаю свечи в метод Draw:
Сам метод:
Все работает. Только отрисовывает после работы метода.
Вот эта фраза не понятно. А когда должно отрисовывать? До работы?😂
Отрисовывает по окончании foreach. А в процессе зависание. Кода добавлял вывод сообщения после окончания метода, то свечка отрисовывалась нормально. Как ему обозначить, что нужно показать график со свечей, а потом уже новую свечу выводить. Он либо не успевает, либо игнорирует. Хз.
Потому что GUI маршалинг - это не мгновенная операция. Или передавайте свечки пачкой, или используйте очередь. Но сам метод не зависает, скорее всего. Зависает отрисовка. Потому что маршалинг асинхронный.
Мне тоже так кажется. Как можно это решить на практике? Или забить? Не хотелось бы... А с остальными моментами из первого сообщения?
Тема перфоманса ГУИ не такая уж и простая. Я бы сказал, ее многие конторы в трейдинге до сих пор не очень успешно решают. Тут нет однозначного решения как лучше. Надо экспериментировать. Может обновление пачкой свечек ускорит, а может еще что. На худой конец, просто забить, ведь в рилтайме свечки пачками не приходят. Если мы про тест на истории говорим, то опять же, результат можно смотреть в конце. Ведь отображение в реальном времени параметров тестирования может ухудшить перформанс тестирования.
Я другие не особо понял о чем речь. Если про коммент насчет исправления ошибок, то все в процессе. Есть сейчас более актуальные задачи (к примеру, тестирование, о чем вы писали в плане утечки памяти). Как закончим, то вернемся к найденным недочетам с форума. Никто не забыт, ничто не забыто.
Есть решения. Попробую реализовать.