RQAlpha源代码解读(一)——事件驱动引擎(一)

这是一个解读RQAlpha源代码的系列,我会定期更新。RQAlpha的github地址为:https://github.com/ricequant/rqalpha 。 对于一个事件驱动型的量化回测框架,我一般是从其关于对事件的处理的代码开始分析的,以下按照这个逻辑对RQAlpha的源代码进行分析。

1. events.py

该py文件中定义了Event, EventBus, EVENT三个类和parse_event这一个函数,这些类和函数是构建事件驱动引擎的基础。

Event类

class Event(object):
    def __init__(self, event_type, **kwargs):
        self.__dict__ = kwargs
        self.event_type = event_type

    def __repr__(self):
        return ' '.join('{}:{}'.format(k, v) for k, v in self.__dict__.items())

Event类用于定义各类事件,一个事件有两个属性:事件的类型和事件的内容,event_type属性就代表事件的类型。关于事件的内容,这里设置得相当普适,事件的内容**kwargs的形式输入,这样的话就可以以多个实例属性的形式展现该事件的内容。
但这里需要注意的是,self.dict = kwargs和self.event_type = event_type这两个语句的顺序不能替换。我们知道__dict__表示的是类或实例的属性和方法(这里是实例),如果顺序替换,则self.__dict__中不会包含event_type,就会导致event_type属性不存在于实例中。下面以一个具体的例子展示Event类的使用:

class Event(object):
    def __init__(self, event_type, **kwargs):
        self.__dict__ = kwargs
        self.event_type = event_type
        
    def __repr__(self):
        return ' '.join('{}:{}'.format(k, v) for k, v in self.__dict__.items())
    
if __name__ == "__main__":
    bar = Event("bar", 		open=3645,high=3665,low=3620,close=3637,volume=39776543,openinterest=34555555342)
    print(
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值