Esta estrategia utiliza promedios móviles (MA) y EMA a través de diferentes marcos de tiempo para identificar y comerciar tendencias. Al combinar SMA, EMA de varios períodos, así como cuerpos de velas, puede filtrar eficazmente el ruido del mercado y comerciar tendencias a medio y largo plazo con bajo riesgo.
La idea central se basa en la comparación de 3 SMA de diferentes períodos para determinar el impulso del precio.
Específicamente, la estrategia emplea 3 SMAs - 3-, 8-, y 10-periodo SMA. Cuando el precio está por debajo de los 3 SMAs, se considera una tendencia bajista. La señal larga se activa cuando el precio cruza de nuevo por encima de los SMAs.
Además, una EMA de 5 períodos comprueba si el cuerpo de la vela apunta hacia arriba antes de entrar en operaciones largas.
Para las reglas de salida, el número máximo de cierre rentables o la duración máxima se utilizan como mecanismo de stop loss.
Al combinar los MAs de varios marcos de tiempo, esta estrategia puede filtrar eficazmente el ruido del mercado y capturar tendencias a medio y largo plazo.
El uso de EMA para comprobar la dirección del cuerpo de la vela reduce el deslizamiento innecesario de la compra en las velas que caen.
En general, se trata de un sistema estable y fiable adecuado para seguir la tendencia durante semanas o meses.
La estrategia es sensible a los parámetros. La elección subóptima de 3 períodos SMA o 1 EMA puede deteriorar la calidad de la señal. Los parámetros deben optimizarse para diferentes instrumentos.
El riesgo de brecha no se maneja. Noticias fundamentales repentinas de que los precios de brecha podrían causar pérdidas.
Se pueden añadir más marcos de tiempo de las EMA o de las EMA para mejorar aún más la exactitud de la tendencia.
Se puede probar un stop loss de precio moderado para bloquear las ganancias mientras se reducen las pérdidas en movimientos extremos.
El aprendizaje automático puede optimizar dinámicamente los parámetros para adaptarse a las condiciones cambiantes del mercado.
La estrategia es robusta y confiable en general, utilizando cruces MA para determinar la tendencia complementada por filtro EMA.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Free Strategy #02 (ES / SPY)", overlay=true) // Inputs Quantity = input(1, minval=1, title="Quantity") SmaPeriod01 = input(3, minval=1, title="SMA Period 01") SmaPeriod02 = input(8, minval=1, title="SMA Period 02") SmaPeriod03 = input(10, minval=1, title="SMA Period 03") EmaPeriod01 = input(5, minval=1, title="EMA Period 01") MaxProfitCloses = input(5, minval=1, title="Max Profit Close") MaxBars = input(10, minval=1, title="Max Total Bars") // Misc Variables src = close BarsSinceEntry = 0 MaxProfitCount = 0 Sma01 = sma(close, SmaPeriod01) Sma02 = sma(close, SmaPeriod02) Sma03 = sma(close, SmaPeriod03) Ema01 = ema(close, EmaPeriod01) // Conditions Cond00 = strategy.position_size == 0 Cond01 = close < Sma03 Cond02 = close <= Sma01 Cond03 = close[1] > Sma01[1] Cond04 = open > Ema01 Cond05 = Sma02 < Sma02[1] // Update Exit Variables BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1 MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1]) // Entries strategy.entry(id="L1", long=true, qty=Quantity, when=(Cond00 and Cond01 and Cond02 and Cond03 and Cond04 and Cond05)) // Exits strategy.close("L1", (BarsSinceEntry - 1 >= MaxBars or MaxProfitCount >= MaxProfitCloses))