【发布时间】:2017-06-28 04:42:04
【问题描述】:
A) 我正在为我的一个金融项目使用Highstock 图表库。但是,我陷入了性能问题。我的 Highstock 工作实现在一个图表中有 i) 5 个图表 ii) 多条线(和线型) 在图表中 iii) 标签应用于图表上的点 iv) 新数据大约每秒到达一次,添加一个点并将图形向左移动。但是,我在使用此设置时遇到了一些关键问题:
- 渲染速度非常慢。由于绘制的图表数量(和次数),这是一个性能问题
- 无法在底部调整时间范围控制。由于控件冻结而导致的性能问题
- 我可以添加一个点,使图形向左移动。但是,我无法使用该新数据点添加标志。请参阅此SO issue。
B) 我已经查看了这些其他 SO 问题(Highstock Performance Issue、Highcharts Performance Enhancement Method? ),并尝试了他们的解决方案,但改进非常有限:
:turboThreshold 50 ;; tick-list length will be a max of 100
:shadow false
:marker {:enabled false}
:plotOptions{:series {:enableMouseTracking false}}
C)我没有看到解决这些 Highstock 问题的简单方法。这是一个很棒的图书馆。但我正在查看Google Charts API,看看它是否能满足这些要求。
- Google Charts API 的性能超过了 Highstock...鉴于以下所有交互
- 一页上有多个图表
- 1 个视图中有多个重叠图表
- 图表:线、面积(范围)、直方图、阈值线(见上面的红线和绿线)
- 在我的时间序列上轻松添加一个标志
- 轻松在我的时间序列折线图中添加一个点
- 轻松地将点和标志(同时)添加到我的时间序列折线图中
D) 有没有人经历过类似的事情?还有其他方法可以提高我的 highstock 性能吗?谷歌图表可以在这里做得更好吗?
谢谢
附言。我的 highcharts 调用看起来像这样(Clojurescript 代码):
(defn chart-fill [selector dataList signal-map strategy-map label]
(-> ($ selector)
(.highcharts "StockChart" (clj->js
{:names [label "Bolling Band" "Simple Moving Average" "Exponential Moving Average"]
:rangeSelector {:selected 11}
:title {:text label}
:chart {:zoomType "x"}
:navigator {:adaptToUpdatedData true}
:yAxis [{
:title {:text "Technical Analysis"}
:height 200
:shadow false
:turboThreshold 50
:marker {:enabled false}}
{
:title {:text "MACD / Signal"}
:height 100
:top 300
:offset 0
:lineWidth 2
:turboThreshold 50
:shadow false
:marker {:enabled false}
:plotOptions{:series {:enableMouseTracking false}}}
{
:title {:text "MACD Histog"}
:height 100
:top 400
:offset 0
:lineWidth 2
:turboThreshold 50
:shadow false
:marker {:enabled false}
:plotOptions{:series {:enableMouseTracking false}}}
{
:title {:text "Stochastic Osc"}
:height 100
:top 500
:offset 0
:lineWidth 2
:max 1
:min 0
:turboThreshold 50
:shadow false
:marker {:enabled false}
:plotOptions{:series {:enableMouseTracking false}}
:plotLines [{
:value 0.75
:color "red"
:width 1
:dashStyle "longdash"
:label {:text "Overbought"}}
{
:value 0.25
:color "green"
:width 1
:dashStyle "longdash"
:label {:text "Oversold"}}]}
{
:title {:text "OBV"}
:height 100
:top 600
:offset 0
:lineWidth 2
:turboThreshold 50
:shadow false
:marker {:enabled false}
:plotOptions{:series {:enableMouseTracking false}}}]
:series (build-graph-series-data dataList signal-map strategy-map)}))))
【问题讨论】:
标签: performance highcharts highstock google-finance quantitative-finance