楼主: qtbgoo
2004 0

[交易平台及行情软件] backtrader极简的双均线策略代码,与其他平台的比较:单股 [推广有奖]

  • 0关注
  • 2粉丝

大专生

20%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
4.2923
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
307 点
帖子
23
精华
0
在线时间
41 小时
注册时间
2015-11-16
最后登录
2022-12-9

楼主
qtbgoo 在职认证  发表于 2021-1-11 09:24:52 |只看作者 |坛友微信交流群|倒序 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

我个人认为在目前的python开源量化框架或平台中,backtrader的设计架构是最简洁自然的,很容易入门。我们来看一个所有开源量化框架都会实现的单股票双均线策略,在backtrader中是如何实现的,代码如下,看注释很容易理解。

假设操作一支股票,使用日线数据,该策略基本思想是短期均线上穿长期均线(金叉),下穿长期均线(死叉)卖出。

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

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

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

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

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


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

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

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

  20.         # 已有仓位,才可以卖
  21.         elif self.crossover < 0:  # 死叉         
  22.            self.order = self.sell(size=100) # 创建市价卖单,该单正常应该在次日开盘以开盘价成交
复制代码

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

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

扫地僧backtrader给力教程


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:trader Trade Back 双均线 der

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 11:34