这是一个结合了超级趋势指标(SuperTrend)和随机震荡指标(Stochastic Oscillator)的复合型交易策略。该策略利用SuperTrend指标识别市场趋势方向,同时使用随机震荡指标确认价格动量,从而实现更加准确的交易信号生成。策略采用ATR(真实波幅均值)作为波动率参考,通过动态调整支撑/阻力位来跟踪趋势。
策略的核心逻辑基于以下几个关键组成部分: 1. SuperTrend指标使用10周期ATR和3.0倍乘数计算动态支撑阻力通道 2. 随机震荡指标采用经典参数设置(14,3,3),用于识别超买超卖区域 3. 做多条件要求: - SuperTrend指示看涨趋势 - 随机指标%K线上穿%D线 - %K值处于超卖区域(低于20) 4. 做空条件要求: - SuperTrend指示看跌趋势 - 随机指标%K线下穿%D线 - %K值处于超买区域(高于80)
该策略通过结合SuperTrend和随机震荡指标,实现了趋势跟踪和动量确认的有机结合。策略设计合理,具有良好的可调整性和适应性。通过建议的优化方向,策略的稳定性和盈利能力有望得到进一步提升。在实盘交易中,建议traders根据具体市场特征和自身风险偏好,对参数进行针对性调整。
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"DOGE_USDT"}]
*/
//@version=5
strategy("SuperTrend + Stochastic Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === Vstupy ===
// SuperTrend
atrPeriod = input.int(10, title="ATR Period", minval=1)
multiplier = input.float(3.0, title="SuperTrend Multiplier", step=0.1)
// Stochastic Oscillator
kPeriod = input.int(14, title="%K Period", minval=1)
dPeriod = input.int(3, title="%D Period", minval=1)
smoothK = input.int(3, title="Smooth %K", minval=1)
// === Výpočty Indikátorov ===
// Výpočet ATR
atr = ta.atr(atrPeriod)
// Výpočet SuperTrend
upperBasic = (ta.highest(high, 1) + ta.lowest(low, 1)) / 2 + (multiplier * atr)
lowerBasic = (ta.highest(high, 1) + ta.lowest(low, 1)) / 2 - (multiplier * atr)
var float upperBand = na
var float lowerBand = na
var bool isBullish = true
if (na(upperBand[1]))
upperBand := upperBasic
lowerBand := lowerBasic
else
upperBand := close[1] > upperBand[1] ? math.max(upperBasic, upperBand[1]) : upperBasic
lowerBand := close[1] < lowerBand[1] ? math.min(lowerBasic, lowerBand[1]) : lowerBasic
isBullish := close > upperBand[1] ? true : close < lowerBand[1] ? false : isBullish[1]
// Výpočet Stochastic Oscillator
stochK = ta.sma(ta.stoch(high, low, close, kPeriod), smoothK)
stochD = ta.sma(stochK, dPeriod)
// === Podmienky Pre Vstupy ===
// Nákupný signál
longCondition = isBullish and ta.crossover(stochK, stochD) and stochK < 20
// Predajný signál
shortCondition = not isBullish and ta.crossunder(stochK, stochD) and stochK > 80
// === Vstupné Signály ===
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// === Výstupné Podmienky ===
// Môžete pridať vlastné podmienky pre uzatvorenie pozícií alebo použitie stop-loss/take-profit
// === Vykreslenie Indikátorov na Grafe ===
// Vykreslenie SuperTrend
plot(isBullish ? upperBand : na, color=color.green, title="SuperTrend Up", linewidth=2)
plot(not isBullish ? lowerBand : na, color=color.red, title="SuperTrend Down", linewidth=2)
fill(plot(isBullish ? upperBand : na, color=color.green), plot(not isBullish ? lowerBand : na, color=color.red), color=isBullish ? color.new(color.green, 90) : color.new(color.red, 90), title="SuperTrend Fill")
// Vykreslenie Stochastic Oscillator na samostatnom okne
hline(80, "Overbought", color=color.red, linestyle=hline.style_dotted)
hline(20, "Oversold", color=color.green, linestyle=hline.style_dotted)
plot(stochK, color=color.blue, title="%K")
plot(stochD, color=color.orange, title="%D")
// Vizualizácia Signálov
plotshape(series=longCondition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.labelup, text="Long")
plotshape(series=shortCondition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.labeldown, text="Short")