Esta es una estrategia de swing diseñada para mercados de tendencias como criptomonedas y acciones, utilizando grandes marcos de tiempo como 8 horas.
Ir largo cuando el cierre está por encima de la línea media aplicada a alto. Ir corto cuando el cierre está por debajo de la línea media aplicada a bajo.
La estrategia utiliza 7 tipos diferentes de promedios móviles, incluidos SMA, EMA, VWMA, ALMA, SMMA, LSMA y VWMA. Estos MAs se aplican por separado a los precios más altos y más bajos de las velas para generar dos líneas promedio.
La línea media aplicada a los precios altos se llama avg_high. La aplicada a los precios bajos se llama avg_low. Estas dos líneas forman un canal.
Ir largo cuando el cierre está por encima de AVG_high. Ir corto cuando el cierre está por debajo de AVG_low.
El stop loss para el largo es avg_low. Tome ganancia es el precio de entrada *(1 + tp_long). En resumen, stop loss es avg_high, tomar ganancia es el precio de entrada *(1 - tp_short).
La mayor ventaja de esta estrategia es la utilización de múltiples promedios móviles para mejorar la rentabilidad.
Otra ventaja es el enfoque de canal, que limita el rango de stop loss y reduce el riesgo adecuado para el swing trading.
La estrategia tiene dos riesgos principales:
La combinación de múltiples MAs hace que el ajuste de parámetros sea complejo y requiera muchas pruebas y optimización para encontrar el mejor.
En los mercados laterales o sin tendencia, la estrategia tiende a generar pérdidas y pérdidas.
Para mitigar los riesgos, elija productos con tendencias claras y realice extensas pruebas de retroceso y optimización para encontrar parámetros adecuados para las condiciones actuales del mercado.
Áreas de mejora:
Prueba más tipos de MAs para encontrar mejores combinaciones, como SMA, EMA, KAMA, TEMA, etc.
Optimizar las longitudes de los MAs y el ancho del canal para determinar los parámetros óptimos.
Prueba diferentes mecanismos de tomar ganancias y detener pérdidas como paradas de seguimiento o paradas dinámicas.
Incorpore métricas de tendencia como ADX, ATR para evitar problemas durante los mercados agitados.
Optimice las lógicas de entrada y salida con filtros adicionales para reducir las operaciones no válidas.
Esta estrategia de tendencia cambiante mejora la rentabilidad utilizando múltiples MAs y reduce el riesgo a través de canales. Funciona bien para productos de tendencia después de la optimización de parámetros. Pero puede sufrir grandes pérdidas en inversiones de tendencia. Se necesitan más optimizaciones para mitigar los riesgos a la baja.
/*backtest start: 2024-01-20 00:00:00 end: 2024-02-19 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/ // © exlux99 //@version=4 strategy(title="High/Low channel swing", shorttitle="Multi MA swing", overlay=true) fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2000, title = "From Year", minval = 1970) //monday and session // To Date Inputs toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2021, title = "To Year", minval = 1970) startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true ////// length_ma= input(defval=12, title="Length Moving averages", minval=1) ////////////////////////////////SETUP/////////////////////////////////////////// sma_high = sma(high, length_ma) ema_high = ema(high, length_ma) wma_high = wma(high, length_ma) alma_high = alma(high,length_ma, 0.85, 6) smma_high = rma(high,length_ma) lsma_high = linreg(high, length_ma, 0) vwma_high = vwma(high,length_ma) avg_high = (sma_high+ema_high+wma_high+alma_high+smma_high+lsma_high+vwma_high)/7 /////////////////////////////////////////// sma_low = sma(low, length_ma) ema_low = ema(low, length_ma) wma_low = wma(low, length_ma) alma_low = alma(low,length_ma, 0.85, 6) smma_low = rma(low,length_ma) lsma_low = linreg(low, length_ma, 0) vwma_low = vwma(low,length_ma) avg_low = (sma_low+ema_low+wma_low+alma_low+smma_low+lsma_low+vwma_low)/7 ////////////////////////////PLOTTING//////////////////////////////////////////// plot(avg_high , title="avg", color=color.green, linewidth = 4) plot(avg_low , title="avg", color=color.red, linewidth = 4) long= close > avg_high short = close < avg_low tplong=input(0.06, title="TP Long", step=0.01) sllong=input(0.05, title="SL Long", step=0.01) tpshort=input(0.045, title="TP Short", step=0.01) slshort=input(0.05, title="SL Short", step=0.01) if(time_cond) strategy.entry("long",1,when=long) strategy.exit("closelong", "long" , profit = close * tplong / syminfo.mintick, loss = close * sllong / syminfo.mintick, alert_message = "closelong") strategy.close("long", when=crossunder(low,avg_low)) strategy.entry("short",0,when=short) strategy.exit("closeshort", "short" , profit = close * tpshort / syminfo.mintick, loss = close * slshort / syminfo.mintick, alert_message = "closeshort") strategy.close("short",when=crossover(high,avg_high))