この戦略は,相対強度指数 (RSI) とボリンジャーバンド (Bollinger Bands) をベースとした二重技術分析取引システムである.この戦略は,RSIの過剰購入/過剰販売信号とボリンジャーバンド (Bollinger Bands) の価格チャネルブレイクアウト信号を組み合わせて,完全な取引決定フレームワークを構築する.特に高波動性のある市場に適しており,厳格なエントリーと退出条件を通じてリスク制御取引を達成する.
基本論理は2つの主要な技術指標の相乗効果に基づいています.
この戦略は,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_做空")