Esta estrategia genera señales comerciales basadas en la cruz dorada y la cruz muerta de los promedios móviles. Incorpora tres promedios móviles con diferentes configuraciones de parámetros: a corto, mediano y largo plazo. Al comparar la relación de altura entre estos tres MA, determina el estado alcista / bajista del mercado y produce señales comerciales.
La estrategia establece tres líneas de promedio móvil, que son una media móvil simple a corto plazo, una media móvil ponderada a mediano plazo y una media móvil exponencial a largo plazo.
Cuando la línea SMA a corto plazo cruza la línea WMA a mediano plazo hacia arriba y el precio de cierre también es más alto que la línea WMA, indica que el mercado se invierte hacia arriba y forma una señal alcista. Cuando la SMA a corto plazo cruza por debajo de la WMA a mediano plazo o el precio de cierre es más bajo que la WMA, da una señal bajista. Por lo tanto, esta estrategia juzga el estado alcista / bajista del mercado comparando la altura y el cruce entre los tres MA.
La estrategia incorpora tres MAs de corto, mediano y largo plazo, que pueden reaccionar a los cambios del mercado en diferentes ciclos y mejorar la precisión de la captura de tendencias. Especialmente, la WMA a mediano plazo tiene un mejor efecto de filtrar el ruido del mercado y evita señales erróneas de manera efectiva. Además, la estrategia solo envía señales largas cuando las señales alcistas de la SMA y el precio de cierre alcanzan una alta consistencia, lo que previene las sacas y garantiza que cada entrada sea eficiente.
La estrategia tiene el riesgo de señales falsas. Cuando la SMA a corto plazo produce señales incorrectas, pueden producirse pérdidas innecesarias debido a la estricta dependencia de la estrategia de la línea SMA. Además, la estrategia es sensible a los parámetros. Cuando los parámetros se establecen incorrectamente bajo los mercados de rango, se pueden desencadenar muchas operaciones incorrectas.
Para evitar tales riesgos, se sugiere ajustar las longitudes de los MA, aflojar adecuadamente las condiciones de negociación y establecer un stop loss para limitar las pérdidas individuales.
La estrategia se puede optimizar a partir de los siguientes aspectos:
Incorporar más tipos de MAs como KC para formar una cartera de indicadores para mejorar la precisión
Añadir factores de volumen como la ruptura con alto volumen
Combinar los indicadores de volatilidad para evitar el fracaso en los mercados agitados
Emplear el aprendizaje automático para entrenar y optimizar parámetros
La estrategia determina el estado alcista / bajista del mercado basado en la relación de cruce y altura entre tres MA y los precios de cierre. Al combinar MA de diferentes términos, puede descubrir efectivamente las tendencias y las señales son de alta calidad. Con el ajuste adecuado de los parámetros e introducir más indicadores auxiliares, la estrategia puede mejorarse aún más en pertinencia y estabilidad.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Candle Close Strategy KHANH 11/11/2023", overlay=true, initial_capital=100, commission_type=strategy.commission.percent, commission_value=0.0000005, default_qty_type=strategy.percent_of_equity, default_qty_value=100) len1 = input.int(1, title="SMA #1 Length", minval=1) src1 = input(close, title="SMA Source #1") out1 = ta.sma(src1, len1) plot(out1, title="SMA #1", color=close >= out1 ? color.rgb(120, 123, 134, 100) : color.rgb(120, 123, 134, 100), linewidth=1) len2 = input.int(20, title="HMA #2 Length", minval=1) src2 = input(close, title="HMA Source #2") out2 = ta.hma(src2, len2) plot(out2, title="HMA #2", color=close >= out2 ? color.rgb(253, 255, 254, 100) : color.rgb(255, 255, 255, 100), linewidth=1) len3 = input.int(25, title="EMA #3 Length", minval=1) src3 = input(close, title="EMA Source #3") out3 = ta.ema(src3, len3) plot(out3, title="EMA #3", color=close >= out3 ? color.blue : color.blue, linewidth=1) // Define the long condition longCondition = (out1 > out2 and close > out2) // Define the short condition shortCondition = (out1 < out2 or close < out2) // Entry conditions if (longCondition) strategy.entry("Long",strategy.long) else if (shortCondition) strategy.entry("Short", strategy.short) // Trade channel plot PeriodLookBack = input(55, title="Period Look Back") xHighest55 = request.security(syminfo.tickerid, timeframe.period, ta.highest(PeriodLookBack)) xLowest55 = request.security(syminfo.tickerid, timeframe.period, ta.lowest(PeriodLookBack)) plot(xHighest55[1], color=color.red, title="HH") plot(xLowest55[1], color=color.green, title="LL") //@version=5 //indicator("Custom Moving Averages", shorttitle="CMA", overlay=true) shortLength = input(defval=40, title="Short Length") longLength = input(defval=80, title="Long Length") // Sử dụng khung thời gian của biểu đồ đang sử dụng thay vì cố định là "D" shortTopBorder = request.security(syminfo.tickerid, timeframe.period, ta.highest(high, shortLength)) shortBottomBorder = request.security(syminfo.tickerid, timeframe.period, ta.lowest(low, shortLength)) longTopBorder = request.security(syminfo.tickerid, timeframe.period, ta.highest(high, longLength)) longBottomBorder = request.security(syminfo.tickerid, timeframe.period, ta.lowest(low, longLength)) shortAverageLine = (shortTopBorder + shortBottomBorder) / 2 longAverageLine = (longTopBorder + longBottomBorder) / 2 plot(shortAverageLine, color=color.new(#fc0000, 0)) plot(longAverageLine, color=color.new(#01ff27, 0))