VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 57
声望: 0

请问在交易时段有新的K线生成的时候会自动画图吗,还是需要手动画图呢

Member
avatar
加入于:
帖子: 420
声望: 175

学习爱好者 wrote:

请问在交易时段有新的K线生成的时候会自动画图吗,还是需要手动画图呢

答复:

  1. 通常,成熟的策略在自动交易的时候是不需要画K线图的,画出来给机器看吗?
  2. 在策略开发的时候,如果写了新的指标,如果没有可视K线图,错了你都不知道,还是很有必要;
  3. 如果您能够给你的每个基于K线的策略都配一个K线图,在不影响策略性能的情况下,岂不美好?
  4. 当然这么做是要深厚的功底和对vnpy平台的理解的,毕竟要比较多修改工作,因为不同的策略使用的K线、指标都可能是不同的,所以需要对驱动策略的引擎做比较大的修改。
  5. 不知道你所谓的手工画图是什么意思?是脱离vnpy平台直接运行画图,还是在纸上画?^_^
Member
avatar
加入于:
帖子: 57
声望: 0

hxxjava wrote:

学习爱好者 wrote:

请问在交易时段有新的K线生成的时候会自动画图吗,还是需要手动画图呢

答复:

  1. 通常,成熟的策略在自动交易的时候是不需要画K线图的,画出来给机器看吗?
  2. 在策略开发的时候,如果写了新的指标,如果没有可视K线图,错了你都不知道,还是很有必要;
  3. 如果您能够给你的每个基于K线的策略都配一个K线图,在不影响策略性能的情况下,岂不美好?
  4. 当然这么做是要深厚的功底和对vnpy平台的理解的,毕竟要比较多修改工作,因为不同的策略使用的K线、指标都可能是不同的,所以需要对驱动策略的引擎做比较大的修改。
  5. 不知道你所谓的手工画图是什么意思?是脱离vnpy平台直接运行画图,还是在纸上画?^_^

感谢回复,并且感谢您的分享,对研究有很大的帮助,实盘中确实不需要实时更新。

Member
avatar
加入于:
帖子: 8
声望: 0

wangjiancc wrote:

H:\vnstudio\python.exe H:/vnstudio/Lib/site-packages/vnpy/app/ctastrategy/backtesting/run.py
2021-03-03 22:22:48,092 INFO: 注册日志事件监听
Exception in thread Thread-4:
Traceback (most recent call last):
File "H:\vnstudio\lib\threading.py", line 917, in _bootstrap_inner
self.run()
File "H:\vnstudio\lib\threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "H:\vnstudio\Lib\site-packages\vnpy\app\cta_backtester\engine.py", line 168, in run_backtesting
setting
File "H:\vnstudio\lib\site-packages\vnpy\app\cta_strategy\backtesting.py", line 211, in add_strategy
self, strategy_class.name, self.vt_symbol, setting
File "H:\vnstudio\lib\site-packages\vnpy\app\cta_strategy\strategies\KxMonitor.py", line 82, in init
self.even_engine = cta_engine.main_engine.event_engine
AttributeError: 'BacktestingEngine' object has no attribute 'main_engine'

Process finished with exit code 0

大佬,请问下这是什么错误?
大佬,该问题解决了吗?

Member
加入于:
帖子: 60
声望: 8

测试成功.
反馈一个bug, 在图表最左边(最初始的部分K线图,那个时候macd值还未产生)用鼠标右键缩放的时候,会报错,报错信息如下:
Traceback (most recent call last):
File "C:\Users\lx\Desktop\vnpy2022-9-20-在线可运行K线版 - 副本\vnpy\chart\widget.py", line 217, in _update_y_range
y_range = item.get_y_range(min_ix, max_ix)
File "C:\Users\lx\Desktop\vnpy2022-9-20-在线可运行K线版 - 副本\vnpy\usertools\kx_chart.py", line 428, in get_y_range
max_price = np.nanmax(ndarray)
File "<__array_function__ internals>", line 6, in nanmax
File "C:\vnstudio\lib\site-packages\numpy\lib\nanfunctions.py", line 434, in nanmax
res = np.fmax.reduce(a, axis=axis, out=out, **kwargs)
ValueError: zero-size array to reduction operation fmax which has no identity

Member
加入于:
帖子: 60
声望: 8

还有一个问题请大神解答下, 我自己编写了一个chartItem, 用于显示数据点的, 用的是drawPoint绘制方式, 随着不同数据范围下, drawPoint被拉得老长了, 变成了一个长的柱子, 有没有办法就让它一直显示为一个方形的点, 不要自适应拉长

Member
avatar
加入于:
帖子: 420
声望: 175

守望长城2020-6-11-艾瑞巴蒂 wrote:

还有一个问题请大神解答下, 我自己编写了一个chartItem, 用于显示数据点的, 用的是drawPoint绘制方式, 随着不同数据范围下, drawPoint被拉得老长了, 变成了一个长的柱子, 有没有办法就让它一直显示为一个方形的点, 不要自适应拉长

答复:
这个是不可能的,因为你画的矩形的宽度与高度的单位是不同的,宽度单位是时间(多少个K线),高度是价格,怎么能够一样呢?
如果你硬是想显示为正方形,建议使用PyQtGraph的ScutterItem,可以参考回测界面里的K线图表显示开仓和平仓成交单的方法来显示,那是用上下三角形来表达的,不会因为K线图标的缩放而改变大小。

Member
avatar
加入于:
帖子: 420
声望: 175

守望长城2020-6-11-艾瑞巴蒂 wrote:

测试成功.
反馈一个bug, 在图表最左边(最初始的部分K线图,那个时候macd值还未产生)用鼠标右键缩放的时候,会报错,报错信息如下:
Traceback (most recent call last):
File "C:\Users\lx\Desktop\vnpy2022-9-20-在线可运行K线版 - 副本\vnpy\chart\widget.py", line 217, in _update_y_range
y_range = item.get_y_range(min_ix, max_ix)
File "C:\Users\lx\Desktop\vnpy2022-9-20-在线可运行K线版 - 副本\vnpy\usertools\kx_chart.py", line 428, in get_y_range
max_price = np.nanmax(ndarray)
File "<__array_function__ internals>", line 6, in nanmax
File "C:\vnstudio\lib\site-packages\numpy\lib\nanfunctions.py", line 434, in nanmax
res = np.fmax.reduce(a, axis=axis, out=out, **kwargs)
ValueError: zero-size array to reduction operation fmax which has no identity

答复:
既然发现了问题,动动您发财的手帮大家改一下吧 。。。 :)

Member
加入于:
帖子: 60
声望: 8

hxxjava wrote:

守望长城2020-6-11-艾瑞巴蒂 wrote:

还有一个问题请大神解答下, 我自己编写了一个chartItem, 用于显示数据点的, 用的是drawPoint绘制方式, 随着不同数据范围下, drawPoint被拉得老长了, 变成了一个长的柱子, 有没有办法就让它一直显示为一个方形的点, 不要自适应拉长

答复:
这个是不可能的,因为你画的矩形的宽度与高度的单位是不同的,宽度单位是时间(多少个K线),高度是价格,怎么能够一样呢?
如果你硬是想显示为正方形,建议使用PyQtGraph的ScutterItem,可以参考回测界面里的K线图表显示开仓和平仓成交单的方法来显示,那是用上下三角形来表达的,不会因为K线图标的缩放而改变大小。

感谢指导, 我假期用ScutterItem试一下

Member
加入于:
帖子: 60
声望: 8

hxxjava wrote:

守望长城2020-6-11-艾瑞巴蒂 wrote:

测试成功.
反馈一个bug, 在图表最左边(最初始的部分K线图,那个时候macd值还未产生)用鼠标右键缩放的时候,会报错,报错信息如下:
Traceback (most recent call last):
File "C:\Users\lx\Desktop\vnpy2022-9-20-在线可运行K线版 - 副本\vnpy\chart\widget.py", line 217, in _update_y_range
y_range = item.get_y_range(min_ix, max_ix)
File "C:\Users\lx\Desktop\vnpy2022-9-20-在线可运行K线版 - 副本\vnpy\usertools\kx_chart.py", line 428, in get_y_range
max_price = np.nanmax(ndarray)
File "<__array_function__ internals>", line 6, in nanmax
File "C:\vnstudio\lib\site-packages\numpy\lib\nanfunctions.py", line 434, in nanmax
res = np.fmax.reduce(a, axis=axis, out=out, **kwargs)
ValueError: zero-size array to reduction operation fmax which has no identity

答复:
既然发现了问题,动动您发财的手帮大家改一下吧 。。。 :)

嗯初步定位是macd计算的问题
守望长城2020-6-11-艾瑞巴蒂 wrote:

hxxjava wrote:

守望长城2020-6-11-艾瑞巴蒂 wrote:

还有一个问题请大神解答下, 我自己编写了一个chartItem, 用于显示数据点的, 用的是drawPoint绘制方式, 随着不同数据范围下, drawPoint被拉得老长了, 变成了一个长的柱子, 有没有办法就让它一直显示为一个方形的点, 不要自适应拉长

答复:
这个是不可能的,因为你画的矩形的宽度与高度的单位是不同的,宽度单位是时间(多少个K线),高度是价格,怎么能够一样呢?
如果你硬是想显示为正方形,建议使用PyQtGraph的ScutterItem,可以参考回测界面里的K线图表显示开仓和平仓成交单的方法来显示,那是用上下三角形来表达的,不会因为K线图标的缩放而改变大小。

感谢指导, 我假期用ScutterItem试一下

hxxjava wrote:

守望长城2020-6-11-艾瑞巴蒂 wrote:

测试成功.
反馈一个bug, 在图表最左边(最初始的部分K线图,那个时候macd值还未产生)用鼠标右键缩放的时候,会报错,报错信息如下:
Traceback (most recent call last):
File "C:\Users\lx\Desktop\vnpy2022-9-20-在线可运行K线版 - 副本\vnpy\chart\widget.py", line 217, in _update_y_range
y_range = item.get_y_range(min_ix, max_ix)
File "C:\Users\lx\Desktop\vnpy2022-9-20-在线可运行K线版 - 副本\vnpy\usertools\kx_chart.py", line 428, in get_y_range
max_price = np.nanmax(ndarray)
File "<__array_function__ internals>", line 6, in nanmax
File "C:\vnstudio\lib\site-packages\numpy\lib\nanfunctions.py", line 434, in nanmax
res = np.fmax.reduce(a, axis=axis, out=out, **kwargs)
ValueError: zero-size array to reduction operation fmax which has no identity

答复:
既然发现了问题,动动您发财的手帮大家改一下吧 。。。 :)

初步定位是macd计算问题, 改好后我共享出来, 最近在写一个ui界面, 从零开始学pyqt5, 太难了

Member
加入于:
帖子: 60
声望: 8

wangjiancc wrote:

H:\vnstudio\python.exe H:/vnstudio/Lib/site-packages/vnpy/app/ctastrategy/backtesting/run.py
2021-03-03 22:22:48,092 INFO: 注册日志事件监听
Exception in thread Thread-4:
Traceback (most recent call last):
File "H:\vnstudio\lib\threading.py", line 917, in _bootstrap_inner
self.run()
File "H:\vnstudio\lib\threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "H:\vnstudio\Lib\site-packages\vnpy\app\cta_backtester\engine.py", line 168, in run_backtesting
setting
File "H:\vnstudio\lib\site-packages\vnpy\app\cta_strategy\backtesting.py", line 211, in add_strategy
self, strategy_class.name, self.vt_symbol, setting
File "H:\vnstudio\lib\site-packages\vnpy\app\cta_strategy\strategies\KxMonitor.py", line 82, in init
self.even_engine = cta_engine.main_engine.event_engine
AttributeError: 'BacktestingEngine' object has no attribute 'main_engine'

Process finished with exit code 0

大佬,请问下这是什么错误?
看报错就是你没有传main_engine进去啊

Member
加入于:
帖子: 60
声望: 8

我用水平布局把下单撤单按钮组放到图表右边, 但是按钮太宽, 高度又太低, 显示不好, 我试了好多办法,比如把设置按钮的fixedsize, sizehint, 还尝试了设置布局的add_stretch, 都不管用, 我是个QT新手, 实在找不到办法了,求教

description

Member
加入于:
帖子: 60
声望: 8

大佬, 还有一个问题, K线图运行久了会报错, 我绘制的是Tick 图, 报错如下, 不知道咋解决
description

Member
avatar
加入于:
帖子: 420
声望: 175

守望长城2020-6-11-艾瑞巴蒂 wrote:

wangjiancc wrote:

H:\vnstudio\python.exe H:/vnstudio/Lib/site-packages/vnpy/app/ctastrategy/backtesting/run.py
2021-03-03 22:22:48,092 INFO: 注册日志事件监听
Exception in thread Thread-4:
Traceback (most recent call last):
File "H:\vnstudio\lib\threading.py", line 917, in _bootstrap_inner
self.run()
File "H:\vnstudio\lib\threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "H:\vnstudio\Lib\site-packages\vnpy\app\cta_backtester\engine.py", line 168, in run_backtesting
setting
File "H:\vnstudio\lib\site-packages\vnpy\app\cta_strategy\backtesting.py", line 211, in add_strategy
self, strategy_class.name, self.vt_symbol, setting
File "H:\vnstudio\lib\site-packages\vnpy\app\cta_strategy\strategies\KxMonitor.py", line 82, in init
self.even_engine = cta_engine.main_engine.event_engine
AttributeError: 'BacktestingEngine' object has no attribute 'main_engine'

Process finished with exit code 0

大佬,请问下这是什么错误?
看报错就是你没有传main_engine进去啊

策略中可以考虑回测的情况,另外回测是不允许显示K线图的,如果非要这么干,在策略中要判断是否运行在实盘或者回测环境,这可以通过获得engine的类型是否为

if self.engine.engine_type == EngineType.BACKTESTING:
   xxxxxx  放弃窗口K线图表
else:
   xxxxxx  创建窗口K线图表

的方法来进行规避错误的发生。

Member
avatar
加入于:
帖子: 420
声望: 175

守望长城2020-6-11-艾瑞巴蒂 wrote:

大佬, 还有一个问题, K线图运行久了会报错, 我绘制的是Tick 图, 报错如下, 不知道咋解决
description

看了你的vnpy的目录构成,貌似您用的版本还是很久以前的老版本了,至少不是最新版本。

"H:\vnstudio\lib\site-packages\vnpy\app\cta_strategy\backtesting.py"

如果是新的版本,应该是这样的:

"H:\vnstudio\lib\site-packages\vnpy_ctastrategy\backtesting.py"

由此推断你的pyqtgraph的版本也是老的版本。
随着vnpy的版本升级,pyqtgraph的版本也会采用新的版本,你升级到3.0及以后版本再试试看。

Member
加入于:
帖子: 60
声望: 8

hxxjava wrote:

守望长城2020-6-11-艾瑞巴蒂 wrote:

大佬, 还有一个问题, K线图运行久了会报错, 我绘制的是Tick 图, 报错如下, 不知道咋解决
description

看了你的vnpy的目录构成,貌似您用的版本还是很久以前的老版本了,至少不是最新版本。

"H:\vnstudio\lib\site-packages\vnpy\app\cta_strategy\backtesting.py"

如果是新的版本,应该是这样的:

"H:\vnstudio\lib\site-packages\vnpy_ctastrategy\backtesting.py"

由此推断你的pyqtgraph的版本也是老的版本。
随着vnpy的版本升级,pyqtgraph的版本也会采用新的版本,你升级到3.0及以后版本再试试看。

大佬, 这个 "H:\vnstudio\lib\site-packages\vnpy_ctastrategy\backtesting.py" 不是我的目录树, 不过我用的确实是老版本, 我先升级一下试试.
补充一下, 我是在no_ui的run.py里面跑的程序,添加了一组按钮来启动两个k线图表, 单个图表运行的时候比较稳定, 但是开两个图表的时候就容易闪退, 报错也是同样的, 特别是窗口切换的时候很容易闪退. 不过我还是先尝试升级一下pyqt的版本测试一下, 谢谢哈

Member
加入于:
帖子: 60
声望: 8

我升级了PyQt5了, 但是还是有这个问题, 这个问题是不定时出现的,我跑的是在线K线图
Traceback (most recent call last):
File "C:\vnstudio\lib\site-packages\pyqtgraph\GraphicsScene\GraphicsScene.py", line 162, in mouseMoveEvent
self.sendHoverEvents(ev)
File "C:\vnstudio\lib\site-packages\pyqtgraph\GraphicsScene\GraphicsScene.py", line 228, in sendHoverEvents
items = self.itemsNearEvent(event, hoverable=True)
File "C:\vnstudio\lib\site-packages\pyqtgraph\GraphicsScene\GraphicsScene.py", line 429, in itemsNearEvent
if shape.contains(item.mapFromScene(point)):
RuntimeError: wrapped C/C++ object of type PlotItem has been deleted

Member
加入于:
帖子: 60
声望: 8

守望长城2020-6-11-艾瑞巴蒂 wrote:

我升级了PyQt5了, 但是还是有这个问题, 这个问题是不定时出现的,我跑的是在线K线图
Traceback (most recent call last):
File "C:\vnstudio\lib\site-packages\pyqtgraph\GraphicsScene\GraphicsScene.py", line 162, in mouseMoveEvent
self.sendHoverEvents(ev)
File "C:\vnstudio\lib\site-packages\pyqtgraph\GraphicsScene\GraphicsScene.py", line 228, in sendHoverEvents
items = self.itemsNearEvent(event, hoverable=True)
File "C:\vnstudio\lib\site-packages\pyqtgraph\GraphicsScene\GraphicsScene.py", line 429, in itemsNearEvent
if shape.contains(item.mapFromScene(point)):
RuntimeError: wrapped C/C++ object of type PlotItem has been deleted

网上搜索下来, 问题说是C++的垃圾回收机制把某个对象意外删除了, 但是也找不到哪行代码出问题了

Member
加入于:
帖子: 60
声望: 8

在线版K线图的稳定性问题提升了一下, 分享一下心得: 原来是有些qt组件没有绑定父节点, 自己写的ui涉及到的组件较多, 必须为每个组件指定父节点, 不然会被C++的垃圾回收机制莫名回收掉, infiniteLine对象还是有时候会被系统回收掉, wrapped C/C++ object of type PlotItem has been deleted.. 现在还在排查问题

Member
avatar
加入于:
帖子: 11
声望: 0

谢谢巨佬分享!牛

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】