
Эта стратегия позволяет отслеживать тенденции, рассчитывая движущиеся средние различных циклов, и устанавливая их пересечения в качестве сигналов покупки и продажи. Основная логика заключается в использовании движущихся средних более коротких циклов для отслеживания тенденций более длительных циклов.
Логика, лежащая в основе вышеуказанных торговых сигналов, заключается в том, что короткопериодические скользящие средние могут быстрее реагировать на изменения цен и отражать последние тенденции; длиннопериодические скользящие средние лучше отражают общую тенденцию, фильтруя шум. Когда короткопериодические скользящие средние пересекают длиннопериодические скользящие средние, это означает, что тенденция изменилась, поэтому устанавливается торговый сигнал.
Эта стратегия является типичной стратегией для отслеживания тенденций. Преимущества этой стратегии заключаются в том, что она проста в понимании, проста в использовании и может быть адаптирована к различным рыночным условиям путем корректировки параметров. Недостатки заключаются в том, что она не чувствительна к реакции на внезапные события и может создавать ошибочные сигналы.
/*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")