볼링거 밴드 + RSI + EMA 이중 거래 전략

저자:차오장, 날짜: 2023-12-29 14:46:57
태그:

img

전반적인 설명

이 전략은 볼링거 밴드, 상대 강도 지수 (RSI) 및 기하급수적 이동 평균 (EMA) 세 가지 지표를 통합하여 주식에서 긴 보유 기간을 가진 자동 거래 전략을 구현합니다. RSI가 과판 라인 아래에 있고 가격이 볼링거 밴드 하부 레일에 가깝거나 닿을 때 구매 신호를 생성하고 가격이 상승하여 볼링거 밴드 상부 레일을 만졌을 때 판매 신호를 생성하여 볼링거 밴드를 활용하여 시장 추세와 과판 / 과판 상태를 두 번 확인합니다.

전략 원칙

이 전략은 주로 볼링거 밴드, RSI 및 EMA 세 가지 지표에 기초하여 판단합니다. 볼링거 밴드의 중간 레일은 가격의 간단한 이동 평균이며 상위 및 하부 레일은 가격의 두 표준 오차 범위입니다. 볼링거 밴드는 시장의 과잉 구매 / 과잉 판매 상태를 판단 할 수 있습니다. 가격이 하부 레일 근처에있을 때 과잉 판매 상태를 나타냅니다. 가격이 상위 레일 근처에있을 때 과잉 판매 상태를 나타냅니다. RSI는 주가가 과잉 구매 또는 과잉 판매 여부를 판단하는 중요한 지표 중 하나입니다. RSI 30 이하는 과잉 판매 상태를 나타냅니다. RSI 70 이상은 과잉 구매 상태를 나타냅니다. EMA는 가격의 기하급수 가중화 이동 평균이며 가격 트렌드를 결정할 수 있습니다.

이 전략의 구매 신호는 RSI가 30 과잉 판매 라인 아래에 있고 동시에 가격이 과잉 판매 상태에서 볼링거 밴드 하부 레일을 접근하거나 만졌을 때 생성됩니다. 이것은 잘못된 신호를 피합니다.

판매 신호는 상승 추세 중 가격이 볼링거 밴드 상부 레일에 닿을 때 생성됩니다. 이것은 볼링거 밴드를 사용하여 과잉 구매 상태를 결정하고 수익을 위해 판매합니다.

전략 의 장점

  1. 볼링거 밴드와 RSI를 통합하여 오버구입/오버판매 상태를 두 번 확인하고 잘못된 신호를 피합니다.
  2. 가격 트렌드 방향을 결정하기 위해 EMA를 이용하고, 트렌드에 반대하는 거래를 피합니다.
  3. RSI와 볼링거 밴드의 매개 변수는 다른 주식에 맞게 조정할 수 있습니다.
  4. 간단하고 명확한 전략 논리, 이해하기 쉽고 실행하기 쉽습니다.

전략 의 위험

  1. 볼링거 밴드와 RSI 모두 잘못된 신호를 생성하여 잘못된 항목을 유발할 수 있습니다.
  2. 스톱 로스 포지션은 더 많은 리트레이싱 위험과 함께 더 많은 최적화가 필요합니다.
  3. EMA는 트렌드 전환점을 놓친 경우 트렌드를 완벽하게 결정하지 못할 수 있습니다.
  4. 부적절한 매개 변수 설정으로 인해 거래 기회가 지나치게 거래되거나 놓칠 수 있습니다.

해결책:

  1. 볼링거 밴드 기간을 단축하고 RSI 매개 변수를 최적화합니다.
  2. 동적 후속 스톱 손실
  3. 추세 결정에 다른 지표를 통합합니다.
  4. 최적의 조합을 찾기 위해 다른 매개 변수 설정을 테스트합니다.

전략 최적화의 방향

이 전략은 다음 측면에서 더 이상 최적화 될 수 있습니다.

  1. 판단을 위한 더 많은 지표를 추가합니다. 예를 들어, 과잉 구매/ 과잉 판매 상태의 KD.
  2. 스톱 로스 메커니즘을 추가합니다. 위험 관리에 필요한 스톱 로스 이동, 스톱 로스 영역 같은 것.
  3. 판매 조건의 EMA 트렌드 결정에 기초한 출구 규칙을 추가합니다.
  4. 수익 범위를 확장하기 위해 매개 변수 설정을 최적화하십시오. 예를 들어 볼링거 밴드 너비를 조정하십시오.
  5. 입력 규칙을 추가하여 가짜 브레이크오웃을 피합니다. 예를 들어 볼륨 필터.

결론

이 전략은 롤링거 밴드, RSI 및 EMA를 통합하여 이중 확인 필터를 가진 장기 보유 자동 거래 전략을 수립합니다. 과잉 구매 / 과잉 판매 상태에 대한 이중 확인은 잘못된 신호를 효과적으로 피하고, 트렌드 결정에 EMA를 사용하여 트렌드에 반대되는 거래를 방지합니다. 한편 유연한 매개 변수 설정은 다른 주식에 적응 할 수 있습니다. 중지 손실 및 출구 메커니즘의 측면에 대한 추가 개선은 전략의 효율성과 위험 관리를 향상시킬 수 있습니다. 전략은 초보자에게 귀중한 참조 프레임워크를 제공하며 실용적인 의미를 가지고 있습니다.


/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Bollinger + RSI + EMA, Double Strategy Long-Only (by ChartArt) v1.3", shorttitle="rsi 30 min ADJ Buy", overlay=true)

///////////// RSI
RSIlength = input(2, title="RSI Period Length") // Adjusted RSI period length
RSIoverSold = input(30, title="RSI Oversold Level")  // Adjustable RSI oversold level
RSIoverBought = input(80, title="RSI Overbought Level")  // Adjustable RSI overbought level
price = close
vrsi = rsi(price, RSIlength)

///////////// Bollinger Bands
BBlength = input(231, minval=1, title="Bollinger Period Length") // Adjusted Bollinger period length
BBmult = 2
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev

///////////// EMA
useEMA = input(true, title="Use EMA?")
emaLength = input(20, title="EMA Period Length")
ema = useEMA ? ema(close, emaLength) : na

source = close
buyEntry = crossover(source, BBlower) or (close < BBlower and close > BBbasis) or (low < BBlower and close > BBbasis) // Add condition for low touching Bollinger Band
sellEntry = crossunder(source, BBupper)

///////////// Plotting
plot(BBbasis, color=color.aqua, title="Bollinger Bands SMA Basis Line")
plot(BBupper, color=color.silver, title="Bollinger Bands Upper Line")
plot(BBlower, color=color.silver, title="Bollinger Bands Lower Line")
plot(ema, color=color.orange, title="EMA")  // Plot EMA

///////////// RSI + Bollinger Bands Strategy
long = crossover(vrsi, RSIoverSold) and buyEntry
close_long = close >= BBupper

if (not na(vrsi))
    if long
        strategy.entry("Buy", strategy.long, qty=10, stop=BBlower, comment="Buy")
    else
        strategy.cancel(id="Buy")
        
    if close_long
        strategy.close("Buy")


더 많은