没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
3页
好友提出要验证连续下跌买入止盈止损卖出策略,本文对该策略回测和实现做分析记录。 买入条件中,连续下跌定义为收盘价连续4日低于前1日的收盘价。卖出条件中,止盈率设置为10%,止损率设置为5%。回测初始资金100000元,单笔操作单位1000股,佣金千分之一,回测时间自2018年1月1日至2020年3月20日。 策略核心代码位于策略类的next方法中: def next(self): if self.orefs: # order列表,用于存储尚未执行完成的订单 return # 有尚未执行的订单 # 尚未进场
资源推荐
资源详情
资源评论
Python量化交易学习笔记(量化交易学习笔记(19))——连续下跌买入止盈止损卖出策略连续下跌买入止盈止损卖出策略
好友提出要验证连续下跌买入止盈止损卖出策略,本文对该策略回测和实现做分析记录。
买入条件中,连续下跌定义为收盘价连续4日低于前1日的收盘价。卖出条件中,止盈率设置为10%,止损率设置为5%。回测初始资金100000元,单笔操作单位1000股,佣金千分之
一,回测时间自2018年1月1日至2020年3月20日。
策略核心代码位于策略类的next方法中:
def next(self):
if self.orefs: # order列表,用于存储尚未执行完成的订单
return # 有尚未执行的订单
# 尚未进场
if not self.position:
# 获取近几日收盘价用于判断是否连续下跌
lastcloses = list()
for i in range(self.p.p_downdays + 1):
lastcloses.append(self.dataclose[-i])
# 连续N日下跌
if lastcloses == sorted(lastcloses):
# 计算买入报价跑p1,止损价p2,止盈价p3
close = self.dataclose[0] p1 = close * (1.0 - self.p.limit)
p2 = p1 - self.p.p_stoploss * close
p3 = p1 + self.p.p_takeprofit * close
# 计算订单有效期
valid1 = datetime.timedelta(self.p.limdays)
valid2 = valid3 = datetime.timedelta(self.p.limdays2)
# 使用bracket orders设置买入卖出
os = self.buy_bracket(
price=p1, valid=valid1,
stopprice=p2, stopargs=dict(valid=valid2),
limitprice=p3, limitargs=dict(valid=valid3),)
# 保存激活的的订单
self.orefs = [o.ref for o in os]
这里主要应用了backtrader的bracket order,它其实并不是1个订单,而是有3个订单构成:1个买单,1个止损卖单,1个止盈卖单。2个卖单就像是把买单用括号括起来一样,因此合
称为bracket order(括号订单)。我们所使用的buy_bracket方法遵循以下规则:
为了避免被分开执行,3个订单要被一起提交
2个卖单要作为买单的子订单
在买单执行前,2个卖单处于非激活状态
买单如果被取消,2个卖单也会随之被取消
买单被执行后,2个卖单均被激活
一旦两个卖单被激活,其中一个被执行或者被取消,另一个都将被自动取消。
buy_bracket方法中除了设置买入价、止损价、止盈价外,还设置了订单有效时间,如果订单在有效时间内未执行,则会过期失效。一般我们将买入有效期设置为3天以内,卖出有效
期设置为较长时间,以保证股票可以卖出。
回测000001后的最终资产为102781.90元,这里交易大小仅为1000股,所用资金仅为不到20000元,提高交易量,收益还是相当可观。
回测000002后的最终资产为96476.14元,亏损。
资源评论
weixin_38553837
- 粉丝: 3
- 资源: 954
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功