볼린저 밴드와 RSI 거래 전략


생성 날짜: 2024-03-28 18:11:08 마지막으로 수정됨: 2024-03-28 18:11:08
복사: 0 클릭수: 665
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

볼린저 밴드와 RSI 거래 전략

개요

이 전략은 부린 반지와 상대적으로 강한 지표 ((RSI) 를 결합하여 매매 신호를 판단한다. 가격이 부린 반지 경로를 돌파하고 RSI가 설정된 하위 한계보다 낮으면 매매 신호를 생성한다. 가격이 부린 반지 경로를 돌파하고 RSI가 설정된 상위 한계보다 높으면 매매 신호를 생성한다. 이 전략은 또한 매매 간격 변수를 도입하여 자주 거래를 피하고 피라미드형 포지션 관리를 구현하는 데 도움이 된다.

전략 원칙

  1. 가격의 과매매를 측정하기 위한 RSI를 계산한다.
  2. 가격의 돌파구를 판단하기 위해 브린을 계산합니다.
  3. RSI와 브린의 조합으로 구매/판매 신호를 설정합니다.
    • 부린 반지하에서 가격이 닫히고 RSI가 설정된 하위 레벨보다 낮을 때 구매 신호가 발생한다.
    • 부린이 상위권에 도달하고 RSI가 상위권에 도달했을 때 판매 신호가 발생한다.
  4. 구매-구입 간격 파라미터를 도입하여 연속 구매의 빈도를 제한하여 피라미드 형태의 포지션 관리를 구현하기 쉽다.

전략적 이점

  1. 이중 확인: 이 전략은 브린 밴드와 RSI를 동시에 사용함으로써 트렌드 전환점을 더 안정적으로 포착하고 잘못된 신호의 위험을 줄일 수 있습니다.
  2. 피라미드 포지션 구축: 구매 간격 파라미터를 설정하여, 전략은 트렌드가 확립된 후 단계적으로 포지션을 높일 수 있으며, 위험을 통제하고 수익을 최적화하는데 도움이 된다.
  3. 매개 변수 유연성: 사용자는 시장 특성과 개인 취향에 따라 RSI 상하계와 구매 간격 등의 매개 변수를 유연하게 설정할 수 있다.

전략적 위험

  1. 추세 연장 위험: 부린 지대를 뚫고 가격이 잠시 후 물러나면, 전략이 조기 청산되어 추세를 놓치게 될 수 있습니다.
  2. 매개 변수 최적화 위험: 다양한 시장 환경에서 최적의 매개 변수 조합이 크게 달라질 수 있으며, 전략이 과도한 적합성의 위험에 직면할 수 있다.
  3. 블랙 스완 사건: 전략은 역사적 데이터에 기반하여 극단적인 상황에 효과적으로 대응할 수 없습니다.

전략 최적화 방향

  1. 스톱 스톱을 도입: 전략에 이동 스톱 또는 고정 스톱 스톱 논리를 추가하여 단일 거래 위험을 더욱 제어합니다.
  2. 동적 변수 최적화: 시장 상태의 변화에 따라 동적으로 RSI 상하계 및 구매 간격과 같은 변수를 조정하여 전략의 적응성을 향상시킵니다.
  3. 다른 기술 지표와 결합: 다른 트렌드 클래스 또는 스윙 클래스 지표를 보조 판단으로 도입하여 전략의 안정성을 향상시킵니다.

요약하다

이 전략은 두 가지의 고전적인 기술 지표인 브린 띠와 RSI를 교묘하게 결합하여 트렌드 기회를 잡기 위해 이중 확인 메커니즘을 사용합니다. 동시에, 전략은 피라미드 형태의 포지션 구축 방법을 도입하여 위험을 통제하면서 수익을 최적화하려고합니다. 그러나 전략에는 추세 지속 위험, 변수 최적화 위험 및 블랙 스윙 사건 위험도 있습니다.

전략 소스 코드
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/

//@version=4
strategy(overlay=true, shorttitle="cakes'Strategy For RSI", default_qty_type = strategy.percent_of_equity, initial_capital = 100000, default_qty_value = 100, pyramiding = 0, title="cakes'Strategy", currency = 'USD')

////////// ** Inputs ** //////////

// Stoploss and Profits Inputs

v1 = input(true, title="GoTradePlz")

////////// ** Indicators ** //////////

// RSI

len = 14
src = close
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)



//  Bollinger Bands

length1 = 20
src1 = close
mult1 = 1.0
basis1 = sma(src1, length1)
dev1 = mult1 * stdev(src1, length1)
upper1 = basis1 + dev1
lower1 = basis1 - dev1



////////// ** Triggers and Guards ** //////////


// 输入
RSILowerLevel1 = input(30, title="RSI 下限水平")
RSIUpperLevel1 = input(70, title="RSI 上限水平")

// 购买间隔
buyInterval = input(5, title="购买间隔(K线数量)")

// 跟踪购买间隔
var int lastBuyBar = na
lastBuyBar := na(lastBuyBar[1]) ? bar_index : lastBuyBar

// 策略信号
BBBuyTrigger1 = close < lower1
BBSellTrigger1 = close > upper1
rsiBuyGuard1 = rsi < RSILowerLevel1
rsiSellGuard1 = rsi > RSIUpperLevel1

Buy_1 = BBBuyTrigger1 and rsiBuyGuard1 and (bar_index - lastBuyBar) >= buyInterval
Sell_1 = BBSellTrigger1 and rsiSellGuard1

if (Buy_1)
    lastBuyBar := bar_index

strategy.entry("Long", strategy.long, when = Buy_1, alert_message = "Buy Signal!")
strategy.close("Long", when = Sell_1, alert_message = "Sell Signal!")