该策略是一个基于多重技术指标的动态平衡交易系统。它综合运用了相对强弱指标(RSI)、布林带(BB)、指数移动平均线(EMA)和移动平均线趋同散度指标(MACD)等多个技术分析工具,通过指标之间的相互验证来识别市场的买卖机会。策略采用百分比仓位管理方式,默认每次交易投入总资产的10%,这种保守的仓位管理有助于控制风险。
策略的核心逻辑是通过多重指标的协同确认来提高交易信号的可靠性。具体来说: 1. 使用14周期的RSI指标监测市场的超买超卖状态 2. 通过20周期、2倍标准差的布林带来确定价格波动区间 3. 利用50和200周期的EMA来判断中长期趋势 4. 采用MACD(12,26,9)参数组合来捕捉趋势转折点
买入信号需满足以下条件中的至少两个: - RSI低于30的超卖区域 - 价格触及布林带下轨 - 快速EMA上穿慢速EMA - MACD线上穿信号线
卖出信号则在出现以下任一情况时触发: - RSI高于70的超买区域 - 价格突破布林带上轨
该策略通过多重技术指标的组合应用,构建了一个相对完整的交易系统。通过指标间的交叉验证,提高了交易信号的可靠性。同时采用保守的仓位管理来控制风险。虽然存在一些需要优化的方面,但整体框架设计合理,具有实际应用价值。
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-16 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("ETH/USDT Multi-Indicator Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=250)
// Parametri za RSI
rsiPeriod = 14
rsiOversold = 30
rsiOverbought = 70
// Parametri za Bollinger Bands
bbLength = 20
bbStdDev = 2
// Parametri za EMA
emaShort = 50
emaLong = 200
// Parametri za MACD
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
// RSI izračun
rsi = ta.rsi(close, rsiPeriod)
// Bollinger Bands izračun
basis = ta.sma(close, bbLength)
upperBand = basis + bbStdDev * ta.stdev(close, bbLength)
lowerBand = basis - bbStdDev * ta.stdev(close, bbLength)
// EMA izračun
emaFast = ta.ema(close, emaShort)
emaSlow = ta.ema(close, emaLong)
// Pravilo 1: RSI prelazi iznad 30 nakon preprodatosti
rsiSignal = rsi < rsiOversold
// Pravilo 2: Cena dotakne donju Bollinger traku
bbSignal = close < lowerBand
// Pravilo 3: EMA crossover (zlatni krst)
emaSignal = emaFast > emaSlow
// Pravilo 4: MACD prelazak iznad signalne linije
macdSignal = macdLine > signalLine
// Kombinovani signal za kupovinu (bar dva uslova ispunjena)
buySignal = (rsiSignal and bbSignal) or (emaSignal and macdSignal)
// Pravilo za prodaju (RSI prekupljen ili cena iznad gornje Bollinger trake)
sellSignal = rsi > rsiOverbought or close > upperBand
// Vizualizacija signala
plotshape(series=buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Strategija: Otvaranje i zatvaranje pozicija
if (buySignal)
strategy.entry("Buy", strategy.long)
if (sellSignal)
strategy.close("Buy")
// Bollinger Bands vizualizacija
plot(upperBand, color=color.new(color.blue, 50), title="Upper Band")
plot(lowerBand, color=color.new(color.blue, 50), title="Lower Band")
plot(basis, color=color.blue, title="Basis")
// EMA vizualizacija
plot(emaFast, color=color.orange, title="EMA Short")
plot(emaSlow, color=color.red, title="EMA Long")