为了账号安全,请及时绑定邮箱和手机立即绑定

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

还在学用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的风格,做出是否入坑的决定。



点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消