R-Breaker策略

本文提供了一个用vn.py来编写R-breaker交易策略的示例。只提供一个参考模板,并不能直接进入市场进行交易。感谢‘爱谁谁’在维恩的派论坛里的分享!

策略介绍

R-breaker策略是一种短线交易策略,结合了趋势和反转两种交易方式。

策略逻辑

周期:1min、5min

1. 根据前一个交易日的收盘价、最高价、最低价计算出如下6个价格,以此来形成当前交易日盘中交易的触发条件。

  • 突破买入价(buy_break)
  • 观察卖出价(sell_setup)
  • 反转卖出价 (sell_enter)
  • 反转买入价(buy_enter)
  • 观察买入价(buy_setup)
  • 突破卖出价(sell_break)

2. 交易规则:

反转:

  • 持多单,当日内最高价超过观察卖出价后,盘中价格出现回落,且进一步跌破反转卖出价构成的支撑线时,采取反转策略,即在该点位反手做空;
  • 持空单,当日内最低价低于观察买入价后,盘中价格出现反弹,且进一步超过反转买入价构成的阻力线时,采取反转策略,即在该点位反手做多;

突破:

  • 空仓,如果盘中价格超过突破买入价,则采取趋势策略,即在该点位开仓做多;
  • 空仓,如果盘中价格跌破突破卖出价,则采取趋势策略,即在该点位开仓做空;

是否隔夜留仓?

  • R-Breaker 是日内交易策略,若某个交易日已开仓且收盘前仍未触发平仓信号,则在收盘时强行平仓,不隔夜留仓以避免跳空的风险。

策略代码

信号生成部分:

if bar.close > self.Bbreak: self.judge_signal_current = 3 #反转趋势回落

elif bar.close > self.Ssetup: self.judge_signal_current = 2 elif bar.close < self.Senter and self.judge_signal_current == 2: self.judge_signal_current = 1 elif bar.close < self.Bsetup : self.judge_signal_current = -2 elif bar.close > self.Benter and self.judge_signal_current == -2: self.judge_signal_current = -1 #突破了底线 elif bar.close < self.Sbreak: self.judge_signal_current = -3

处理交易信号:

if self.pos ==0 : #处理信号为3的情况 if self.judge_signal_current == 3 or self.judge_signal_current == -1 : vtOrderID = self.buy(bar.close+2, self.fixedSize, stop=True) self.orderList.append(vtOrderID) self.judge_signal_current = 0 #处理 信号为-3的情况 elif self.judge_signal_current == -3 or self.judge_signal_current == 1 : vtOrderID = self.short(bar.close-2, self.fixedSize, stop=True) self.orderList.append(vtOrderID)

self.judge_signal_current = 0

#处理持仓大于零 elif self.pos > 0 : #先平仓(后反向开仓) : if self.judge_signal_current == 1 : vtOrderID = self.sell(bar.close * 0.99, abs(self.pos)) self.orderList.append(vtOrderID) vtOrderID = self.short(bar.close-2, self.fixedSize, stop=True) self.orderList.append(vtOrderID) self.judge_signal_current = 0

#处理持仓小于零 elif self.pos < 0 : #先平仓后开仓:cover+buy if self.judge_signal_current == -1 : vtOrderID = self.cover(bar.close * 1.01, abs(self.pos)) self.orderList.append(vtOrderID) vtOrderID = self.buy(bar.close+2, self.fixedSize, stop=True) self.orderList.append(vtOrderID) self.judge_signal_current = 0

收盘前平仓

if self.pos > 0: vtOrderID = self.sell(bar.close * 0.99, abs(self.pos)) self.orderList.append(vtOrderID) self.judge_signal_current = 0 elif self.pos < 0: vtOrderID = self.cover(bar.close * 1.01, abs(self.pos)) self.orderList.append(vtOrderID) self.judge_signal_current = 0

主要展示了onBar那一部分代码,完整代码请点击‘阅读原文’跳转到维恩的派论坛下载附件。

注:

  1. 里面的记录订单编号是基于vn.py1.7之前的版本写的,主要用于按照订单编号来撤单;
  2. 只是一个示例策略,不做任何实盘建议。用前请三思,不承担任何责任。

参考文献:

R-Breaker 策略优化表现

http://www.sohu.com/a/120307567_505915

点击“阅读原文”查看原贴!欢迎大家把使用过程中遇到的问题或者摸索的经验分享到「维恩的派」论坛!

基于python的开源交易平台开发框架。截止目前,vn.py项目在Github上的Star已经达到5787,量化交易类开源项目第1,量化类项目第3(1、2依旧分别是Zipline和TuShare)。

项目官网:http://www.vnpy.org

论坛地址:www.vnpie.com

知乎专栏:https://zhuanlan.zhihu.com/vn-py

Developed by Traders,

for Traders

本文分享自微信公众号 - 维恩的派VNPIE(vn-pie)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • vn.py入门-低买高卖示例

    本文用一个例子来介绍vnpy的用法。从项目创建开始,到一个简单策略的设计。 这个例子连接到CTP接口,每秒检查一下目标合约的价格,若低于指定价格则买入,若高于指...

    用Python的交易员
  • 如何用vn.py做隔夜交易?

    本文提供了一个每个交易日开盘前不用重连CTP的方法。如果不是特殊需求,强烈建议每天盘前重启程序。感谢viponedream在维恩的派论坛里的分享!

    用Python的交易员
  • CTP接口入门

    本文主要面向有C++基础,并且想用C++来做程序化交易的用户。 主要介绍了CTP的简单使用方式以及在使用过程中易遇到的‘坑’,并附上一些代码帮助学习。

    用Python的交易员
  • 从PEP-8学习Python编码风格

    Python3中应当总是使用UTF-8。(Python2使用ASCII。)在使用了规定编码后不需要再声明文件编码。

    py3study
  • pygame-KidsCanCode系列jumpy-part13-改进跳跃

    这节研究下跳跃如何做得更自然,先看看之前的跳跃有什么问题,我们把settings.py里的初始化参数调整下:

    菩提树下的杨过
  • DBSCAN算法的Python实现

    当我傻傻的用python写DBSCAN,我才突然想起来在scikit-learn中有DBSCAN,可以直接调用啊,我本来想要放弃快完成的代码,但是我想我可以发博...

    张凝可
  • PaddlePaddle版Flappy-Bird—使用DQN算法实现游戏智能

    刚刚举行的 WAVE SUMMIT 2019 深度学习开发者峰会上,PaddlePaddle 发布了 PARL 1.1 版本,这一版新增了 IMPALA、A3C...

    用户1386409
  • python第四十二课——__str__(self)函数

    4.__str__(self): 作用: 创建完对象,直接打印对象名/引用名我们得到的是对象的内存信息(十六进制的地址信息), 这串数据我们程序员并不关心...

    hankleo
  • iOS框架·Masonry源码深度解析及学习启示:设计模式与链式编程思想

    可见,系统传统的代码布局有点繁琐。为了简化上述传统布局代码,被广泛应用的第三方框架 Masonry 对AutoLayout 进行了封装,Swift版则是 Sna...

    陈满iOS
  • iOS自动打开闪光灯

    czjwarrior

扫码关注云+社区

领取腾讯云代金券