Esta estrategia de guión Pine implementa un enfoque de promedio de costo en dólares diario en la plataforma TradingView, incorporando señales táctiles EMA para determinar los puntos de entrada. Sigue la metodología de promedio de costo en dólares para realizar inversiones de cantidad fija todos los días, distribuyendo las compras en el tiempo para mitigar el riesgo. Los cruces EMA luego sirven como el desencadenante específico para las entradas.
La estrategia tiene las siguientes características clave:
Promedio diario del costo en dólares
EMA para las señales de entrada
Pérdida de parada dinámica
Límites de número de operaciones
Específicamente, cada día la estrategia invierte una cantidad fija y calcula las acciones a comprar en función del precio de cierre. Si el precio de cierre cruza por encima de cualquiera de los EMA de 5, 10, 20 días, etc., se activa una señal de compra. Una vez que el recuento de operaciones acumuladas alcanza el límite de 300, no se producirá más compras. Además, si el precio cierra por debajo del SMA de 20 días o alcanza la fecha de salida preseleccionada, todas las posiciones se despejan.
Las ventajas de esta estrategia incluyen:
Diversificación del riesgo
La combinación de EMA evita las retracciones
Control de pérdidas de parada dinámica
Control de los límites comerciales riesgos
Visualización intuitiva de la EMA
Muy personalizable
La estrategia también conlleva algunos riesgos:
Todavía existen riesgos sistémicos
Importe fijo de la inversión
Las EMA no pueden reaccionar a movimientos extremos
Límites de comercio y potencial de ganancia
La colocación de pérdidas de parada requiere cuidado
Más optimizaciones:
Importe de la inversión diaria dinámica
Señales de entrada adicionales
Promedios móviles exponenciales
Límites de posición dinámica
Pérdida de detención de seguimiento
En resumen, esta estrategia diaria de DCA combinada con la EMA realiza el concepto de inversiones periódicas a largo plazo, distribuyendo riesgos en múltiples entradas pequeñas en comparación con grandes compras únicas. Las EMA ayudan a evitar los riesgos de retroceso a corto plazo hasta cierto punto, mientras que el stop loss controla la pérdida máxima. Aún así, los riesgos del cisne negro y las limitaciones del tamaño de la inversión fija deben tenerse en cuenta. Estos aspectos proporcionan direcciones de mejora futuras a través del ajuste de parámetros y combinaciones de indicadores para construir estrategias cuantitativas eficientes pero estables.
/*backtest start: 2024-01-08 00:00:00 end: 2024-01-15 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Daily DCA Strategy with Touching EMAs", overlay=true, pyramiding=10000) // Customizable Parameters daily_investment = input(50000, title="Daily Investment") start_year = input(2022, title="Start Year") start_month = input(1, title="Start Month") start_day = input(1, title="Start Day") end_year = input(2023, title="End Year") end_month = input(12, title="End Month") end_day = input(1, title="End Day") trade_count_limit = input(10000, title="Pyramiding Limit") enable_sell = input(true, title="Enable Sell") start_date = timestamp(start_year, start_month, start_day) var int trade_count = 0 // Calculate the number of shares to buy based on the current closing price shares_to_buy = daily_investment / close // Check if a new day has started and after the start date isNewDay = dayofmonth != dayofmonth[1] and time >= start_date // Buy conditions based on EMA crossovers ema5_cross_above = crossover(close, ema(close, 5)) ema10_cross_above = crossover(close, ema(close, 10)) ema20_cross_above = crossover(close, ema(close, 20)) ema50_cross_above = crossover(close, ema(close, 50)) ema100_cross_above = crossover(close, ema(close, 100)) ema200_cross_above = crossover(close, ema(close, 200)) if isNewDay and (ema5_cross_above or ema10_cross_above or ema20_cross_above or ema50_cross_above or ema100_cross_above or ema200_cross_above) and trade_count < trade_count_limit strategy.entry("Buy", strategy.long, qty=shares_to_buy) trade_count := trade_count + 1 // Dynamic sell conditions (optional) sell_condition = true if enable_sell and sell_condition strategy.close_all() // EMA Ribbon for visualization plot(ema(close, 5), color=color.red, title="EMA 5") plot(ema(close, 10), color=color.orange, title="EMA 10") plot(ema(close, 20), color=color.yellow, title="EMA 20") plot(ema(close, 50), color=color.green, title="EMA 50") plot(ema(close, 100), color=color.blue, title="EMA 100") plot(ema(close, 200), color=color.purple, title="EMA 200")