vnpy+缠论测试笔记1: chart绘图标识顶底分型

本文记录了使用vnpy加载数据并利用缠论理论在K线图上标识顶底分型的过程。首先,加载并解析沪深300主力指数合约的分钟线数据,然后通过Widget和BarManager类更新历史数据。接着,自定义TopBottomPattern类,重写绘图方法以判断和标注顶底分型。最后,展示了初步识别结果,未来计划进一步优化避免分型重合的问题。
摘要由CSDN通过智能技术生成

加载数据

    bars = database_manager.load_bar_data(
        "IF888",
        exchange = Exchange.CFFEX,
        interval=Interval.MINUTE,
        start=datetime(2019, 1, 1),
        end=datetime(2019, 1, 17)
    )

从本地数据库(vnpy运行目录下的.db数据库文件)读取沪深300主力指数合约分钟线数据,存入bars,bars为list,每个元素均为BarData数据结构。

	widget = NewChartWidget()
    
    widget.add_plot("candle", hide_x_axis=True)
    widget.add_plot("volume", maximum_height=200)
    
    widget.add_item(CandleItem, "candle", "candle")
    widget.add_item(VolumeItem, "volume", "volume")
    widget.add_item(TopBottomPattern, "topbottom", "candle")
    
    widget.add_cursor()

    n = len(bars)
    history = bars[:n]
    new_data = bars[n:]

    widget.update_history(history)

NewChartWidget继承了Widget类,此处与Widget类的区别可忽略。add_plot方法是在窗体中创建绘图区,add_item方法是向指定绘图区中加入ChartItem对象。例如,widget.add_item(CandleItem, “candle”, “candle”) 即是将一个名为candle的CandleItem对象,加载到名为candle的绘图区中。add_item的入参依次为,ChartItem类,对象名称item_name, 绘图区名称plot_name。

上例中,history即为bars的全部数据(1/1至1/17期货指数分钟线)。

widget.update_history(history) 为加载数据的语句,接下来看具体的加载过程和调用关系。

数据加载过程和调用关系

查看Widget类的update_history方法:

    def update_history(self, history: List[BarData]) -> None:
        """
        Update a list of bar data.
        """
        self._manager.update_history(history)

        for item in self._items.values():
            item.update_history(history)

        self._update_plot_limits()

        self.move_to_right()

入参为BarData组成的list,本例中即为history(全部数据)。该方法实际上调用了self._manager的update_history方法。self._manager是Widget类内部定义的BarManager对象:

self._manager: BarManager = BarManager()

继续查看BarManager类的update_history方法:

    def update_history(self, history: List[BarData]) -> None:
        """
        Update a list of bar data.
        """
        # Put all new bars into dic
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值