
La estrategia es un sistema comercial de seguimiento de tendencias que combina señales de cruce de medias móviles con gestión de riesgos ATR. La estrategia captura las tendencias del mercado a través del cruce de promedios móviles rápidos y lentos, y utiliza el indicador ATR para ajustar dinámicamente los niveles de stop loss y ganancias para lograr un control preciso de los riesgos comerciales. La estrategia también incluye un módulo de gestión de dinero que ajusta automáticamente el tamaño de las posiciones en función del capital 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 del cruce de medias móviles y las combina con el control de riesgo dinámico ATR para lograr un sistema de trading de seguimiento de tendencias completo. Los puntos fuertes de la estrategia residen en su adaptabilidad y capacidad de control de riesgos, pero puede tener un rendimiento pobre en mercados volátiles. El rendimiento general de la estrategia se puede mejorar agregando filtros de tendencias y optimizando el sistema de administración de dinero.
/*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)