
La estrategia se basa en el principio de la horquilla de la media móvil para crear una señal de negociación. Combina una media móvil con tres parámetros diferentes en el corto, mediano y largo plazo para determinar el estado vacante del mercado mediante la comparación de las relaciones altas y bajas de las tres medias para producir una señal de negociación.
La estrategia establece tres promedios móviles, un promedio móvil simple a corto plazo, un promedio móvil ponderado a mediano plazo y un promedio móvil indexado a largo plazo. En concreto, se establece una línea SMA de 1 longitud, una línea WMA de 20 longitud y una línea EMA de 25 longitud.
Cuando el SMA corto atraviesa la línea WMA intermedia y el precio de cierre es superior a la línea WMA, indica que el mercado se invierte de abajo hacia arriba y forma una señal de múltiples cabezas; cuando el SMA corto atraviesa la línea WMA intermedia o el precio de cierre es inferior a la línea WMA, es una señal de cabezas vacías. Por lo tanto, la estrategia juzga el estado de múltiples huecos del mercado comparando los altibajos y cruces de las tres líneas medias.
La estrategia combina tres líneas de medias diferentes, corta, media y larga, que responden a los cambios en el mercado en diferentes períodos y mejoran la precisión de la captura de tendencias. En particular, la WMA a medio plazo tiene un mejor efecto de desactivación de la oscilación y puede filtrar eficazmente las señales de error. Además, la estrategia solo emite señales de construcción de posición cuando las señales múltiples de SMA y precio de cierre alcanzan una alta consistencia, lo que evita los whipsaws y asegura la eficacia de cada entrada.
La estrategia puede tener un riesgo de error. Cuando se produce una señal de error en el SMA a corto plazo, puede causar pérdidas innecesarias debido a que la estrategia depende estrictamente de la señal de la línea SMA. Además, la estrategia es más sensible a los parámetros, y cuando el mercado entra en una zona de convulsión y los parámetros se ajustan mal, se producen una gran cantidad de operaciones erróneas.
Para prevenir estos riesgos, se recomienda ajustar la longitud de la línea media, relajar las condiciones de negociación adecuadamente y establecer un stop loss para controlar las pérdidas individuales. También se puede suspender la negociación estratégica cuando la tendencia del mercado no es obvia.
La estrategia puede ser optimizada en los siguientes aspectos:
Añadir más tipos de indicadores de línea media, como la línea KC, para formar un conjunto de indicadores y mejorar la precisión de los juicios
Factores que aumentan el volumen de transacciones, como el avance en el volumen
Indicadores de volatilidad para evitar el fracaso de la oscilación
Entrenamiento y optimización de parámetros con métodos como el aprendizaje automático
La estrategia es sencilla y confiable para juzgar la volatilidad del mercado en función de la relación en tiempo real entre el cruce y el cierre de los precios de las tres líneas medias. La combinación de líneas medias de diferentes longitudes permite una detección eficaz de tendencias y una mayor calidad de la señal. La estrategia puede aumentar aún más la orientación y la estabilidad al ajustar adecuadamente los parámetros e introducir más indicadores auxiliares.
/*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))