
La estrategia es una estrategia de combinación de promedios móviles dinámicos con múltiples períodos de tiempo. Utiliza promedios móviles indicativos de diferentes longitudes (EMA) para determinar tendencias y entrar y salir. La barra MAX en el nombre de la estrategia indica que se utilizan múltiples EMA, y la barra dinámica indica que la longitud de la EMA es ajustable.
La estrategia utiliza 7 EMA de diferentes velocidades, desde el más rápido hasta el más lento: 3 EMA de ciclo, 15 ciclo, 19 ciclo, 50 ciclo, 100 ciclo, 150 ciclo y 200 ciclo. Los 7 EMA forman una matriz de escala, y el precio de cierre debe romper los 7 EMA en orden consecutivo para determinar las señales de posición larga y corta, lo que garantiza la entrada de fuerza después de la reversión de la tendencia.
Además, la estrategia también combina los dos requisitos para confirmar una señal de posición larga: una alta de innovación de precios y un precio de cierre que rompe los máximos históricos, y utiliza una baja de innovación y un precio de cierre que rompe los mínimos históricos para confirmar una señal de posición corta, lo que evita una falsa ruptura.
Las condiciones de posición cerrada requieren que el precio cerrado rompa sucesivamente de un EMA rápido a un EMA lento, lo que indica un cambio de tendencia; o que el precio mínimo o máximo de la línea K más reciente rompa 4 EMA, lo que indica que la operación debe cerrar inmediatamente.
La solución:
La estrategia tiene una idea clara, utiliza 7 EMA de diferentes velocidades para juzgar la tendencia, y tiene condiciones de doble posición cerrada, lo que permite un juicio más sensible a la inversión de tendencia. Sin embargo, la estrategia en sí misma no establece un stop loss, existe un gran riesgo de pérdida, además de ser susceptible a problemas de salida prematura. En el futuro, la estrategia necesitará mejoras en varias dimensiones, como el stop loss, la optimización de parámetros y el filtrado de indicadores, para que sea un sistema de negociación cuantitativo estable y confiable.
/*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=4
strategy(title="Crypto MAX Trend", shorttitle="Crypto MAX", overlay = true )
Length = input(3, minval=1)
Length2 = input(15, minval=1)
Length3 = input(19, minval=1)
//Length33 = input(25, minval=1)
Length4 = input(50, minval=1)
Length44 = input(100, minval=1)
Length5 = input(150, minval=1)
Length6 = input(171, minval=1)
Length66 = input(172, minval=1)
xPrice = input(close)
xEMA1 = ema(xPrice, Length)
xEMA2 = ema(xPrice, Length2)
xEMA3 = ema(xPrice, Length3)
//xEMA33 = ema(xPrice, Length33)
xEMA4 = ema(xPrice, Length4)
xEMA44 = ema(xPrice, Length44)
xEMA5 = ema(xPrice, Length5)
xEMA6 = ema(xPrice, Length6)
xEMA66 = ema(xPrice, Length66)
// plot(xEMA1, color=color.white)
// plot(xEMA2, color=color.red)
// plot(xEMA3, color=color.green)
// plot(xEMA4, color=color.purple)
// plot(xEMA44, color=color.gray)
// plot(xEMA5, color=color.maroon)
// plot(xEMA6, color=color.blue)
// plot(xEMA66, color=color.orange)
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 = 2020, title = "To Year", minval = 1970)
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
long = close > xEMA1 and xEMA1 > xEMA2 and xEMA2 > xEMA3 and xEMA3 > xEMA4 and xEMA4 > xEMA44 and xEMA44 > xEMA5 and xEMA5> xEMA6 and xEMA6> xEMA66 and close > high[1] and high[1] > high[2] and close > high[3] and close > high[4] and close > high[5] and high[5] > high[6] and time_cond
short = close < xEMA1 and xEMA1 < xEMA2 and xEMA2 < xEMA3 and xEMA3 < xEMA4 and xEMA4 < xEMA44 and xEMA44 < xEMA5 and xEMA5< xEMA6 and xEMA6< xEMA66 and close < low[1] and low[1] < low[2] and close < low[3] and close < low[4] and close< low[5] and low[5] < low[6] and time_cond
notlong = close < xEMA1
strategy.entry("long",1,when=long)
strategy.entry("short",0,when=short)
exitlong1 = xEMA1 < xEMA2 and xEMA2 < xEMA3 and xEMA3 < xEMA4
exitlong2 = crossunder(low,xEMA1) and crossunder(low,xEMA2) and crossunder(low,xEMA3) and crossunder(low,xEMA4)
exitshort1 = xEMA1 > xEMA2 and xEMA2 > xEMA3 and xEMA3 > xEMA4
exitshort2 = crossover(high,xEMA1) and crossover(high,xEMA2) and crossover(high,xEMA3) and crossover(high,xEMA4)
strategy.close("long", when = exitlong1 or exitlong2)
strategy.close("short", when= exitshort1 or exitshort2)