Esta estrategia es un sistema de trading de seguimiento de tendencias que combina señales de cruce de promedios móviles con gestión de riesgos basada en ATR. Captura las tendencias del mercado a través del cruce de promedios móviles rápidos y lentos mientras utiliza el indicador ATR para ajustar dinámicamente los niveles de stop-loss y take-profit, logrando un control preciso de los riesgos comerciales. La estrategia también incluye un módulo de gestión de dinero que ajusta automáticamente los tamaños de las posiciones basados en el patrimonio de la cuenta y los parámetros de riesgo preestablecidos.
La lógica central de la estrategia se basa en los siguientes componentes clave:
Esta estrategia captura tendencias a través de cruces MA y combina el control de riesgo dinámico ATR para crear una tendencia completa siguiendo el sistema de negociación. Las fortalezas de la estrategia se encuentran en su adaptabilidad y capacidades de control de riesgos, aunque puede tener un rendimiento inferior en mercados agitados. A través de la adición de filtros de tendencia y la optimización del sistema de gestión de dinero, hay margen para mejorar el rendimiento general de la estrategia.
/*backtest start: 2024-12-06 00:00:00 end: 2025-01-04 08:00:00 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © davisash666 //@version=5 strategy("Trend-Following Strategy", overlay=true) // Inputs for strategy parameters timeframe = input.timeframe("D", "Timeframe") risk_tolerance = input.float(2.0, "Risk Tolerance (%)", step=0.1) / 100 capital_allocation = input.float(200, "Capital Allocation (%)", step=1) / 100 // Technical indicators (used to emulate machine learning) ma_length_fast = input.int(10, "Fast MA Length") ma_length_slow = input.int(50, "Slow MA Length") atr_length = input.int(14, "ATR Length") atr_multiplier = input.float(1.5, "ATR Multiplier") // Calculations fast_ma = ta.sma(close, ma_length_fast) slow_ma = ta.sma(close, ma_length_slow) atr = ta.atr(atr_length) // Entry and exit conditions long_condition = ta.crossover(fast_ma, slow_ma) short_condition = ta.crossunder(fast_ma, slow_ma) // Risk management stop_loss_long = close - (atr * atr_multiplier) stop_loss_short = close + (atr * atr_multiplier) take_profit_long = close + (atr * atr_multiplier) take_profit_short = close - (atr * atr_multiplier) // Capital allocation position_size = strategy.equity * capital_allocation // Execute trades if long_condition strategy.entry("Long", strategy.long, qty=position_size / close) strategy.exit("Take Profit/Stop Loss", "Long", stop=stop_loss_long, limit=take_profit_long) if short_condition strategy.entry("Short", strategy.short, qty=position_size / close) strategy.exit("Take Profit/Stop Loss", "Short", stop=stop_loss_short, limit=take_profit_short) // Plotting for visualization plot(fast_ma, color=color.green, title="Fast MA") plot(slow_ma, color=color.red, title="Slow MA") plot(stop_loss_long, color=color.blue, title="Stop Loss (Long)", linewidth=1, style=plot.style_cross) plot(take_profit_long, color=color.purple, title="Take Profit (Long)", linewidth=1, style=plot.style_cross)