本策略通过计算不同周期的移动平均线,设定它们的交叉作为买入和卖出信号,实现对趋势的跟踪。核心逻辑是使用更短周期的移动平均线来跟踪更长周期趋势的转折。
以上交易信号设定的背后逻辑是,短周期移动平均线能更快地响应价格变化,反映最新趋势;长周期移动平均线更能体现总体趋势,过滤噪音。当短周期移动平均线穿过长周期移动平均线时,表示趋势发生转折,因此设定交易信号。
本策略通过简单的移动平均线交叉方式,捕捉价格趋势的转变,属于典型的趋势跟踪策略。优点是简单易懂,易于操作,可以通过调整参数适应多种市场环境。缺点是对突发事件反应不灵敏,容易产生错误信号。总体而言,本策略思路清晰,为量化交易的入门策略之一,但实盘应用时需要注意风险控制,并进行适当优化。
/*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")