
Strategi ini memungkinkan untuk melacak tren dengan menghitung rata-rata bergerak dari periode yang berbeda dan mengatur persimpangan mereka sebagai sinyal beli dan jual. Logika inti adalah menggunakan rata-rata bergerak dari periode yang lebih pendek untuk melacak perpindahan dari periode yang lebih lama.
Logika di balik pengaturan sinyal perdagangan di atas adalah bahwa rata-rata bergerak periode pendek dapat merespon perubahan harga lebih cepat dan mencerminkan tren terbaru; rata-rata bergerak periode panjang lebih dapat mencerminkan tren keseluruhan, memfilter kebisingan. Ketika rata-rata bergerak periode pendek melintasi rata-rata bergerak periode panjang, menunjukkan adanya pergeseran tren, sehingga sinyal perdagangan ditetapkan.
Strategi ini menangkap perubahan tren harga dengan cara lintas rata-rata bergerak yang sederhana dan merupakan strategi pelacakan tren yang khas. Kelebihannya adalah sederhana dan mudah dimengerti, mudah dioperasikan, dapat disesuaikan dengan berbagai lingkungan pasar dengan menyesuaikan parameter. Kekurangannya adalah tidak sensitif terhadap reaksi insiden yang tidak terduga, mudah menghasilkan sinyal yang salah.
/*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")