Esta estrategia combina un enfoque contrario (compra de caídas) con la lógica de seguimiento de tendencia (sólo cuando el precio está por encima del MA200). La estrategia tiene como objetivo encontrar el mejor momento para comprar caídas que es más probable que sea rentable. El precio por encima del promedio móvil a largo plazo indica el impulso que aumenta la posibilidad de beneficiarse de la compra de activos durante la debilidad a corto plazo.
Esta estrategia calcula el cambio porcentual general del precio durante el período de retroceso para determinar si el precio está en una caída relativa. Cuando el porcentaje de cambio general está por debajo del -3%, el precio se considera en la caída. Además, la estrategia también establece el promedio móvil simple de 200 días como indicador para juzgar la tendencia. Las señales de compra solo se activan cuando el precio está por encima del promedio móvil de 200 días. Utilizando tanto el principio de reversión media como el emparejamiento largo-corto, la estrategia compra la caída durante una tendencia alcista para obtener ganancias.
Esta estrategia combina las ventajas tanto del trading de tendencia como del trading contrario. Por un lado, el uso del promedio móvil a largo plazo para determinar la tendencia evita comprar ciegamente durante una tendencia a la baja. Por otro lado, las caídas de compra proporcionan mejores oportunidades de entrada durante las correcciones a corto plazo. La combinación asegura tanto la seguridad comercial como una mayor probabilidad de ganancia. Además, la estrategia tiene un gran espacio de optimización para parámetros que se pueden ajustar para adaptarse a diferentes mercados, lo que le da una gran adaptabilidad.
El mayor riesgo es que el precio pueda continuar disminuyendo después de que se activa la señal de compra, lo que conduce a pérdidas ampliadas. Además, si el mercado permanece limitado por el rango durante mucho tiempo y el precio no logra romper el promedio móvil, la estrategia también fracasaría. Para mitigar tales riesgos, el período de promedio móvil podría acortarse en consecuencia y los criterios de compra pueden optimizarse para garantizar un margen de seguridad suficiente.
La estrategia puede optimizarse en varios aspectos: 1) optimizar el período de media móvil para adaptarse a diferentes mercados; 2) optimizar los criterios de compra para garantizar un margen suficiente; 3) agregar stop loss para controlar las pérdidas; 4) combinar otros indicadores para juzgar la tendencia y las caídas para mejorar la precisión.
En general, esta es una estrategia típica que combina las ideas comerciales de seguimiento de tendencias y contrarias. Asegura tanto la seguridad comercial como una mayor probabilidad de ganar, con un fuerte valor práctico.
/*backtest start: 2023-12-08 00:00:00 end: 2024-01-07 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Buy The Dips - MA200 Optimised", overlay=false) //Moving average MAinp = input(defval = 100, title = "MA", type = input.integer, minval = 1, step = 1) MA=sma(close, MAinp) //Percent change inp_lkb = input(1, title='Lookback Period') perc_change(lkb) => overall_change = ((close[0] - close[lkb]) / close[lkb]) * 100 // Call the function overall = perc_change(inp_lkb) // === INPUT BACKTEST RANGE === fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => true // create function "within window of time" //Entry/Exit strategy.entry(id="long", long = true, when = window() and overall<-3 and close > MA) strategy.close(id="long", when = window() and overall>1) bgcolor(color = showDate and window() ? color.gray : na, transp = 90) plot(overall, color=color.black, title='Overall Percentage Change', linewidth=3) band1 = hline(1, "Upper Band", color=#C0C0C0) band0 = hline(-2, "Lower Band", color=#C0C0C0) fill(band1, band0, color=#9915FF, transp=90, title="Background") hline(0, title='Center Line', color=color.orange, linestyle=hline.style_solid, linewidth=2)