이 전략은 다양한 시장 조건에 적응하기 위해 트렌드 추적, 범위 거래 및 브레이크아웃 거래 전략을 결합하여 여러 거래 방법을 통합하는 적응 거래 시스템입니다. 이 시스템은 시장 상태를 결정하기 위해 EMA, RSI 및 OBV와 같은 기술적 인 지표를 사용하고, 트렌드 강도를 확인하기 위해 ADX 지표를 결합하고, 리스크 통제를 위해 ATR 기반 동적 스톱 로스를 구현합니다. 전략의 독특함은 사용자가 어떤 거래 전략을 자유롭게 선택하여 돈 관리 매개 변수를 통해 각 거래에 대한 위험을 정확하게 제어 할 수 있다는 것입니다.
이 전략은 세 가지 주요 거래 모듈을 포함합니다.
각 모듈은 ATR 기반의 동적 스톱 로스를 사용하며 사용자 정의된 리스크-어워드 비율을 기반으로 수익 목표를 설정합니다. 시스템은 거래가 충분한 유동 조건에서 이루어지는 것을 보장하기 위해 볼륨 필터를 사용합니다.
권장 위험 관리 조치:
시장 변동성 적응을 강화합니다.
전략 전환 메커니즘 개선:
돈 관리 시스템을 강화합니다.
신호 필터링 최적화:
이 전략은 다중 전략 조합과 엄격한 위험 관리 시스템을 통해 다양한 시장 환경에서 적응적 거래를 달성합니다. 모듈형 설계는 유연한 구성을 허용하며 포괄적인 돈 관리 메커니즘은 거래 안전을 보장합니다. 지속적인 최적화 및 개선으로 전략은 다양한 시장 조건에서 안정적인 성능을 보여줄 수 있습니다. 라이브 거래에서 강화된 탄력성을 위해 보수적인 돈 관리 접근 방식을 채택하고 전략 매개 변수를 정기적으로 평가하고 조정하는 것이 좋습니다.
/*backtest start: 2024-01-01 00:00:00 end: 2024-11-11 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Ceulemans Trading Bot met ADX, Trendfilter en Selecteerbare Strategieën", overlay=true) // Parameters voor indicatoren emaLength = input.int(50, title="EMA Lengte") rsiLength = input.int(14, title="RSI Lengte") obvLength = input.int(20, title="OBV Lengte") rsiOverbought = input.int(65, title="RSI Overbought") rsiOversold = input.int(35, title="RSI Oversold") atrLength = input.int(14, title="ATR Lengte") adxLength = input.int(14, title="ADX Lengte") adxSmoothing = input.int(14, title="ADX Smoothing") // Voeg de smoothing parameter toe // Money Management Parameters capitalRisk = input.float(1.0, title="Percentage van kapitaal per trade", step=0.1) riskReward = input.float(3.0, title="Risk/Reward ratio", step=0.1) stopLossMultiplier = input.float(1.2, title="ATR Stop-Loss Multiplier", step=0.1) // Strategieën selecteren (aan/uit schakelaars) useTrendTrading = input.bool(true, title="Gebruik Trend Trading") useRangeTrading = input.bool(true, title="Gebruik Range Trading") useBreakoutTrading = input.bool(true, title="Gebruik Breakout Trading") // Berekening indicatoren ema = ta.ema(close, emaLength) rsi = ta.rsi(close, rsiLength) obv = ta.cum(ta.change(close) * volume) atr = ta.atr(atrLength) [diplus, diminus, adx] = ta.dmi(adxLength, adxSmoothing) // ADX berekening met smoothing avgVolume = ta.sma(volume, obvLength) // Huidige marktsituatie analyseren isTrending = close > ema and adx > 25 // Trend is sterk als ADX boven 25 is isOversold = rsi < rsiOversold isOverbought = rsi > rsiOverbought isBreakout = close > ta.highest(close[1], obvLength) and obv > ta.cum(ta.change(close[obvLength]) * volume) isRange = not isTrending and (close < ta.highest(close, obvLength) and close > ta.lowest(close, obvLength)) volumeFilter = volume > avgVolume // Strategie logica // 1. Trend Trading met tight stop-loss en ADX filter if (useTrendTrading and isTrending and isOversold and volumeFilter) strategy.entry("Koop Trend", strategy.long) strategy.exit("Exit Trend", stop=strategy.position_avg_price - stopLossMultiplier * atr, limit=strategy.position_avg_price + riskReward * stopLossMultiplier * atr) // 2. Range Trading if (useRangeTrading and isRange and rsi < rsiOversold and volumeFilter) strategy.entry("Koop Range", strategy.long) strategy.exit("Verkoop Range", stop=strategy.position_avg_price - stopLossMultiplier * atr, limit=strategy.position_avg_price + riskReward * stopLossMultiplier * atr) if (useRangeTrading and isRange and rsi > rsiOverbought and volumeFilter) strategy.entry("Short Range", strategy.short) strategy.exit("Exit Short Range", stop=strategy.position_avg_price + stopLossMultiplier * atr, limit=strategy.position_avg_price - riskReward * stopLossMultiplier * atr) // 3. Breakout Trading met volume if (useBreakoutTrading and isBreakout and volumeFilter) strategy.entry("Koop Breakout", strategy.long) strategy.exit("Exit Breakout", stop=strategy.position_avg_price - stopLossMultiplier * atr, limit=strategy.position_avg_price + riskReward * stopLossMultiplier * atr) // Indicatoren plotten plot(ema, title="EMA", color=color.blue, linewidth=2) hline(rsiOverbought, "RSI Overbought", color=color.red) hline(rsiOversold, "RSI Oversold", color=color.green) plot(rsi, title="RSI", color=color.purple) plot(adx, title="ADX", color=color.orange)