볼링거 밴드 및 RSI 거래 전략

저자:차오장, 날짜: 2024-03-28 18:11:08
태그:

img

전반적인 설명

이 전략은 볼링거 밴드와 상대적 강도 지수 (RSI) 를 결합하여 구매 및 판매 신호를 생성합니다. 가격은 하부 볼링거 밴드 아래로 넘어가고 RSI는 지정된 하위 수준 아래로 떨어지면 구매 신호가 발생합니다. 가격이 상부 볼링거 밴드 위에 넘어가고 RSI는 지정된 상위 수준을 넘어서면 판매 신호가 발생합니다. 또한 전략은 피라미드 포지션 관리에 유리한 빈번한 거래를 피하기 위해 구매 간격 매개 변수를 도입합니다.

전략 원칙

  1. 과잉 구매 및 과잉 판매 조건을 측정하기 위해 RSI 지표를 계산합니다.
  2. 상부와 하부 볼링거 밴드를 계산하여 가격 파장을 결정합니다.
  3. RSI와 볼링거 밴드를 기반으로 구매 및 판매 신호를 설정합니다.
    • 구매 신호는 종료 가격이 아래 볼링거 밴드 밑에 있고 RSI가 지정된 하위 수준 아래에 있을 때 생성됩니다.
    • 판매 신호는 종료 가격이 상부 볼링거 밴드 이상이고 RSI가 지정된 상위 수준 이상일 때 생성됩니다.
  4. 구매 간격 매개 변수를 도입하여 연속 구매의 빈도를 제한하여 피라미드 포지션 관리를 용이하게 합니다.

전략적 장점

  1. 이중 확인: 이 전략은 볼링거 밴드와 RSI 인디케이터를 모두 사용하며, 더 신뢰할 수 있는 트렌드 역전 검출을 제공하고 잘못된 신호를 줄입니다.
  2. 피라미드 포지션 구축: 구매 간격 매개 변수를 설정함으로써 전략은 트렌드가 확립됨에 따라 점차 포지션을 추가하여 위험을 제어하고 수익을 최적화하는 데 도움이됩니다.
  3. 유연한 매개 변수: 사용자는 RSI 상부와 하부 수준을 유연하게 설정하고 시장 특성과 개인적인 선호도에 따라 간격 매개 변수를 구입할 수 있습니다.

전략 위험

  1. 트렌드 지속 위험: 가격이 볼링거 밴드를 뚫고 짧은 후퇴를 경험하면 전략은 조기 포지션을 닫고 후속 트렌드를 놓칠 수 있습니다.
  2. 매개 변수 최적화 위험: 최적의 매개 변수 조합은 다른 시장 환경에서 크게 다를 수 있으며 전략은 과도한 적합성 위험에 직면 할 수 있습니다.
  3. 블랙 스완 이벤트: 전략은 역사적 데이터에 기초하여 구축되어 있으며 극단적인 시장 조건을 효과적으로 처리하지 않을 수 있습니다.

전략 최적화 방향

  1. 스톱 로스 및 트레이프 리프트를 도입: 트레일링 스톱 또는 고정 스톱 로스 및 트레이프 리프트 로직을 전략에 추가하여 개별 거래 위험을 더 제어합니다.
  2. 동적 매개 변수 최적화: 전략 적응력을 향상시키기 위해 시장 조건의 변화에 따라 RSI 상위 및 하위 수준 및 구매 간격과 같은 매개 변수를 동적으로 조정합니다.
  3. 다른 기술 지표와 결합: 전략 안정성을 높이기 위해 다른 트렌드 또는 오시레이터 지표를 보조 판단으로 도입하십시오.

요약

이 전략은 슬기롭게 두 가지 고전적인 기술 지표인 볼린저 밴드 (Bollinger Bands) 와 RSI (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!")

더 많은