
Strategi ini membolehkan trend dikesan dengan mengira purata bergerak dari pelbagai kitaran dan menetapkan persimpangan mereka sebagai isyarat membeli dan menjual. Logik utamanya adalah menggunakan purata bergerak yang lebih pendek untuk mengesan trend yang lebih lama.
Logik di belakang penyetelan isyarat perdagangan di atas adalah bahawa purata bergerak jangka pendek dapat bertindak balas lebih cepat terhadap perubahan harga, mencerminkan trend terkini; purata bergerak jangka panjang lebih dapat mencerminkan trend keseluruhan, menyaring kebisingan. Apabila purata bergerak jangka pendek melintasi purata bergerak jangka panjang, menunjukkan bahawa trend bertukar, maka isyarat perdagangan ditetapkan.
Strategi ini menangkap perubahan trend harga dengan cara simpang bergerak rata-rata, dan merupakan strategi trend yang tipikal. Kelebihannya adalah mudah difahami, mudah dikendalikan, dan dapat disesuaikan dengan pelbagai keadaan pasaran dengan menyesuaikan parameter. Kekurangannya adalah tidak sensitif terhadap tindak balas kejadian yang tidak disangka-sangka, mudah menghasilkan isyarat 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")