
Chiến lược này là một hệ thống giao dịch phân tích kỹ thuật kép dựa trên các chỉ số tương đối mạnh (RSI) và các dải Bollinger (Bollinger Bands). Chiến lược này xây dựng một khung quyết định giao dịch hoàn chỉnh bằng cách kết hợp tín hiệu mua bán quá mức của RSI với tín hiệu phá vỡ kênh giá của dải Bollinger. Chiến lược này đặc biệt phù hợp để hoạt động trong môi trường thị trường có nhiều biến động, để thực hiện giao dịch có thể kiểm soát rủi ro thông qua các điều kiện vào và ra nghiêm ngặt.
Lập luận cốt lõi của chiến lược được xây dựng dựa trên sự phối hợp của hai chỉ số kỹ thuật chính:
Chiến lược này xây dựng một hệ thống giao dịch tương đối hoàn hảo thông qua sự phối hợp của RSI và Brin. Ưu điểm chính của chiến lược là cơ chế xác nhận kép và kiểm soát rủi ro tốt, nhưng cũng cần chú ý đến tác động của môi trường thị trường đối với hiệu suất chiến lược.
/*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_做空")