
该策略的主要思想是利用移动平均线和布林带,对价格趋势进行判断和交易信号产生。具体来说,首先计算出一定周期的平均真实波动范围ATR,然后结合最高价和最低价得到限制通道。如果价格突破该通道,则让close价格等于通道价格。之后对限制后的close价格求移动平均线,再在其上下画布林带,形成交易信号。当价格突破布林带上轨时做多,突破布林带下轨时做空。
该策略首先计算出ATR波动范围,然后与最高价和最低价结合,得到限制通道。只有当价格突破该通道时,close价格才会被限制在通道价格。之后对限制后的close价格求移动平均线,这条移动平均线被称为趋势交易者平均线(Trend Trade AVR)。该移动平均线反映了价格的中长期趋势方向。最后,在趋势交易者平均线上下各画一条平行线,作为布林带上下轨。当价格突破布林带上轨时产生做多信号,突破布林带下轨时产生做空信号。
该策略判断趋势的核心在于趋势交易者平均线,它体现了中长期趋势方向。布林带的作用则是过滤掉部分假突破,使交易信号更加可靠。整个策略结合趋势跟踪和突破判断,形成较强的趋势系统。
对策: 1. 可适当缩短持仓周期,及时止损 2. 优化参数,使信号具有一定 buffer 3. 利用历史数据和实盘优化参数
该策略整体是一个较强的趋势跟踪系统。它能在中长线判断市场趋势,并结合布林带产生交易信号。通过参数优化,能获得稳定的超额收益。但也需要注意风险控制,避免长期持有时遭遇重大事件导致的亏损。总的来说,该策略值得进一步研究和优化,以获得长期持续的alpha。
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 16/10/2018
// This is plots the indicator developed by Andrew Abraham
// in the Trading the Trend article of TASC September 1998
// It was modified, result values wass averages.
// And draw two bands above and below TT line.
////////////////////////////////////////////////////////////
strategy(title="Trend Trader Bands Backtest", overlay = true)
Length = input(21, minval=1),
LengthMA = input(21, minval=1),
BandStep = input(20),
Multiplier = input(3, minval=1)
reverse = input(false, title="Trade reverse")
avgTR = wma(atr(1), Length)
highestC = highest(Length)
lowestC = lowest(Length)
hiLimit = highestC[1]-(avgTR[1] * Multiplier)
loLimit = lowestC[1]+(avgTR[1] * Multiplier)
ret = 0.0
ret := iff(close > hiLimit and close > loLimit, hiLimit,
iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0)))
nResMA = ema(ret, LengthMA)
pos = 0.0
pos := iff(close < nResMA - BandStep , -1,
iff(close > nResMA + BandStep, 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 )
barcolor(pos == -1 ? red: pos == 1 ? green : blue )
plot(nResMA, color= blue , title="Trend Trader AVR")
plot(nResMA+BandStep, color= red , title="Trend Trader UpBand")
plot(nResMA-BandStep, color= green, title="Trend Trader DnBand")