
Esta estrategia permite el seguimiento de las tendencias mediante el cálculo de promedios móviles de diferentes períodos y la configuración de sus cruces como señales de compra y venta. La lógica central es el uso de promedios móviles de períodos más cortos para seguir el giro de tendencias de períodos más largos.
La lógica detrás de la configuración de las señales de negociación anteriores es que las medias móviles de corto plazo responden más rápidamente a los cambios de precios y reflejan las tendencias más recientes; las medias móviles de largo plazo reflejan mejor la tendencia general y filtran el ruido. Cuando las medias móviles de corto plazo atraviesan las medias móviles de largo plazo, indica que la tendencia ha cambiado, por lo que se configura una señal de negociación.
Esta estrategia es una estrategia típica de seguimiento de tendencias. Sus ventajas son su simplicidad y facilidad de comprensión, su facilidad de operación y su adaptabilidad a varios entornos de mercado mediante el ajuste de los parámetros. Sus desventajas son su falta de sensibilidad a los eventos inesperados y su propensión a generar señales erróneas. En general, esta estrategia es clara y es una de las estrategias de entrada a la negociación cuantitativa.
/*backtest
start: 2023-02-23 00:00:00
end: 2024-02-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MA Crossover Strategy", overlay=true)
// Функция для получения скользящего среднего на заданном таймфрейме
getMA(source, length, timeframe) =>
request.security(syminfo.tickerid, timeframe, ta.sma(source, length))
// Вычисляем 200-периодное и 100-периодное скользящее среднее для текущего таймфрейма
ma200 = getMA(close, 200, "240")
ma100 = getMA(close, 100, "240")
// Открываем позицию Long, если 100-периодное скользящее среднее пересекает 200-периодное сверху вниз
if (ta.crossover(ma100, ma200))
strategy.entry("Long", strategy.long)
// Закрываем позицию Long, если 100-периодное скользящее среднее пересекает 200-периодное сверху вниз
if (ta.crossunder(ma100, ma200))
strategy.close("Long")
// Открываем позицию Short, если 100-периодное скользящее среднее пересекает 200-периодное сверху вниз
if (ta.crossunder(ma100, ma200))
strategy.entry("Short", strategy.short)
// Закрываем позицию Short, если 100-периодное скользящее среднее пересекает 200-периодное снизу вверх
if (ta.crossover(ma100, ma200))
strategy.close("Short")
// Рисуем линии скользящих средних на графике
plot(ma200, color=color.blue, linewidth=2, title="200 MA")
plot(ma100, color=color.red, linewidth=2, title="100 MA")