이 전략은 볼링거 밴드, 상대 강도 지수 (RSI) 및 기하급수적 이동 평균 (EMA) 세 가지 지표를 통합하여 주식에서 긴 보유 기간을 가진 자동 거래 전략을 구현합니다. RSI가 과판 라인 아래에 있고 가격이 볼링거 밴드 하부 레일에 가깝거나 닿을 때 구매 신호를 생성하고 가격이 상승하여 볼링거 밴드 상부 레일을 만졌을 때 판매 신호를 생성하여 볼링거 밴드를 활용하여 시장 추세와 과판 / 과판 상태를 두 번 확인합니다.
이 전략은 주로 볼링거 밴드, RSI 및 EMA 세 가지 지표에 기초하여 판단합니다. 볼링거 밴드의 중간 레일은 가격의 간단한 이동 평균이며 상위 및 하부 레일은 가격의 두 표준 오차 범위입니다. 볼링거 밴드는 시장의 과잉 구매 / 과잉 판매 상태를 판단 할 수 있습니다. 가격이 하부 레일 근처에있을 때 과잉 판매 상태를 나타냅니다. 가격이 상위 레일 근처에있을 때 과잉 판매 상태를 나타냅니다. RSI는 주가가 과잉 구매 또는 과잉 판매 여부를 판단하는 중요한 지표 중 하나입니다. RSI 30 이하는 과잉 판매 상태를 나타냅니다. RSI 70 이상은 과잉 구매 상태를 나타냅니다. EMA는 가격의 기하급수 가중화 이동 평균이며 가격 트렌드를 결정할 수 있습니다.
이 전략의 구매 신호는 RSI가 30 과잉 판매 라인 아래에 있고 동시에 가격이 과잉 판매 상태에서 볼링거 밴드 하부 레일을 접근하거나 만졌을 때 생성됩니다. 이것은 잘못된 신호를 피합니다.
판매 신호는 상승 추세 중 가격이 볼링거 밴드 상부 레일에 닿을 때 생성됩니다. 이것은 볼링거 밴드를 사용하여 과잉 구매 상태를 결정하고 수익을 위해 판매합니다.
해결책:
이 전략은 다음 측면에서 더 이상 최적화 될 수 있습니다.
이 전략은 롤링거 밴드, 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")