
이 전략은 트렌드 추적, 간격 거래 및 돌파 거래의 3 가지 전략의 유연한 조합을 통해 다양한 시장 환경에 적응하는 여러 거래 방법을 통합하는 자율적 거래 시스템입니다. 시스템은 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)