
本节分享一下如何开发一个年复合收益率超过180%的策略。
我们用一个比较常见的思路:快慢移动平均线线来设计一个策略,当然移动端平均线有很多种类,这里我们使用(TEMA)三重移动平均线,TEMA对价格的变化通常比传统的MA&EMA反应更快,因为在计算的时候已经减去滞后的变量。
策略分析
1、上升:快线(37 tema)穿过慢线(74 tema)

快线穿过慢线,token价格进入上升通道
2、下跌通道:慢线(74 tema)穿过快线(37 tema)

慢线穿过快线,token价格进入下降通道
通过以上2个场景,证实:快慢线策略是可以抓住价格的上升和下降趋势。
接着我们再来看一个异常场景:

红框截图部分,我们会发现快线围绕慢线频繁上下穿越,这是因为这段时间价格处于一个震荡时期,导致token价格变化不大,价格的小幅震荡都会导致快线频繁穿越慢线。
因此如果我们用单条快慢线策略会导致我们的策略频繁止损或开单,导致策略出现较大损失。
策略优化
1、均线策略优化

上图中,我们又加入了2条均线(117 tema&150 tema)。
37 tema&74 tema 在短期震荡的场景 很难识别 价格的趋势。我们加入2条时间维度更长的均线;所以我们判断策略可以变为:
# 上升通道判断:
37 tema > 74 tema & 117 tema > 150 tema
# 下跌通道判断:
37 tema < 74 tema & 117 tema < 150 tema
因此我们可以避免由于短期价格震荡导致的单条均线策略无法有效判断价格的趋势。
2、均线参数调优
接着我们要思考第二个问题,策略面向的不是一个交易对,且长均线具体使用多少时间周期的均线?117天、150天 还是 300天,到底哪个周期是目前交易对最优的?
这个问题我们可以抽象一下:
- 1、我们需要设置n条均线
- 2、均线的周期设置为m天
接下来就是参数组合的问题:
# buy_ma_count:买入的n条均线 buy_ma_gap:买入的均线周期
buy_ma_count = IntParameter(1, count_max, default=7, space="buy")
buy_ma_gap = IntParameter(1, gap_max, default=7, space="buy")
# sell_ma_count:卖出的n条均线 sell_ma_gap:卖出的均线周期
sell_ma_count = IntParameter(1, count_max, default=7, space="sell")
sell_ma_gap = IntParameter(1, gap_max, default=94, space="sell")
接下来交给超参数调优模块:
freqtrade hyperopt --config user_data/config.json --hyperopt-loss SharpeHyperOptLossDaily --strategy MultiMaStrategy -e 200 --timerange 20220101-20220601
算法通过200epoch后,我们会得到一个收益相对较高的参数组合:
# Buy hyperspace params:
buy_params = {
"buy_ma_count": 15, # 设置15条买入均线
"buy_ma_gap": 37, # 均线买入周期37天
}
# Sell hyperspace params:
sell_params = {
"sell_ma_count": 20,# 设置20条卖出均线
"sell_ma_gap": 53,# 卖出均线周期为53天
}
3、策略收益
既然最优参数&策略已经确定,我们来看一下多均线回归策略的收益:


回测结果:
- 半年回测收益率:53.71%
- 年度复合收益率(CAGR):182.7%
- 收益最高的交易对:SHIB/USDT 67.74%
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/46775
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!