自适应考夫曼移动平均线趋势跟踪策略


创建日期: 2024-01-03 16:01:20 最后修改: 2024-01-03 16:01:20
复制: 0 点击次数: 375
1
关注
1127
关注者

自适应考夫曼移动平均线趋势跟踪策略

概述

该策略利用自适应移动平均线指标考夫曼自适应移动平均线(KAMA)来跟踪价格趋势,实现低买高卖,获利。

策略原理

考夫曼自适应移动平均线(KAMA)指标的计算公式为:

nAMA = nz(nAMA[1]) + nsmooth * (Close - nz(nAMA[1]))

其中:

nsmooth = (nefratio * (nfastend - nslowend) + nslowend)^2

nefratio = nsignal / nnoise 

nsignal = |Close - Close[Length]|

nnoise = sum(|Close - Close[1]|, Length)

nfastend = 0.666

nslowend = 0.0645

该指标综合考虑了市场波动性和价格变化趋势,可以更快地跟踪价格趋势。具体来说:

  1. 当市场波动较小时,nsmooth 接近 nslowend,KAMA 线变化缓慢,抑制市场噪音。
  2. 当市场波动加大和出现趋势时,nsmooth 接近 nfastend,KAMA 线快速变化,跟踪趋势。

通过比较价格和 KAMA 的关系,可以判断价格的趋势方向,以此来决定做多做空。

策略优势

该策略最大的优势在于利用自适应移动平均线指标跟踪价格趋势变化,可以有效减少噪音的影响,跟踪效果好。具体优势如下:

  1. KAMA指标抑制市场噪音,可以减少不必要的交易次数组合。
  2. KAMA指标可以快速响应价格变化趋势,追踪效果好。
  3. 策略决策规则简单清晰,容易理解和实现。
  4. 可配置反向交易,适应不同市场环境。

策略风险

该策略也存在一些风险:

  1. 在震荡行情中,KAMA指标可能出现误差信号。可通过调整参数优化指标效果。
  2. 跟踪延迟存在,可能错过短期价格反转。可酌情结合其他指标诊断。
  3. 未考虑交易费用和滑点,实盘效果会弱于回测。

策略优化方向

该策略还可以从以下几个方面进行优化:

  1. 优化KAMA参数,提高指标的跟踪灵敏度。
  2. 增加止损机制,控制单笔交易的最大损失。
  3. 结合其它指标过滤信号,提高决策的准确性。
  4. 添加重新入场机制,进一步跟踪趋势。

总结

本策略利用考夫曼自适应移动平均线指标跟踪价格趋势,决策规则简单清晰,实盘操作容易。该指标抑制噪音的同时快速响应价格变化,跟踪效果良好,是一个值得推荐的趋势跟踪策略。

策略源码
/*backtest
start: 2023-12-03 00:00:00
end: 2024-01-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 25/08/2017
// Everyone wants a short-term, fast trading trend that works without large
// losses. That combination does not exist. But it is possible to have fast
// trading trends in which one must get in or out of the market quickly, but
// these have the distinct disadvantage of being whipsawed by market noise
// when the market is volatile in a sideways trending market. During these
// periods, the trader is jumping in and out of positions with no profit-making
// trend in sight. In an attempt to overcome the problem of noise and still be
// able to get closer to the actual change of the trend, Kaufman developed an
// indicator that adapts to market movement. This indicator, an adaptive moving
// average (AMA), moves very slowly when markets are moving sideways but moves
// swiftly when the markets also move swiftly, change directions or break out of
// a trading range.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Kaufman Moving Average Adaptive (KAMA)", shorttitle="Kaufman Moving Average Adaptive (KAMA)", overlay = true)
Length = input(21, minval=1)
xPrice = close
xvnoise = abs(xPrice - xPrice[1])
nfastend = 0.666
nslowend = 0.0645
reverse = input(false, title="Trade reverse")
nsignal = abs(xPrice - xPrice[Length])
nnoise = sum(xvnoise, Length)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
nAMA = nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))
pos = iff(close[1] > nAMA, 1,
	   iff(close[1] < nAMA, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )    
plot(nAMA, color=blue, title="KAMA")
更多内容