Strategi ini menghasilkan isyarat perdagangan dengan mengira purata bergerak dari tempoh yang berbeza dan menggunakan silangannya sebagai isyarat beli dan jual untuk mengikuti trend. Logik terasnya adalah menggunakan purata bergerak tempoh yang lebih pendek untuk mengesan titik perubahan trend tempoh yang lebih lama.
Logik di sebalik isyarat perdagangan adalah bahawa MA tempoh yang lebih pendek dapat bertindak balas terhadap perubahan harga dengan lebih cepat dan mencerminkan trend terkini, sementara MA tempoh yang lebih lama dapat mewakili trend keseluruhan dengan lebih baik dan menapis bunyi bising.
Strategi ini menangkap perubahan trend dengan crossover MA yang mudah. Ia termasuk dalam strategi trend berikut yang tipikal. Kelebihannya adalah mudah, mudah digunakan dan dapat disesuaikan dengan penyesuaian parameter. Kelemahannya adalah tindak balas yang perlahan dan isyarat palsu. Secara keseluruhan ia mempunyai logika yang jelas dan merupakan titik permulaan yang baik untuk perdagangan algo. Pengurusan risiko dan pengoptimuman yang betul diperlukan untuk perdagangan langsung.
/*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")