Esta estrategia es un sistema de negociación adaptativo que integra múltiples métodos de negociación, combinando estrategias de seguimiento de tendencias, trading de rango y breakout para adaptarse a diferentes condiciones del mercado. El sistema utiliza indicadores técnicos como EMA, RSI y OBV para la determinación del estado del mercado, combina el indicador ADX para la confirmación de la fuerza de la tendencia e implementa un stop-loss dinámico basado en ATR para el control de riesgos.
La estrategia contiene tres módulos comerciales principales:
Cada módulo emplea un stop-loss dinámico basado en ATR y establece objetivos de ganancias basados en relaciones riesgo-recompensa definidas por el usuario.
Medidas recomendadas de control de riesgos:
Mejorar la adaptación a la volatilidad del mercado:
Mejorar el mecanismo de cambio de estrategia:
Fortalecer el sistema de gestión del dinero:
Optimiza el filtrado de señales:
Esta estrategia logra una negociación adaptable en diferentes entornos de mercado a través de una combinación de múltiples estrategias y sistemas estrictos de control de riesgos. El diseño modular permite una configuración flexible, mientras que los mecanismos integrales de gestión de dinero aseguran la seguridad comercial. A través de la optimización y mejora continuas, la estrategia muestra una promesa de rendimiento estable en varias condiciones de mercado. Para una mayor robustez en la negociación en vivo, se recomienda adoptar enfoques de gestión de dinero conservadores y evaluar y ajustar regularmente los parámetros de la estrategia.
/*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)