El objetivo de esta estrategia es identificar los puntos de reversión de las tendencias a la baja a corto plazo de los activos e invertir una cantidad fija de dinero en esos puntos.
Esta estrategia opera en un marco de tiempo mensual. Hay 240 barras de 1 hora en cada mes, que se utilizan para determinar el momento de las inversiones de tendencia.
Específicamente, la estrategia calcula la diferencia entre la EMA rápida y la EMA lenta (EMA_CD), así como la línea de señal de EMA_CD. Cuando la línea rápida cruza por encima de la línea de señal, determina el final de una tendencia a la baja a corto plazo y activa una señal de compra.
Después de la señal de compra, la estrategia cerrará todas las posiciones al final del mes. Luego el proceso se repite al mes siguiente, con compras y tenencias periódicas fijas durante un mes.
Esto nos permite pescar en el fondo al final de los declives a corto plazo, y el costo promedio en dólares a intervalos fijos.
La mayor ventaja de esta estrategia es que puede filtrar los mercados de rango y solo comprar en puntos de inversión de tendencia, por lo que el costo del dólar promedia a precios relativamente mejores.
Además, el uso de EMA para determinar los puntos de reversión puede ser más estable y preciso en comparación con solo mirar las reversiones de las velas.
Por último, el stop loss mensual bloquea el rendimiento de cada inversión mensual, limitando la pérdida máxima por mes.
El mayor riesgo de esta estrategia es que los precios continúen disminuyendo después de la compra, lo que lleva a la parada de pérdida al final del mes.
Podemos optimizar los parámetros de la EMA para mejorar la identificación, o combinar otros indicadores como el RSI para confirmar las señales de reversión.
Otro riesgo es el nivel de stop loss. Un stop loss demasiado ajustado puede ser detenido fácilmente por fluctuaciones a corto plazo. Un stop loss demasiado amplio no limita las pérdidas. El parámetro óptimo debe encontrarse mediante la prueba de diferentes niveles de stop loss.
La estrategia puede mejorarse en los siguientes ámbitos:
Optimizar los períodos de EMA para encontrar la combinación óptima de parámetros para identificar las reversiones.
Añadir otros filtros como RSI para confirmar las señales de reversión.
Prueba diferentes niveles de stop loss para encontrar el punto óptimo que maximice la prevención de pérdidas sin ser cortado.
Considere la posibilidad de agregar un stop de seguimiento en la parte superior del stop loss para ajustar el nivel de stop dinámicamente en función del precio.
Prueba diferentes plazos como diarios o semanales para ver cuál funciona mejor para esta estrategia.
La idea general de esta estrategia es simple y clara: utilizar la EMA para identificar inversiones de tendencia a corto plazo y el costo promedio del dólar en los puntos de inversión mensualmente. Puede filtrar eficazmente los mercados agitados e invertir a precios relativamente bajos. El espacio de optimización se encuentra principalmente en el ajuste de parámetros y las técnicas de stop loss. En general, este es un excelente concepto de estrategia para la asignación de activos fijos, que vale la pena probar y mejorar.
/*backtest start: 2023-09-07 00:00:00 end: 2023-10-07 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © BHD_Trade_Bot // @version=5 // strategy( // shorttitle = 'DCA After Downtrend', // title = 'DCA After Downtrend (by BHD_Trade_Bot)', // overlay = true, // calc_on_every_tick = true, // calc_on_order_fills = true, // use_bar_magnifier = true, // pyramiding = 100, // initial_capital = 0, // default_qty_type = strategy.cash, // default_qty_value = 1000, // commission_type = strategy.commission.percent, // commission_value = 0.1) // Backtest Time Period start_year = input(title='Start year' ,defval=2017) start_month = input(title='Start month' ,defval=1) start_day = input(title='Start day' ,defval=1) start_time = timestamp(start_year, start_month, start_day, 00, 00) end_year = input(title='end year' ,defval=2050) end_month = input(title='end month' ,defval=1) end_day = input(title='end day' ,defval=1) end_time = timestamp(end_year, end_month, end_day, 23, 59) window() => true // EMA ema50 = ta.ema(close, 50) ema200 = ta.ema(close, 200) // EMA_CD emacd = ema50 - ema200 emacd_signal = ta.ema(emacd, 20) hist = emacd - emacd_signal // Count n candles after x long entries var int nPastCandles = 0 var int entryNumber = 0 nPastCandles := nPastCandles + 1 // ENTRY CONDITIONS // 8 hours per day => 240 hours per month entry_condition1 = nPastCandles > entryNumber * 240 // End of downtrend entry_condition2 = ta.crossover(emacd, emacd_signal) ENTRY_CONDITIONS = entry_condition1 and entry_condition2 if ENTRY_CONDITIONS and window() entryNumber := entryNumber + 1 entryId = 'Long ' + str.tostring(entryNumber) strategy.entry(entryId, strategy.long) // CLOSE CONDITIONS // Last bar CLOSE_CONDITIONS = barstate.islast if CLOSE_CONDITIONS strategy.close_all() // Draw plot(ema50, color=color.orange, linewidth=3) plot(ema200, color=entry_condition1 ? color.green : color.red, linewidth=3)