이 전략은 상대적 강도 지수 (RSI) 와 볼링거 밴드 (Bollinger Bands) 를 기반으로 한 이중 기술 분석 거래 시스템이다. 이 전략은 완전한 거래 결정 프레임워크를 구축하기 위해 RSI의 과잉 구매/ 과잉 판매 신호와 볼링거 밴드 (Bollinger Bands) 가격 채널 브레이크아웃 신호를 결합합니다. 특히 높은 변동성을 가진 시장에 적합하며 엄격한 입출 조건으로 위험 통제 거래를 달성합니다.
핵심 논리는 두 가지 주요 기술 지표의 시너지에 기반합니다.
이 전략은 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_做空")