
Chiến lược này thực hiện theo dõi xu hướng bằng cách tính toán các trung bình di chuyển của các chu kỳ khác nhau, đặt các dấu chéo của chúng làm tín hiệu mua và bán. Lý luận cốt lõi là sử dụng các trung bình di chuyển có chu kỳ ngắn hơn để theo dõi các xu hướng có chu kỳ dài hơn.
Lý do đằng sau thiết lập tín hiệu giao dịch trên là trung bình di chuyển ngắn hạn có thể phản ứng nhanh hơn với sự thay đổi giá và phản ánh xu hướng mới nhất; trung bình di chuyển dài hạn có thể thể hiện xu hướng tổng thể hơn, lọc tiếng ồn. Khi trung bình di chuyển ngắn hạn đi qua trung bình di chuyển dài hạn, cho thấy xu hướng biến đổi, do đó thiết lập tín hiệu giao dịch.
Chiến lược này là một trong những chiến lược theo dõi xu hướng điển hình. Ưu điểm là đơn giản, dễ hiểu, dễ vận hành, có thể thích nghi với nhiều môi trường thị trường bằng cách điều chỉnh các tham số. Ưu điểm là không nhạy cảm với các sự kiện bất ngờ, dễ tạo ra tín hiệu sai.
/*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")