Esta estrategia utiliza cruces MA de 5 días y 78 días para generar señales de persecución de impulso, con el objetivo de capturar las rupturas de precios a corto plazo.
Calcular las medias móviles ponderadas de 3 días, 78 días y 195 días.
Cruce de 3 días por encima de los activadores de 195 días para comprar señal.
Cuando 3 días se sienta por encima de 78 días, y 78 días por encima de 195 días, considerar el canal de tendencia alcista formado, también desencadena comprar.
Establezca la línea de toma de ganancias dinámica 6ATR, venda cuando el precio caiga por debajo de la línea.
Venda la señal cuando 3 días cruce de nuevo por debajo de 195 días.
Múltiples cruces de MA filtran las fallas de manera efectiva.
La obtención de ganancias dinámicas evita los golpes.
La prueba de retroceso muestra un tiempo promedio de retención de 2 horas por operación, adecuado para operaciones de impulso a corto plazo.
El descenso máximo está controlado en torno al 20%.
Los parámetros fijos de la ayuda no se adaptan a los mercados cambiantes.
El período de muestra de 1 año es limitado, se necesitan datos más amplios para verificar la estrategia.
Los parámetros de toma de ganancias y stop loss necesitan optimización para el control de riesgos.
No se adapta a las diferencias de precios.
Es probable que haya altos costos de transacción.
Prueba diferentes combinaciones MA para la optimización.
Optimizar la toma de ganancias y la parada de pérdidas para el equilibrio riesgo-rendimiento.
Configurar filtros de entrada para reducir la probabilidad de atrapados.
Optimice el tamaño de la posición, pirámide de fuerza.
Prueba a través de diferentes productos y plazos más largos.
Simulación de Monte Carlo para evaluar el descenso máximo.
Esta estrategia identifica la tendencia alcista con cruces de MA y establece reglas dinámicas de parada de ganancias con buenos resultados de backtest. Pero el período de muestra limitado, la estabilidad de param permanece verificada y falla en los vacíos. Requiere más backtesting sobre conjuntos de datos más grandes, más filtros para reducir señales falsas, parámetros de parada de ganancias optimizados, evaluación de los costos de transacción. Si pasa las pruebas de optimización y verificación integrales, puede convertirse en un sistema robusto de persecución de impulso a corto plazo.
/*backtest start: 2022-09-14 00:00:00 end: 2023-09-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // © FinTasticTrading 2021/2/14 // This is a 5 day moving average crossing long strategy, used in short term momentum trading strategy. // Momentum trading Strategy: When S&P 500 index is at up trend (or above 60 sma), buy 10+ stocks in top 20% stock RS ranking at equal weight using this MA5X_L strategy. Change stocks when any stock exited by algorithm. // Back test start since 2020/7/1, each long entry for condition 1 is $30000, condition 2 is $20000, with max of 2 long positions. // Setup: 10 minutes chart // Buy condition 1) 3 wma cross up 180 wma (5day) 2) 3wma > 60wma > 180wma UP Trend Arrangement (UTA) // Exit condition 1) 3 wma cross under 180 wma 2) position profit > 20% and 3 wma cross under 6 ATRs line (green) //@version=4 strategy("MA5X_L", overlay=true, pyramiding=2,default_qty_type=strategy.cash, default_qty_value=100000) s_len = input( 3 ) m_len = input( 78 ) // 2 day moving average l_len = input( 195) // equal to 5 Day moving average xl_len = input(390) // 10 day moving average //Draw WMAs s_ma = wma(close,s_len) m_ma = wma(close,m_len) l_ma = wma(close,l_len) xl_ma = sma(close,xl_len) plot(s_ma, color=color.yellow, linewidth=2) plot(m_ma, color=color.fuchsia, linewidth=2) plot(l_ma, color=color.blue, linewidth=2) plot(xl_ma, color = color.gray, linewidth=2) //ATR Stop Profit , length = 40 or 1 day Periods = input(title="ATR Period", type=input.integer, defval=40) Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=6.0) sl=hl2-(Multiplier*atr(Periods)) sl1 = nz(sl[1], sl) sl := s_ma[1] > sl1 ? max(sl, sl1) : sl plot(strategy.position_size > 0 ? sl:na, title="Stop Loss", style=plot.style_linebr, linewidth=2, color=color.green) //Backtest since condition100 = time>=timestamp(2020, 07, 01, 00, 00) //Long Entry Condition 1 : s_ma Cross UP l_ma if crossover(s_ma, l_ma) and condition100 strategy.entry("X Up", strategy.long, qty = 30000/close, comment="X Up") //Long Entry Condition 2 : s_ma > m_ma > l_ma condition31 = s_ma>m_ma and m_ma>l_ma condition32 = condition31[1]==false and condition31 == true and condition100 strategy.entry("UTA", strategy.long, qty = 20000/close, when = condition32, comment="UTA") //Long Exit Condition 1 : 3 wma cross under 180 wma condition50 = crossunder(s_ma, l_ma) strategy.close_all(when = condition50, comment="X Dn") //Long Exit Condition 2 : position profit > 20% and 3 wma cross under 6 ATRs line (green) strategy.close_all(when = crossunder(close,sl) and strategy.openprofit>30000*0.2, comment="Stop")