Se trata de una estrategia de seguimiento de la tendencia del ETF de índices de impulso basada en promedios móviles. Utiliza el cruce y la pendiente de promedios móviles rápidos y lentos para determinar la dirección de tendencia de la tendencia de impulso de bajo riesgo de los activos del ETF de índices.
La estrategia utiliza promedios móviles de 50 períodos y 150 períodos. Cuando el promedio móvil rápido cruza el promedio móvil lento y la pendiente del promedio móvil rápido es mayor que el umbral, señala una inversión de tendencia alcista para la entrada larga. Cuando el promedio móvil rápido cruza por debajo del promedio móvil lento, o la pendiente del promedio móvil rápido es menor que el umbral, señala una inversión de tendencia bajista para las posiciones de salida.
La estrategia simplemente utiliza la dirección y la pendiente de las medias móviles para determinar la tendencia del mercado, evitando el sobreajuste y controlando eficazmente los riesgos.
Se trata de una tendencia de ETF de índice de impulso de bajo riesgo que sigue una estrategia con las siguientes ventajas:
También hay algunos riesgos:
Soluciones:
Hay algunos ámbitos en los que esta estrategia puede optimizarse aún más:
En conclusión, se trata de una estrategia de seguimiento de tendencias de ETF de índice de impulso de bajo riesgo y fácil de implementar. Determina las direcciones de tendencia utilizando cruces de promedio móvil y tiene ventajas como un fuerte control de riesgos, bajo costo de implementación y ganancias estables. Aunque existen algunos defectos, la estrategia puede mejorarse aún más en muchos aspectos para convertirse en una herramienta efectiva para la asignación de activos de ETF de índice.
/*backtest start: 2023-11-04 00:00:00 end: 2023-12-04 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //please use on daily SPY, or other indexes only strategy("50-150 INDEX TREND FOLLOWING", overlay=true) //user input fastSMA = input(title="Fast Moving Average (Int)",type=input.integer,minval=1,maxval=1000,step=1,defval=50,confirm=false) slowSMA = input(title="Slow Moving Average (Int)",type=input.integer,minval=1,maxval=1000,step=1,defval=150,confirm=false) longSlopeThreshold = input(title="Bullish Slope Angle (Deg)",type=input.integer,minval=-90,maxval=90,step=1,defval=5,confirm=false) shortSlopeThreshold = input(title="Bearish Slope Angle (Deg)",type=input.integer,minval=-90,maxval=90,step=1,defval=-5,confirm=false) atrValue = input(title="Average True Range (Int)",type=input.integer,minval=1,maxval=100,step=1,defval=14,confirm=false) risk = input(title="Risk (%)",type=input.integer,minval=1,maxval=100,step=1,defval=100,confirm=false) //create indicator shortSMA = sma(close, fastSMA) longSMA = sma(close, slowSMA) //calculate ma slope angle(_source) => rad2degree=180/3.14159265359 ang=rad2degree*atan((_source[0] - _source[1])/atr(atrValue)) shortSlope=angle(shortSMA) longSlope=angle(longSMA) //specify crossover conditions longCondition = (crossover(shortSMA, longSMA) and (shortSlope > longSlopeThreshold)) or ((close > shortSMA) and (shortSMA > longSMA) and (shortSlope > longSlopeThreshold)) exitCondition = crossunder(shortSMA, longSMA) or (shortSlope < shortSlopeThreshold) strategy.initial_capital = 50000 //units to buy amount = (risk / 100) * (strategy.initial_capital + strategy.netprofit) units = floor(amount / close) //long trade if (longCondition and strategy.position_size == 0) strategy.order("Long", strategy.long, units) //close long trade if (exitCondition and strategy.position_size > 0) strategy.order("Exit", strategy.short, strategy.position_size) // Plot Moving Average's to chart plot(shortSMA, color=color.blue) plot(longSMA, color=color.green)