继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

开源量化回测框架backtrader技术教程1:简介

扫地僧2021
关注TA
已关注
手记 1
粉丝 0
获赞 0

还在学用python自己编写量化回测与交易框架吗?不要再浪费时间造轮子了,时间是最宝贵的。我认为利用现有本地化开源框架,直接进行策略编制和测试,而不是把时间浪费在各种IT基础功能上,是最快速进入量化研究的方法。

现在有不少很好的python开源量化框架,其中backtrader是最容易入门,而功能又非常强大的,架构简洁优雅,编程水平极高。它帮你完成各种IT基础设施功能,你只需专注于交易策略的设计与编制。

下面,我们来看一个所有开源量化框架都会实现的单股票双均线策略,操作一支股票,使用日线数据,该策略基本思想是短期均线上穿长期均线(金叉),下穿长期均线(死叉)卖出。

在backtrader中该策略的实现代码如下,看注释很容易理解其思路。

# 创建双均线策略类
class SmaCross(bt.Strategy):
    # 定义参数
    params = dict(
        fast_period=5,  # 快速移动平均期数
        slow_period = 10,)  # 慢速移动平均期数

    def __init__(self):
        # 快速移动平均线指标
        fastMA = bt.ind.MovingAverageSimple(period=self.params.fast_period)

        # 慢速移动平均线指标
        slowMA = bt.ind.MovingAverageSimple(period=self.params.slow_period)

        # 移动均线交叉信号指标
        self.crossover = bt.ind.CrossOver(fastMA, slowMA)        

        self.order = None    # 设置订单引用,用于取消以往发出的尚未执行的订单


    def next(self): # 每个新bar结束时触发调用一次,相当于其他框架的 on_bar()方法

        self.cancel(self.order) # 取消以往未执行订单

        if not self.position:  # 还没有仓位,才可以买
            if self.crossover > 0:  # 金叉           
                self.order = self.buy(size=100) # 创建市价买单,该单会在次日以开盘价成交

        # 已有仓位,才可以卖
        elif self.crossover < 0:  # 死叉          
            self.order = self.sell(size=100) # 创建市价卖单,该单会在次日以开盘价成交


看过其他python开源量化平台或框架的读者,可以把其他框架实现同样逻辑的代码拿来比较一下,看看哪个更加简洁自然。

还没有入坑backtrader的朋友也可根据本例子评估是否喜欢backtrader的风格,做出是否入坑的决定。



打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP