本策略是一个结合了移动平均线(SMA)和相对强弱指标(RSI)的量化交易系统。它通过观察短期和长期移动平均线的交叉信号,同时结合RSI指标的超买超卖水平来确定交易时机。该策略采用TradingView平台的Pine Script语言编写,能够实现自动化交易和图形化显示。
策略的核心逻辑基于两个主要技术指标的配合使用。首先,系统计算50周期和200周期的简单移动平均线(SMA),这两条均线的交叉形成主要的趋势判断信号。其次,系统结合14周期的RSI指标,设定70和30作为超买超卖阈值,用于过滤交易信号。当短期均线向上穿越长期均线且RSI未达到超买水平时,系统产生做多信号;当短期均线向下穿越长期均线且RSI未达到超卖水平时,系统产生平仓信号。
该策略通过均线交叉和RSI超买超卖的双重过滤机制,构建了一个相对稳健的交易系统。它适合在有明显趋势的市场中应用,但需要投资者根据具体市场特点调整参数设置。通过添加更多的过滤条件和风险控制机制,策略的稳定性还可以进一步提升。在实盘应用时,建议先进行充分的回测验证,并结合市场实际情况进行适当的参数优化。
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Chỉ báo Giao dịch Cắt SMA với RSI", overlay=true)
// Định nghĩa các tham số
short_period = input.int(50, title="Thời gian SMA ngắn")
long_period = input.int(200, title="Thời gian SMA dài")
rsi_period = input.int(14, title="Thời gian RSI")
rsi_overbought = input.int(70, title="Ngưỡng RSI Mua Quá Mức")
rsi_oversold = input.int(30, title="Ngưỡng RSI Bán Quá Mức")
// Tính toán các SMA
sma_short = ta.sma(close, short_period)
sma_long = ta.sma(close, long_period)
// Tính toán RSI
rsi = ta.rsi(close, rsi_period)
// Điều kiện vào lệnh Mua (Cắt lên và RSI không quá mua)
long_condition = ta.crossover(sma_short, sma_long) and rsi < rsi_overbought
// Điều kiện vào lệnh Bán (Cắt xuống và RSI không quá bán)
short_condition = ta.crossunder(sma_short, sma_long) and rsi > rsi_oversold
// Vẽ các đường SMA và RSI lên biểu đồ
plot(sma_short, color=color.blue, title="SMA Ngắn")
plot(sma_long, color=color.red, title="SMA Dài")
hline(rsi_overbought, "Overbought", color=color.red)
hline(rsi_oversold, "Oversold", color=color.green)
plot(rsi, color=color.orange, title="RSI")
// Hiển thị tín hiệu vào lệnh
plotshape(series=long_condition, location=location.belowbar, color=color.green, style=shape.labelup, title="Tín hiệu Mua", text="MUA")
plotshape(series=short_condition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Tín hiệu Bán", text="BÁN")
// Giao dịch tự động bằng cách sử dụng cấu trúc if
if (long_condition)
strategy.entry("Long", strategy.long)
if (short_condition)
strategy.close("Long")