1
jones2000 2022-04-27 11:29:20 +08:00
绘图直接用 h5 绘制,更方便。py 用来做后台的指标的计算什么的比较方便。 另外通用的图形插件不适合做 K 线图。
|
2
ericgui 2022-04-28 00:05:26 +08:00
是实时数据,还是下载好了的数据?
|
3
hdjdjrjjfjdnee OP 昨天 v2 上不了,
昨天解决的问题: 数据量上 2w 多跟 K 线的时候超级卡: 1 、series.append(QCandlestickSet(o, h, l, c, ind)) , 导入的 o, h, l, c, ind , 千万不要用 pandas 数据的.iloc 取值,2w 行数据: o = data.iloc[ind]['o'] 要了 4 秒, o = data['o'].iloc[ind] 要了 0.47 秒 o = data[ind, 0] 用 numpy 取值只要了 0.0099 秒 2 、第二个图形卡的原因是: 2w 个数据 ,setGridLineVisible 必须设置 False , 不然图像卡死了 chart.axisX().hide() 横坐标最好是隐藏或者设置具体个数在 30 个以内, 不然刷新图形卡死了 自己定义鼠标滚轮事件 wheelEvent , 用来放大缩小图形, 做是做好了, 但是卡死了:因为滚轮每次滚动一下就刷新一次, 但是我们用滚轮滑一下会触发非常多下, 导致 1 秒内会刷新 3 次以上的图形, 1 、解决办法是:找到滚轮结束的时候状态去更新, 这个问题找了一个上午没找到, 放弃了 2 、最后用 setRubberBand , 发现他会跟我现有的鼠标事件 mouseMoveEvent 、mousePressEvent 、mouseReleaseEvent 冲突了。。。。。 昨天的问题: 1 、图都画好了, 卡在了 setRubberBand (橡皮筋控件上),QChartView 这个类没有 RubberBandchange 响应函数,画图选取矩形后 k 线 Y 轴没有跟着曲线变化, 最后曲线扭曲了,于是想从 QGraphicsView 父类自己造个梯子。。。搞了我快一天了, 发现 QGraphicsView 无法叠加在 k 线,放弃了, 最后发现 QChartView 可以自己定义一个自己的 RubberBand , 然后重写鼠标事件就搞定了 self.rb = QRubberBand(QRubberBand.Rectangle, self.chartview) # 橡皮筋控件 2 、十字线及鼠标所在 k 线显示价格信号数据,用 QGraphicsLineItem 这个类定义 2 条直线 现在的问题: 卡在了买卖信号连线。。。已经找了一个上午了。。。。 |
4
hdjdjrjjfjdnee OP @jones2000 ,h5 不会, 但是感觉 h5 功能控件比较多,但是感觉应该没有 qt 功能强大, 而且我写的是风控模块的部分,后续好扩展
|
5
hdjdjrjjfjdnee OP @ericgui 目前是历史数据, 后续会绑定实盘的实时数据 [估计有点难, 不行就跑路]
|
6
hdjdjrjjfjdnee OP 开平买卖 5000 次, 要写个 5000 个连线, 目前想要不写 5000 个 series_, 不知道卡不卡, 有点不敢试。。。。
正在查 qtchart 有没有 分段的折线 函数 |
7
hdjdjrjjfjdnee OP 我刚试了 画 5000 个 series_, 也还好。。。。不算卡, 买卖信号连线解决了,
下周的问题是: 横坐标目前是 30 个数值, 要改成日期时间 |
8
jones2000 2022-04-30 00:23:19 +08:00
@hdjdjrjjfjdnee 开 GPU 加速, 双缓存, 十字光标使用异或绘制十字线,十字光标移动指标栏信息使用区域重绘,不要整个页面都刷,这样4-5 W 的数据都不卡。
|
9
yellowtail 2022-05-14 23:08:10 +08:00
推荐 finplot 库,网上很多 pyqt 花 k 线的例子,可以搜一下景色的 ctp 案例
|