有位网友让我用python实现R-Breaker策略,搜了一下:
这个策略荣登《Futures Truth Magazine》Top10最赚钱策略15年,但都是在2010年以前,现在怎么样不得而知。
其基本原理为:根据前一交易日的收盘价、最高价和最低价数据计算出六个价位,从大到小依次为:突破买入价、观察卖出价、反转卖出价、反转买入、观察买入价、突破卖出价。
先根据三个数据计算枢轴点,即三个数据的平均值。
pivot = (high+low+close)/3
再计算六个价位:
突破买入价
bBreak = high+2*(pivot-low)
观察卖出价
sSetup = pivot+(high-low)
反转卖出价
sEnter = 2pivot-low
反转买入价
bEnter = 2pivot-high
观察买入价
bSetup = pivot-(high-low)
突破卖出价
sBreak = low-2*(high-pivot)
追踪盘中价格走势,实时判断触发条件:
1.突破
空仓条件下,价格突破买入价,买入(期货是做多)。
空仓条件下,价格突破卖出价,不操作(期货是做空)。
2.反转
满仓(期货为持多单),当日内最高价超过观察卖出价后,盘中价格出现回落,且进一步跌破反转卖出价构成的支撑线时,卖出(期货为反手做空)。
持空单的略了。
开始干活,先用tushare获取数据,最小间隔是5分钟。而pyalgotrade默认的数据源格式的数据(雅虎金融,谷歌金融等4个)都只支持日线和周线数据。只能有更初级的GenericBarFeed,又参照网上资料试了半天。终于能让pyalgotrade跑起来了。
1 | # coding:utf-8 |
数据搞定了就开始写策略了,程序框架参考了本系列第一篇文章的代码,直接复制过来改。
这是一个日内策略,要在每次数据变更的时候判断是否到了买入/卖出点。然而判断依据又是根据上一个交易日的最高/最低/收盘价计算的六个指标。于是先建立一个类来处理指标计算,买入卖出点判断等。
1 | # 策略要计算的指标 |
而在pyalgotrade的策略类中,在onBar函数里每次更新数据都检查是否是下一个交易日了,如果是下一个交易日,就调用上面的updata函数重新计算六个指标。然后每次都判断是否到达买入卖出点,到达即全仓买入/卖出。
1 | # 策略类 |
其它代码不再赘述,可以看https://github.com/zwdnet/MyQuant/tree/master/45
参考:
1.https://zhuanlan.zhihu.com/p/81793766
我发文章的三个地方,欢迎大家在朋友圈等地方分享,欢迎点“在看”。
我的个人博客地址:https://zwdnet.github.io
我的知乎文章地址: https://www.zhihu.com/people/zhao-you-min/posts
我的微信个人订阅号:赵瑜敏的口腔医学学习园地