Esta estrategia genera señales de trading mediante el cálculo de diferentes tipos de promedios móviles (Simple Moving Average SMA, Exponential Moving Average EMA, Hull Moving Average HMA y Weighted Moving Average VWMA) y la detección de puntos de cruce entre ellos, para determinar la tendencia del mercado y seguirla.
La idea central de esta estrategia es juzgar la tendencia del mercado comparando dos promedios móviles. Específicamente, permite configurar dos MA con diferentes tipos y longitudes a través de parámetros de entrada.
Cuando el MA a corto plazo cruza el MA a largo plazo desde abajo, indica que la tendencia a corto plazo se está fortaleciendo y el mercado está entrando en una tendencia al alza. Por lo tanto, se genera una señal de compra en este punto de cruce. Por el contrario, cuando el MA a corto plazo cruza por debajo del MA a largo plazo, sugiere que la tendencia a corto plazo se está debilitando y el mercado está invirtiendo hacia abajo. En consecuencia, se genera una señal de venta.
Al detectar estos cruces de la OMA, esta estrategia sigue la tendencia del mercado hacia el comercio.
Soluciones:
Esta estrategia se basa en la idea clásica de usar cruces de MA para la detección de tendencias importantes. Con combinaciones flexibles de MA, es simple de implementar y adecuado para la automatización de operaciones algorítmicas. En general, es razonablemente práctico, pero deja espacio para mejoras como ajuste de parámetros, filtros adicionales, etc. para mejorar aún más el rendimiento.
/*backtest start: 2023-12-31 00:00:00 end: 2024-01-30 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 //study(title="MA Crossover Strategy", overlay = true) strategy("MA Crossover Strategy", overlay=true) src = input(close, title="Source") price = request.security(syminfo.tickerid, timeframe.period, src) ma1 = input(25, title="1st MA Length") type1 = input("HMA", "1st MA Type", options=["SMA", "EMA", "HMA", "VWMA"]) ma2 = input(7, title="2nd MA Length") type2 = input("HMA", "2nd MA Type", options=["SMA", "EMA", "HMA", "VWMA"]) f_hma(_src, _length)=> _return = wma((2*wma(_src, _length/2))-wma(_src, _length), round(sqrt(_length))) price1 = if (type1 == "SMA") sma(price, ma1) else if (type1 == "EMA") ema(price, ma1) else if (type1 == "VWMA") vwma(price, ma1) else f_hma(price, ma1) price2 = if (type2 == "SMA") sma(price, ma2) else if (type2 == "EMA") ema(price, ma2) else if (type2 == "VWMA") vwma(price, ma2) else f_hma(price, ma2) //plot(series=price, style=line, title="Price", color=black, linewidth=1, transp=0) plot(series=price1, style=line, title="1st MA", color=blue, linewidth=2, transp=0) plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0) longCondition = crossover(price1, price2) if (longCondition) strategy.entry("Long", strategy.long) shortCondition = crossunder(price1, price2) if (shortCondition) strategy.entry("Short", strategy.short)