本策略是一个结合布林带(Bollinger Bands)和移动平均线(Moving Average)的趋势跟踪交易系统。它利用布林带来捕捉价格波动性突破,同时使用移动平均线来确认趋势方向,从而形成一个完整的交易决策框架。策略的核心是在价格突破布林带的同时,需要与移动平均线方向保持一致,这种双重确认机制能够有效降低虚假信号。
策略采用了两个核心技术指标: 1. 布林带(BB):由中轨(20期简单移动平均线)和上下轨(中轨±2倍标准差)组成,用于衡量价格波动性范围。 2. 移动平均线(MA):支持简单移动平均线(SMA)和指数移动平均线(EMA),用于确认整体趋势方向。
交易信号生成逻辑: - 做多条件:价格向上突破下轨且位于移动平均线上方 - 做空条件:价格向下突破上轨且位于移动平均线下方 - 平仓条件:价格穿越移动平均线或偏离移动平均线方向
这是一个将经典技术指标布林带和移动平均线进行创新组合的趋势跟踪策略。通过布林带捕捉价格突破机会,同时利用移动平均线确认趋势方向,形成了一个逻辑严密的交易系统。策略具有较强的适应性和可定制性,但在实际应用中需要注意市场环境的判断和风险控制。通过建议的优化方向,策略还有很大的提升空间。
/*backtest
start: 2024-02-08 00:00:00
end: 2025-02-07 00:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bollinger Bands + Moving Average Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)
// === Vstupy ===
// Moving Average
maPeriod = input.int(20, title="MA Period", minval=1)
maType = input.string("SMA", title="MA Type", options=["SMA", "EMA"])
// Bollinger Bands
bbPeriod = input.int(20, title="BB Period", minval=1)
bbMultiplier = input.float(2.0, title="BB Multiplier", step=0.1)
// === Výpočty Indikátorov ===
// Moving Average
ma = maType == "SMA" ? ta.sma(close, maPeriod) : ta.ema(close, maPeriod)
// Bollinger Bands
basis = ta.sma(close, bbPeriod)
dev = bbMultiplier * ta.stdev(close, bbPeriod)
upperBB = basis + dev
lowerBB = basis - dev
// === Podmienky Pre Vstupy ===
// Nákupný signál: Cena prekonáva dolný Bollinger Band smerom nahor a cena je nad MA
longCondition = ta.crossover(close, lowerBB) and close > ma
// Predajný signál: Cena prekonáva horný Bollinger Band smerom nadol a cena je pod MA
shortCondition = ta.crossunder(close, upperBB) and close < ma
// === Vstupné Signály ===
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// === Výstupné Podmienky ===
// Uzavretie Long pozície pri prekonaní MA smerom nadol alebo ceny pod MA
exitLongCondition = ta.crossunder(close, ma) or close < ma
if (exitLongCondition)
strategy.close("Long")
// Uzavretie Short pozície pri prekonaní MA smerom nahor alebo ceny nad MA
exitShortCondition = ta.crossover(close, ma) or close > ma
if (exitShortCondition)
strategy.close("Short")
// === Vykreslenie Indikátorov na Grafe ===
// Vykreslenie Moving Average
plot(ma, color=color.blue, title="Moving Average")
// Vykreslenie Bollinger Bands
upperPlot = plot(upperBB, color=color.red, title="Upper BB")
lowerPlot = plot(lowerBB, color=color.green, title="Lower BB")
fill(upperPlot, lowerPlot, color=color.rgb(173, 216, 230, 90), title="BB Fill")
// 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")
plotshape(series=exitLongCondition, title="Long Exit", location=location.abovebar, color=color.red, style=shape.labeldown, text="Exit Long")
plotshape(series=exitShortCondition, title="Short Exit", location=location.belowbar, color=color.green, style=shape.labelup, text="Exit Short")