前言:在之前的文章中,我们学习了如何在币宽工具中进行双均线策略的回测,以及均线策略的优化。本次我们交流均线结合量能突破策略在数字货币中的效果。
如果对双均线策略的优缺点不太熟悉,可以参考之前的文章[color=rgba(0, 0, 0, 0)]量化课堂-技术指标之双均线。
均线属于趋势策略,在趋势中效果较好,但是在震荡市场中容易出现“假信号”,双均线策略会出现持续的回撤。由于市场价格是由资金驱动的,因此资金也会促使趋势的形成。因此,均线结合量能突破可以作为我们确认趋势确定的出发点。
策略说明:均线金叉后,量能突破设定的倍数,作为开仓买入条件。均线死叉作为卖出平仓条件。
回测交易币对BTC/USDT,回测平台是币宽(可以在官网www.nextfintech.io下载)。以下默认您已经初步学会如何使用币宽平台了。
策略相关说明:
- 回测时间:2018-01-01至2018-07-01
- K线频率:86400s
- 初始资金:1000 USDT
- 交易手续费率:0.15%
- 均线参数:快速5日均线,慢速20日均线
- 量能突破参数:2.5
- 回测交易所和币对:OKEX的EOS/USDT
- 开仓比例:0.7
策略代码如下:
- from __future__ import print_function, absolute_import
- from nf.api import *
- import numpy as np
- import talib as ta
- def init():
- #变量初始化
- global exchange #交易所
- global front #交易币对前项币
- global base #交易币对后项币
- global symbol #交易标的
- global freq #频率
- global trade
- global fast
- global slow
- global jincha
-
- exchange='OKEX'
- front='eos'
- base='usdt'
- symbol=get_symbol(market=exchange,front=front,rear=base)
- freq='86400s'
- trade=False
- fast=5
- slow=20
- jincha=False
- #订阅函数
- subscribe(symbols=symbol,frequency=freq,count=slow+1,wait_group=True)
- def on_bar(bars):
- global exchange #交易所
- global front #交易币对前项币
- global base #交易币对后项币
- global symbol #交易标的
- global freq #频率
- global trade
- global fast
- global slow
- global jincha
- data=context.data(symbol,freq,slow+1)
- if len(data)==slow+1:
- ma_fast=ta.MA(data['close'],fast)
- ma_slow=ta.MA(data['close'],slow)
- if ma_fast.iloc[-2]<ma_slow.iloc[-2] and ma_fast.iloc[-1]>ma_slow.iloc[-1]:
- jincha=True
- if ma_fast.iloc[-2]>ma_slow.iloc[-2] and ma_fast.iloc[-1]<ma_slow.iloc[-1]:
- jincha=False
- if jincha==True and data['volume'].iloc[-1]>2.5*np.mean(data['volume'].iloc[-5:-1]) and trade==False :
- vol_buy=get_positions(exchange,base)[0]['available']/data['close'].iloc[-1]*0.7
- print(bars[0]['eob'],'买入%.4f个'%vol_buy,front)
- order_volume(symbol,vol_buy,side=1,order_type=1,price=data['close'].iloc[-1])
- trade=True
- if jincha==False and trade==True :
- if len(get_positions(exchange,front))!=0:
- print(bars[0]['eob'],'清仓',front)
- order_volume(symbol,get_positions(exchange,front)[0]['available'],side=2,order_type=1,price=data['close'].iloc[-1])
- trade=False
- def on_execution_report(execrpt):
- print('打印交易回执:',execrpt)
-
- def on_error(code,info):
- print('错误代码:',code,'错误代码说明:',info)
- def on_backtest_finished(indicator):
- print('绩效对象打印:',indicator)
- if __name__ == '__main__':
- run(strategy_id='6495e5ba-acea-11e8-a46f-00ffa9185dbb',
- filename='main.py',
- mode=MODE_LIVE,
- token='6778ebc60a3b004bcc7286a5566a28df')
回测结果如下(所有结果按每日公允汇率币/USD结算):
累计收益率:41.07%
年化收益率:127.88%
基准收益率:-79.03%
最大回撤:34.07%
Alpha:1.34
Beta:0.11
从回测结果中可以看出,策略实现了较好的绝对收益和相对收益。结合下面的EOS/USDT的收盘价可以看出,均线结合量能突破策略抓住了2018年4月至2018年5月的上升趋势,在熊市中保持空仓。
接下来我们看一下均线结合量能突破策略在其他频率的K线上的效果。
回测参数如下:
1.回测时间:2018-06-01至2018-09-05
2.K线频率:3600s
3.初始资金:1000 USDT
4.交易手续费率:0.15%
5.均线参数:快速10日均线,慢速60日均线
6.量能突破参数:3
7.回测交易所和币对:OKEX的EOS/USDT
8.开仓比例:0.7
回测结果如下(所有结果按每日公允汇率币/USD结算):
累计收益率 :17.05%
年化收益率:89.92%
基准收益率:-1.71%
最大回撤:16.59%
Alpha:0.89
Beta:0.24
从回测结果中可以发现策略在绝对收益和相对收益方面效果还不错,回测区间共交易12次,其中盈利4次,亏损8次。但是在6月份出现了连续的回撤。这是由于这段时间,EOS/USDT处于横盘震荡阶段,均线系统出现错误的信号,因此出现连续的回撤。
策略优化:对震荡区间出现的错误信号采取止损方法对策略进行优化,止损价设置为开仓时的K线的最低价。
回测结果如下:
累计收益 率 :19.08%
年华 收益率 :105.02%
基准收益率:-1.71%
最大回撤:13.28%
Alpha:1.04
Beta:0.24
增加止损后,绝对收益率和年化收益率有所增加,最大回撤减小。
小结:均线结合量能策略相比均线可以更好的抓住趋势,减少震荡市中的连续回撤。在OKEX.eos_usdt中实现的不错的收益,读者有兴趣可以在其他的K线频率上进行回测,查看策略的效果。
声明:本文主要用于共同探讨和学习,请勿直接用于实盘交易。
后续将推出更多系列的量化策略,欢迎大家关注,共同交流。
未经本人同意,严禁转载。
福利时间到!
winter is coming
币圈寒冬进行时,少交易,多学习
币小宽专门给注册用户准备了【史上最强】量化资料大礼包!
礼包内含:
1. 定价89.00元《量化交易之路:用Python做股票量化分析 量化交易之路》
2. 定价99.00元的《Python与量化投资:从基础到实战》
3. 定价59.00元的《 量化炼金术:中低频量化交易策略研发 》
4. 定价35元的《金融数学:衍生产品定价引论》
5. 定价69元的《打开量化交易的黑箱》原书第二版
6. 定价79元的《区块链技术驱动金融》
7. 定价58元的《 区块链:从数字货币到信用社会》
8. 定价59元的《对冲之王:华尔街量化投资传奇》mobi版
9. 43篇海外优质量化paper
10.45篇券商量化金工研报
高清电子版PDF
另外还将单独包邮赠送
实体书《打开量化投资的黑箱|原书第二版》正版纸质书一本!
更多深度免费资料后续还将持续更新!
礼包申领扫描币宽小助手二维码