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

你快成图表专家了!

Member
avatar
加入于:
帖子: 7
声望: 3

hxxjava wrote:

你快成图表专家了!
谢谢。这两天认真学习了您的帖子,收获很大。工欲善其事必先利其器,绘制好了实时K线图和所用指标,就可以方便知道每笔交易的入场点和出场点,便于复盘和改进策略了。

Member
avatar
加入于:
帖子: 9
声望: 1

请教在苹果mac os上面macd图的比例缩放似乎不对,绿柱完全没有,红柱显示一小部分,快慢线经常跑出范围,大概是什么地方出了问题?

description

Member
avatar
加入于:
帖子: 9
声望: 1

经测试,把main函数里的dynamic修改为TRUE,动态进数据macd图就能够正常显示了,虽然偶尔有些快慢线还会跑外面去。感觉这一块应该是哪里计算出了点小问题

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

人家 wrote:

请教在苹果mac os上面macd图的比例缩放似乎不对,绿柱完全没有,红柱显示一小部分,快慢线经常跑出范围,大概是什么地方出了问题?

description
我回入回测K线图后,也有同样的问题。我看到高度范围一直是0-1,应该是显示范围不对,不知道在什么地方改?

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

yyds 马克一下

Banned
avatar
加入于:
帖子: 1
声望: 0

Traceback (most recent call last):
File "C:\Users\zx\Documents\repository\vnpy-master\examples\trade\kx_chart.py", line 306, in <module>
widget = NewChartWidget(event_engine = event_engine)
File "C:\Users\zx\Documents\repository\vnpy-master\examples\trade\kx_chart.py", line 83, in init
self.add_item(OrderItem, "order", "candle")
File "C:\veighna_studio\lib\site-packages\vnpy\chart\widget.py", line 123, in add_item
item = item_class(self._manager)
File "C:\Users\zx\Documents\repository\vnpy-master\examples\trade\chart_items.py", line 554, in init
super(CandleItem,self).init(manager)
File "C:\veighna_studio\lib\site-packages\vnpy\chart\item.py", line 18, in init
super().init()
File "C:\veighna_studio\lib\site-packages\pyqtgraph\graphicsItems\GraphicsObject.py", line 17, in init
QtGui.QGraphicsObject.init(self, *args)
RuntimeError: You can't initialize an object twice!
程序报错了,楼主!不知道是哪里出了,请问楼主能帮我检查一下吗

Member
avatar
加入于:
帖子: 419
声望: 170

知道,是因为3.0版本升级,导致OrderItem和TradeItem的多继承出了问题。
目前没有时间,等有空再重写这两个主图组件就可以了。

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

小鼠之森 wrote:

Traceback (most recent call last):
File "C:\Users\zx\Documents\repository\vnpy-master\examples\trade\kx_chart.py", line 306, in <module>
widget = NewChartWidget(event_engine = event_engine)
File "C:\Users\zx\Documents\repository\vnpy-master\examples\trade\kx_chart.py", line 83, in init
self.add_item(OrderItem, "order", "candle")
File "C:\veighna_studio\lib\site-packages\vnpy\chart\widget.py", line 123, in add_item
item = item_class(self._manager)
File "C:\Users\zx\Documents\repository\vnpy-master\examples\trade\chart_items.py", line 554, in init
super(CandleItem,self).init(manager)
File "C:\veighna_studio\lib\site-packages\vnpy\chart\item.py", line 18, in init
super().init()
File "C:\veighna_studio\lib\site-packages\pyqtgraph\graphicsItems\GraphicsObject.py", line 17, in init
QtGui.QGraphicsObject.init(self, *args)
RuntimeError: You can't initialize an object twice!
程序报错了,楼主!不知道是哪里出了,请问楼主能帮我检查一下吗

class TradeItem(CandleItem,ScatterPlotItem): 
    """
    成交单绘图部件
    """
    def __init__(self, manager: BarManager):
        """"""
        #ScatterPlotItem.__init__(self)
        # CandleItem.__init__(self,manager)
        # super(TradeItem,self).__init__(manager)
        super().__init__(manager)

新版本多继承改成super继承,不然会实例化两次,然后把candleitem换到前面,让他先找candleitem就可以了。 oderitem也一样

另外谢谢大大分享

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

人家 wrote:

经测试,把main函数里的dynamic修改为TRUE,动态进数据macd图就能够正常显示了,虽然偶尔有些快慢线还会跑外面去。感觉这一块应该是哪里计算出了点小问题
我也是mac 情况和你一样

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

小虾米 wrote:

小鼠之森 wrote:

Traceback (most recent call last):
File "C:\Users\zx\Documents\repository\vnpy-master\examples\trade\kx_chart.py", line 306, in <module>
widget = NewChartWidget(event_engine = event_engine)
File "C:\Users\zx\Documents\repository\vnpy-master\examples\trade\kx_chart.py", line 83, in init
self.add_item(OrderItem, "order", "candle")
File "C:\veighna_studio\lib\site-packages\vnpy\chart\widget.py", line 123, in add_item
item = item_class(self._manager)
File "C:\Users\zx\Documents\repository\vnpy-master\examples\trade\chart_items.py", line 554, in init
super(CandleItem,self).init(manager)
File "C:\veighna_studio\lib\site-packages\vnpy\chart\item.py", line 18, in init
super().init()
File "C:\veighna_studio\lib\site-packages\pyqtgraph\graphicsItems\GraphicsObject.py", line 17, in init
QtGui.QGraphicsObject.init(self, *args)
RuntimeError: You can't initialize an object twice!
程序报错了,楼主!不知道是哪里出了,请问楼主能帮我检查一下吗

class TradeItem(CandleItem,ScatterPlotItem): 
    """
    成交单绘图部件
    """
    def __init__(self, manager: BarManager):
        """"""
        #ScatterPlotItem.__init__(self)
        # CandleItem.__init__(self,manager)
        # super(TradeItem,self).__init__(manager)
        super().__init__(manager)

新版本多继承改成super继承,不然会实例化两次,然后把candleitem换到前面,让他先找candleitem就可以了。 oderitem也一样

另外谢谢大大分享

这个有问题,虽然能跑出来,但是trade data没有画出来, 让他先继承 ScatterPlotItem的话
在实例化 NewChartWidget的时候会报错这个

 File "/Users/yangke/vnpy-3.0.0/examples/cta_backtesting/kchart_analysis_hxx.py", line 293, in <module>
    widget = NewChartWidget(event_engine = event_engine)
  File "/Users/yangke/vnpy-3.0.0/examples/cta_backtesting/kchart_analysis_hxx.py", line 102, in __init__
    self.add_item(TradeItem, "trade", "candle")
  File "/Users/yangke/opt/anaconda3/envs/vnpy3/lib/python3.10/site-packages/vnpy/chart/widget.py", line 123, in add_item
    item = item_class(self._manager)
  File "/Users/yangke/opt/anaconda3/envs/vnpy3/lib/python3.10/site-packages/vnpy/chart/chart_items.py", line 528, in __init__
    super().__init__(manager)
  File "/Users/yangke/opt/anaconda3/envs/vnpy3/lib/python3.10/site-packages/pyqtgraph/graphicsItems/ScatterPlotItem.py", line 441, in __init__
    self.setData(*args, **kargs)
  File "/Users/yangke/opt/anaconda3/envs/vnpy3/lib/python3.10/site-packages/pyqtgraph/graphicsItems/ScatterPlotItem.py", line 499, in setData
    self.addPoints(*args, **kargs)
  File "/Users/yangke/opt/anaconda3/envs/vnpy3/lib/python3.10/site-packages/pyqtgraph/graphicsItems/ScatterPlotItem.py", line 537, in addPoints
    numPts = len(kargs['spots'])
TypeError: object of type 'BarManager' has no len()
Member
avatar
加入于:
帖子: 1
声望: 0

小虾米 wrote:

小虾米 wrote:

小鼠之森 wrote:

Traceback (most recent call last):
File "C:\Users\zx\Documents\repository\vnpy-master\examples\trade\kx_chart.py", line 306, in <module>
widget = NewChartWidget(event_engine = event_engine)
File "C:\Users\zx\Documents\repository\vnpy-master\examples\trade\kx_chart.py", line 83, in init
self.add_item(OrderItem, "order", "candle")
File "C:\veighna_studio\lib\site-packages\vnpy\chart\widget.py", line 123, in add_item
item = item_class(self._manager)
File "C:\Users\zx\Documents\repository\vnpy-master\examples\trade\chart_items.py", line 554, in init
super(CandleItem,self).init(manager)
File "C:\veighna_studio\lib\site-packages\vnpy\chart\item.py", line 18, in init
super().init()
File "C:\veighna_studio\lib\site-packages\pyqtgraph\graphicsItems\GraphicsObject.py", line 17, in init
QtGui.QGraphicsObject.init(self, *args)
RuntimeError: You can't initialize an object twice!
程序报错了,楼主!不知道是哪里出了,请问楼主能帮我检查一下吗

class TradeItem(CandleItem,ScatterPlotItem): 
    """
    成交单绘图部件
    """
    def __init__(self, manager: BarManager):
        """"""
        #ScatterPlotItem.__init__(self)
        # CandleItem.__init__(self,manager)
        # super(TradeItem,self).__init__(manager)
        super().__init__(manager)

新版本多继承改成super继承,不然会实例化两次,然后把candleitem换到前面,让他先找candleitem就可以了。 oderitem也一样

另外谢谢大大分享

这个有问题,虽然能跑出来,但是trade data没有画出来, 让他先继承 ScatterPlotItem的话
在实例化 NewChartWidget的时候会报错这个

 File "/Users/yangke/vnpy-3.0.0/examples/cta_backtesting/kchart_analysis_hxx.py", line 293, in <module>
    widget = NewChartWidget(event_engine = event_engine)
  File "/Users/yangke/vnpy-3.0.0/examples/cta_backtesting/kchart_analysis_hxx.py", line 102, in __init__
    self.add_item(TradeItem, "trade", "candle")
  File "/Users/yangke/opt/anaconda3/envs/vnpy3/lib/python3.10/site-packages/vnpy/chart/widget.py", line 123, in add_item
    item = item_class(self._manager)
  File "/Users/yangke/opt/anaconda3/envs/vnpy3/lib/python3.10/site-packages/vnpy/chart/chart_items.py", line 528, in __init__
    super().__init__(manager)
  File "/Users/yangke/opt/anaconda3/envs/vnpy3/lib/python3.10/site-packages/pyqtgraph/graphicsItems/ScatterPlotItem.py", line 441, in __init__
    self.setData(*args, **kargs)
  File "/Users/yangke/opt/anaconda3/envs/vnpy3/lib/python3.10/site-packages/pyqtgraph/graphicsItems/ScatterPlotItem.py", line 499, in setData
    self.addPoints(*args, **kargs)
  File "/Users/yangke/opt/anaconda3/envs/vnpy3/lib/python3.10/site-packages/pyqtgraph/graphicsItems/ScatterPlotItem.py", line 537, in addPoints
    numPts = len(kargs['spots'])
TypeError: object of type 'BarManager' has no len()

hello,我这也遇到同样的问题了,candleitem放在ScatterPlotItem前面,运行不报错,scatter有数据,但是绘制不出来。ScatterPlotItem放前面会报错object of type 'BarManager' has no len()

请教各位大佬,有解决方案么

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

沪公网安备 31011502017034号

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