리소스 로딩... 로딩...

높은 승률 트렌드는 반전 거래 전략을 의미합니다.

저자:차오장, 날짜: 2024-11-12 14:45:46
태그:BBRSIATRSMARRSLTP

img

전반적인 설명

이 전략은 평균 회귀 원리에 기반한 양적 거래 전략으로, 볼린거 밴드, 상대 강도 지수 (RSI), 평균 진실 범위 (ATR) 와 같은 기술적 지표를 결합하여 시장의 과잉 구매 및 과잉 판매 조건을 식별합니다. 이 전략은 높은 승률을 달성하기 위해 낮은 위험 / 보상 비율을 사용하고 위치 사이징을 통해 위험 관리를 구현합니다.

전략 원칙

이 전략은 다음과 같은 측면을 통해 거래를 실행합니다.

  1. 가격 이동 범위를 결정하기 위해 볼링거 밴드 (20일) 를 사용합니다.
  2. RSI (14-일) 를 사용하여 과잉 구매 및 과잉 판매 조건을 식별합니다.
  3. ATR (14-일) 를 동적 스톱 로스 및 트레이프 레벨에 사용합니다.
  4. 가격이 하위 범위를 넘어서고 RSI가 30 이하로 떨어지면 긴 포지션에 진입합니다.
  5. 가격이 상위 범위를 넘어서고 RSI가 70을 넘을 때 짧은 포지션을 입력합니다.
  6. 더 높은 승률을 달성하기 위해 0.75의 위험-상금 비율을 설정합니다.
  7. 거래당 2%의 리스크를 계정 자금에 기초로 구현합니다.

전략적 장점

  1. 신뢰할 수 있는 신호를 위해 여러 가지 기술 지표를 결합합니다.
  2. 평균 회전 특성을 통해 시장 기회를 포착합니다.
  3. 동적 스톱 로스 조정에 ATR을 사용합니다.
  4. 낮은 위험/이익 비율을 설정함으로써 더 높은 승률
  5. 비율 기반의 위험 관리를 통한 효과적인 자본 할당
  6. 명확하고 이해하기 쉬운 전략 논리
  7. 좋은 확장성 및 최적화 잠재력

전략 위험

  1. 강한 트렌드 시장에서 빈번한 스톱 로즈가 발생할 수 있습니다.
  2. 낮은 위험/이익 비율로 인해 거래당 잠재적인 이익이 낮습니다.
  3. 볼링거 밴드 및 RSI 지표의 잠재적인 지연
  4. 높은 변동성 (high volatility) 이 있을 때 스톱 로스 포지션은 최적의 수준이 아닐 수 있습니다.
  5. 거래 비용은 전체 수익에 영향을 줄 수 있습니다. 해결책:
  • 트렌드 필터를 추가
  • 입력 시기를 최적화
  • 표시기 매개 변수를 조정합니다.
  • 추가 확인 신호를 도입

최적화 방향

  1. 트렌드 상거래를 피하기 위해 트렌드 지표를 포함
  2. 더 나은 정확성을 위해 RSI 및 볼링거 밴드 매개 변수를 최적화하십시오.
  3. 시장 조건에 기반한 역동적 위험/이익 비율을 구현
  4. 신호 확인을 위한 부피 표시기를 추가합니다.
  5. 특정 거래 기간을 피하기 위해 시간 필터를 포함합니다.
  6. 적응적 매개 변수 메커니즘 개발
  7. 포지션 크기와 리스크 관리 시스템을 개선

결론

이 전략은 평균 회귀 원칙과 여러 기술적 지표를 통해 견고한 거래 시스템을 구축합니다. 낮은 위험-상금 비율 설정은 높은 승률을 달성하는 데 도움이되며 엄격한 위험 관리는 자본 보존을 보장합니다. 본질적인 위험에도 불구하고 지속적인 최적화와 정제로 인해 성능이 향상 될 수 있습니다. 이 전략은 보수적인 거래자에게 적합합니다. 특히 높은 변동성이있는 시장에서.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-11-11 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("High Win Rate Mean Reversion Strategy for Gold", overlay=true)

// Input Parameters
bbLength = input.int(20, title="Bollinger Bands Length")
bbMult = input.float(2, title="Bollinger Bands Multiplier")
rsiLength = input.int(14, title="RSI Length")
rsiOverbought = input.int(70, title="RSI Overbought Level")
rsiOversold = input.int(30, title="RSI Oversold Level")
atrLength = input.int(14, title="ATR Length")
rrRatio = input.float(0.75, title="Risk/Reward Ratio", step=0.05)  // Lower RRR to achieve a high win rate
riskPerTrade = input.float(2.0, title="Risk per Trade (%)", step=0.1) / 100  // 2% risk per trade

// Bollinger Bands Calculation
basis = ta.sma(close, bbLength)
dev = bbMult * ta.stdev(close, bbLength)
upperBand = basis + dev
lowerBand = basis - dev

// RSI Calculation
rsi = ta.rsi(close, rsiLength)

// ATR Calculation for Stop Loss
atr = ta.atr(atrLength)

// Entry Conditions: Mean Reversion
longCondition = close < lowerBand and rsi < rsiOversold
shortCondition = close > upperBand and rsi > rsiOverbought

// Stop Loss and Take Profit based on ATR
longStopLoss = close - atr * 1.0  // 1x ATR stop loss for long trades
shortStopLoss = close + atr * 1.0  // 1x ATR stop loss for short trades

longTakeProfit = close + (close - longStopLoss) * rrRatio  // 0.75x ATR take profit
shortTakeProfit = close - (shortStopLoss - close) * rrRatio  // 0.75x ATR take profit

// Calculate position size based on risk
equity = strategy.equity
riskAmount = equity * riskPerTrade
qtyLong = riskAmount / (close - longStopLoss)
qtyShort = riskAmount / (shortStopLoss - close)

// Long Trade
if (longCondition)
    strategy.entry("Long", strategy.long, qty=qtyLong)
    strategy.exit("Take Profit/Stop Loss", from_entry="Long", limit=longTakeProfit, stop=longStopLoss)

// Short Trade
if (shortCondition)
    strategy.entry("Short", strategy.short, qty=qtyShort)
    strategy.exit("Take Profit/Stop Loss", from_entry="Short", limit=shortTakeProfit, stop=shortStopLoss)

// Plot Bollinger Bands
plot(upperBand, color=color.red, linewidth=2, title="Upper Bollinger Band")
plot(lowerBand, color=color.green, linewidth=2, title="Lower Bollinger Band")
plot(basis, color=color.gray, linewidth=2, title="Bollinger Basis")

// Plot RSI for visual confirmation
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiOversold, "Oversold", color=color.green)
plot(rsi, color=color.purple, title="RSI")


관련

더 많은