该策略通过计算多时间段的SMA均线,并取平均值构建均线指标。当价格上涨突破均线时产生买入信号,当价格下跌突破均线时产生卖出信号,属于典型的均线交叉策略。
该策略通过多时间段SMA的平均,能够有效平滑曲线,滤除假突破。与单一均线相比,具有更高的稳定性。
可以通过适当缩短部分均线周期,以及加入其他指标确认,来减小这些风险。
该策略总体思路清晰,通过多时间段均线的集成,能够有效识别趋势,是一个稳定实用的策略。但我们也需要注意到其滞后性以及误报风险。通过进一步优化参数设定、加入确认指标等手段,可以持续改进该策略,使其成为一个强大的量化交易工具。
/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-27 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("STRATEGY AVERAGE MULTI_SMA", overlay=true)
sma1 = sma(close,input(title="SMA 1", defval=8))
sma2 = sma(close,input(title="SMA 2", defval=21))
sma3 = sma(close,input(title="SMA 3", defval=50))
sma4 = sma(close,input(title="SMA 4", defval=100))
sma5 = sma(close,input(title="SMA 5", defval=200))
mediaSMA= (sma1+sma2+sma3+sma4+sma5)/5
//color mediaSMA
MediaUP = mediaSMA>mediaSMA[1]
colorUP = (MediaUP ? #3CFF35 : na)
MediaDOWN = mediaSMA<mediaSMA[1]
colorDOWN =(MediaDOWN ? #FF0F03 : na)
colorN =(not MediaUP and not MediaDOWN and mediaSMA==mediaSMA[1] ? white : na )
plot(mediaSMA,title="Avarege MULTI_SMA UP", color=colorUP, style=circles, linewidth=2, transp=0)
plot(mediaSMA,title="Avarege MULTI_SMA DOWN", color=colorDOWN, style=circles, linewidth=2, transp=0)
plot(mediaSMA,title="Avarege MULTI_SMA UP NEUTRAL", color=colorN, style=circles, linewidth=2, transp=0)
//plot(sma1,color=blue,linewidth=1, style=line,transp=0,title="SMA 1")
//plot(sma2,color=yellow,linewidth=1, style=line,transp=0,title="SMA 2")
//plot(sma3,color=green,linewidth=1, style=line,transp=0,title="SMA 3")
//plot(sma4,color=purple,linewidth=1, style=line,transp=0,title="SMA 4")
//plot(sma5,color=red,linewidth=1, style=line,transp=0,title="SMA 5")
// Strategy
//BUY
comprar=close>mediaSMA and mediaSMA>mediaSMA[1]
fechar=close<mediaSMA and mediaSMA<mediaSMA[1]
strategy.entry("BUY",strategy.long,when=comprar)
strategy.entry("SELL",strategy.short, when=fechar)
//SELL
vender=close<mediaSMA and mediaSMA<mediaSMA[1]
fechar2=close>mediaSMA and mediaSMA>mediaSMA[1]
strategy.entry("SELL",strategy.short, when=vender)
strategy.entry("BUY", strategy.long,when=fechar2)