
이 전략은 상대적으로 약한 지표 (RSI) 와 볼링거 밴드 (Bollinger Bands) 를 기반으로 한 이중 기술 분석 거래 시스템입니다. 이 전략은 RSI의 과매매 신호와 볼링거 밴드의 가격 통로 돌파 신호를 결합하여 완전한 거래 의사 결정 프레임 워크를 구축합니다. 이 전략은 특히 변동성이 높은 시장 환경에서 작동하기 위해 적합하며 엄격한 입출장 조건을 통해 위험을 통제 할 수 있습니다.
전략의 핵심 논리는 두 가지 주요 기술 지표의 상호 작용에 기반합니다.
이 전략은 RSI와 부린밴드의 연동 작용을 통해 비교적 완벽한 거래 시스템을 구축한다. 전략의 주요 장점은 두 번의 확인 메커니즘과 완벽한 위험 통제에 있다. 그러나 또한 전략의 성능에 대한 시장 환경의 영향을 주의해야 한다. 제안된 최적화 방향으로 전략의 안정성과 수익 능력을 더욱 향상시킬 수 있다.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("RSI与布林带双重策略 (by ChartArt) v2.2", shorttitle="CA_RSI_布林带策略_2.2", overlay=true)
// ChartArt的RSI + 布林带双重策略 - 精简版
//
// 中文版本 3, BY Henry
// 原创意来自ChartArt,2015年1月18日
// 更新至Pine Script v5版本,删除了背景色、K线颜色和策略收益绘制功能
//
// 策略说明:
// 该策略结合使用RSI指标和布林带。
// 当价格高于上轨且RSI超买时卖出,
// 当价格低于下轨且RSI超卖时买入。
//
// 本策略仅在RSI和布林带同时
// 处于超买或超卖状态时触发。
// === 输入参数 ===
// RSI参数
RSIlength = input.int(6, title="RSI周期长度", minval=1)
RSIoverSold = input.int(50, title="RSI超卖阈值", minval=0, maxval=100)
RSIoverBought = input.int(50, title="RSI超买阈值", minval=0, maxval=100)
// 布林带参数
BBlength = input.int(200, title="布林带周期长度", minval=1)
BBmult = input.float(2.0, title="布林带标准差倍数", minval=0.001, maxval=50)
// === 计算 ===
price = close
vrsi = ta.rsi(price, RSIlength)
// 布林带计算
BBbasis = ta.sma(price, BBlength)
BBdev = BBmult * ta.stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
// === 绘图 ===
plot(BBbasis, color=color.new(color.aqua, 0), title="布林带中线(SMA)")
p1 = plot(BBupper, color=color.new(color.silver, 0), title="布林带上轨")
p2 = plot(BBlower, color=color.new(color.silver, 0), title="布林带下轨")
fill(p1, p2, color=color.new(color.silver, 90))
// === 策略逻辑 ===
if (not na(vrsi))
longCondition = ta.crossover(vrsi, RSIoverSold) and ta.crossover(price, BBlower)
if (longCondition)
strategy.entry("RSI_BB_做多", strategy.long, stop=BBlower, oca_name="RSI_BB", comment="RSI_BB_做多")
else
strategy.cancel("RSI_BB_做多")
shortCondition = ta.crossunder(vrsi, RSIoverBought) and ta.crossunder(price, BBupper)
if (shortCondition)
strategy.entry("RSI_BB_做空", strategy.short, stop=BBupper, oca_name="RSI_BB", comment="RSI_BB_做空")
else
strategy.cancel("RSI_BB_做空")