Esta estrategia genera señales de negociación basadas en el cruce de dos promedios móviles con períodos diferentes.
La estrategia permite a los usuarios elegir el tipo y la duración de las medias móviles. Los tipos incluyen SMA, EMA, VWMA, etc. La longitud determina el período de las medias móviles.
Se calculan dos promedios móviles basados en la selección del usuario. Si la línea más rápida cruza por encima de la línea más lenta, se forma una cruz dorada y se genera una señal de compra. Si la línea más rápida cruza por debajo de la línea más lenta, se forma una cruz de muerte y se genera una señal de venta.
Cuando el precio promedio a corto plazo está por encima del precio promedio a largo plazo, se considera una tendencia alcista y se deben tomar posiciones largas.
Los riesgos se pueden gestionar optimizando los parámetros, combinando otros indicadores para la generación de señales, implementando stop loss / take profit, etc.
La estrategia tiene una lógica simple y clara de generación de señales con cruce de dos MAs. Permite ajustes flexibles de parámetros y combinaciones con otras estrategias para la optimización, pero los riesgos de los mercados variados deben monitorearse y la gestión de dinero es crucial.
/*backtest start: 2023-09-09 00:00:00 end: 2023-09-13 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's MAs Tests", shorttitle = "MAs tests", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) len = input(30, defval = 30, minval = 2, maxval = 1000, title = "MA length") type = input(1, defval = 1, minval = 1, maxval = 7, title = "Type") src = input(close, defval = close, title = "Source") //DEMA dema = 2 * ema(src, len) - ema(ema(close, len), len) //TEMA xPrice = close xEMA1 = ema(src, len) xEMA2 = ema(xEMA1, len) xEMA3 = ema(xEMA2, len) tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3 //KAMA xvnoise = abs(src - src[1]) nfastend = 0.20 nslowend = 0.05 nsignal = abs(src - src[len]) nnoise = sum(xvnoise, len) nefratio = iff(nnoise != 0, nsignal / nnoise, 0) nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) kama = nz(kama[1]) + nsmooth * (src - nz(kama[1])) //PriceChannel lasthigh = highest(src, len) lastlow = lowest(src, len) center = (lasthigh + lastlow) / 2 ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0 plot(ma, color = blue, linewidth = 3, transp = 0) trend = low > ma ? 1 : high < ma ? -1 : trend[1] longCondition = trend == 1 and trend[1] == -1 if (longCondition) strategy.entry("Long", strategy.long) shortCondition = trend == -1 and trend[1] == 1 if (shortCondition) strategy.entry("Short", strategy.short)