Esta estrategia utiliza cruces de promedios móviles para determinar la dirección del impulso del precio, complementado con cruces dorados / de muerte para juzgar la tendencia general, para implementar el seguimiento de la tendencia.
La estrategia utiliza cruces de EMA y SMA para determinar la dirección del impulso del precio. EMA reacciona más rápido mientras que SMA reacciona más constantemente. Cuando EMA cruza por encima de SMA, se juzga que el impulso al alza es fuerte, vaya largo. Cuando EMA cruza por debajo de SMA, se juzga que el impulso a la baja es fuerte, vaya corto.
Además, la estrategia también utiliza el cruce de SMA de período rápido y SMA de período lento para determinar la dirección general de la tendencia. Cuando el SMA rápido cruza por encima del SMA lento, es una cruz de oro, lo que indica que el mercado está en tendencia alcista a largo plazo. Cuando el SMA rápido cruza por debajo del SMA lento, es una cruz de muerte, lo que indica que el mercado está en tendencia bajista a largo plazo.
La estrategia identifica la oportunidad larga cuando la EMA cruza por encima de la SMA. Si es una cruz de oro en este momento, significa que ir largo está apoyado tanto por el impulso a corto plazo como por la tendencia a largo plazo, que es un mejor tiempo largo. Si es una cruz de muerte, ir largo solo está apoyado por el impulso a corto plazo y contra la tendencia a largo plazo, que es un tiempo largo más arriesgado.
Los riesgos pueden reducirse combinando otros indicadores para la confirmación de la señal, optimizando los períodos de MA o estableciendo el stop loss.
En general, esta es una estrategia de seguimiento de tendencias relativamente estable y confiable. Considera tanto el impulso del precio a corto plazo como la dirección de la tendencia a largo plazo, generando señales comerciales a través de cruces de MA. En comparación con las estrategias de MA individuales, tiene una mayor fiabilidad al combinar indicadores duales para la confirmación. Pero como estrategia de seguimiento de tendencias, su optimización de parámetros y control de riesgos son muy importantes. Necesita pruebas y ajustes repetidos para realizar realmente su potencial. Con optimizaciones y mejoras continuas, esta estrategia puede convertirse en un componente valioso de una cartera de inversión cuantitativa a largo plazo.
/*backtest start: 2023-09-19 00:00:00 end: 2023-10-19 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Cryptoluc1d //@version=4 strategy("Equal-Length EMA/SMA Crossover Strategy", initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=25, commission_type=strategy.commission.percent, commission_value=0.2, overlay=true) // Create inputs mom_length = input(title="Momentum Length (EMA=SMA)", defval=50) bias_length_fast = input(title="Golden Cross Length (Fast)", defval=50) bias_length_slow = input(title="Golden Cross Length (Slow)", defval=100) // Define MAs ema = ema(close, mom_length) // EMA/SMA crossover of the same period for detecting trend acceleration/deceleration sma = sma(close, mom_length) bias_fast = sma(close, bias_length_fast) // golden/death cross for overall trend bias bias_slow = sma(close, bias_length_slow) // Define signal conditions buy_trend = crossover(ema, sma) and bias_fast >= bias_slow // buy when EMA cross above SMA. if this happens during a bullish golden cross, buying is in confluence with the overall trend (bias). buy_risky = crossover(ema, sma) and bias_fast < bias_slow // buy when EMA cross above SMA. if this happens during a bearish death cross, buying is early, more risky, and not in confluence with the overall trend (bias). buy_late = crossover(sma, bias_slow) and ema > sma // the SMA crossing the Slow_SMA gives further confirmation of bullish trend, but signal comes later. sell = crossunder(ema, sma) // sell when EMA cross under SMA. // Enable option to hide signals, then plot signals show_signal = input(title="Show Signals", defval=true) plotshape(show_signal ? buy_trend : na, title='Trend Buy', style=shape.triangleup, location=location.belowbar, color=color.green, text='TREND BUY') plotshape(show_signal ? buy_risky : na, title='Risky Buy', style=shape.triangleup, location=location.belowbar, color=color.olive, text='RISKY BUY') plotshape(show_signal ? buy_late : na, title='Late Buy', style=shape.triangleup, location=location.belowbar, color=color.lime, text='LATE BUY') plotshape(show_signal ? sell : na, title='Sell', style=shape.triangledown, location=location.abovebar, color=color.red, text='SELL') // Define entry and exit conditions longCondition = ema > sma and bias_fast >= bias_slow // LONG when EMA above SMA, and overall trend bias is bullish if (longCondition) strategy.entry("BUY TREND", strategy.long) exitLong = crossunder(ema, sma) // close LONG when EMA cross under SMA strategy.close("BUY TREND", when=exitLong) // // short conditions. turned off because up only. // shortCondition = ema < sma and bias_fast <= bias_slow // SHORT when EMA under SMA, and overall trend bias is bearish // if (shortCondition) // strategy.entry("SELL TREND", strategy.short) // exitShort = crossover(ema, sma) // close SHORT when EMA cross over SMA // strategy.close("SELL TREND", when=exitShort) // Enable option to show MAs, then plot MAs show_ma = input(title="Show MAs", defval=false) plot(show_ma ? ema : na, title="Momentum EMA", color=color.green, linewidth=1) plot(show_ma ? sma : na, title="Momentum SMA", color=color.yellow, linewidth=1) plot(show_ma ? bias_fast : na, title="Golden Cross SMA (Fast)", color=color.orange, linewidth=2) plot(show_ma ? bias_slow : na, title="Golden Cross SMA (Slow)", color=color.red, linewidth=2)