Esta es una estrategia de negociación basada en el cruce de medias móviles dobles. Genera señales de compra y venta cuando dos medias móviles de diferentes longitudes se cruzan. Específicamente, va largo cuando el MA más rápido cruza por encima del MA más lento, y va corto cuando el MA más rápido cruza por debajo del MA más lento.
La lógica central de esta estrategia radica en los principios de cruce entre dos promedios móviles.
En esta estrategia, el MA a corto plazo captura las tendencias a corto plazo, mientras que el MA a largo plazo captura las tendencias a largo plazo.
Específicamente, la estrategia calcula los MA utilizando ta.sma durante el período largo_periodo y el período corto_periodo definidos por los usuarios. Luego utiliza ta.crossover y ta.crossunder para detectar el cruce dorado y el cruce de muerte entre los dos MA. Cuando el MA corto cruza por encima del MA largo, vaya largo. Cuando el MA corto cruza por debajo, vaya corto.
Las principales ventajas de esta estrategia incluyen:
También hay varios riesgos:
Para mitigar los riesgos, se pueden ajustar los parámetros, incorporar el stop loss y el take profit o añadir otros indicadores técnicos.
Hay espacio para una mayor optimización:
En conclusión, esta es una estrategia de inicio ideal para el comercio algorítmico, gracias a su simplicidad en la lógica y los parámetros, mientras que todavía es capaz de capturar eficazmente las reversiones del mercado.
/*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=5 strategy("Cross 2 Moving Average Strategy", shorttitle="2MA Cross", overlay=true) // User-defined input for moving averages long_period = input(20, title="Long Period") short_period = input(5, title="Short Period") type_ma = input.string("SMA", title = "MA type", options = ["SMA", "EMA"]) // Calculating moving averages long_ma = ta.sma(close, long_period) short_ma = ta.sma(close, short_period) // Plot moving averages plot(long_ma, title="Long Moving Average", color=color.red) plot(short_ma, title="Short Moving Average", color=color.green) // Strategy logic for crossing of moving averages longCondition = ta.crossover(short_ma, long_ma) shortCondition = ta.crossunder(short_ma, long_ma) // Entry orders if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // Optional: Add stop loss and take profit stop_loss_perc = input(1, title="Stop Loss (%)") / 100 take_profit_perc = input(2, title="Take Profit (%)") / 100 strategy.exit("Exit Long", from_entry="Long", stop=close*(1-stop_loss_perc), limit=close*(1+take_profit_perc)) strategy.exit("Exit Short", from_entry="Short", stop=close*(1+stop_loss_perc), limit=close*(1-take_profit_perc))