还在学用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 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦