
Chiến lược này là một hệ thống theo dõi xu hướng động dựa trên tín hiệu giao thoa trung bình động kép. Nó xác định những thay đổi xu hướng thị trường thông qua giao thoa của đường trung bình động hàm mũ 20 ngày (EMA) ngắn hạn và đường trung bình động hàm mũ 50 ngày dài hạn ( EMA) và tự động thực hiện các hoạt động mua và bán. Chiến lược này áp dụng phương pháp phân tích kỹ thuật hoàn thiện, kết hợp các đặc điểm theo dõi xu hướng và quản lý vị thế năng động, phù hợp với môi trường thị trường có tính biến động lớn hơn.
Logic cốt lõi của chiến lược này dựa trên các yếu tố chính sau:
Chiến lược này là một triển khai hiện đại của hệ thống theo dõi xu hướng cổ điển. Thông qua giao dịch theo chương trình, chiến lược giao cắt trung bình động kép truyền thống được hệ thống hóa và chuẩn hóa. Mặc dù có một số rủi ro cố hữu, chiến lược này vẫn có triển vọng ứng dụng tốt thông qua việc tối ưu hóa và cải tiến liên tục. Nên tiến hành tối ưu hóa tham số và kiểm tra lại đầy đủ trước khi sử dụng thực tế.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover Buy/Sell Signals", overlay=true)
// Input parameters for EMAs
emaShortLength = input.int(20, title="Short EMA Length")
emaLongLength = input.int(50, title="Long EMA Length")
// Calculating EMAs
emaShort = ta.ema(close, emaShortLength)
emaLong = ta.ema(close, emaLongLength)
// Plotting EMA crossover lines
plot(emaShort, color=color.green, title="20 EMA")
plot(emaLong, color=color.red, title="50 EMA")
// Buy and Sell signal logic
longCondition = ta.crossover(emaShort, emaLong)
exitLongCondition = ta.crossunder(emaShort, emaLong)
shortCondition = ta.crossunder(emaShort, emaLong)
exitShortCondition = ta.crossover(emaShort, emaLong)
// Plot buy and sell signals on the chart
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal")
plotshape(series=exitLongCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Exit")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")
plotshape(series=exitShortCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Exit")
// Backtesting strategy logic
var float entryPrice = na
var int position = 0 // 1 for long, -1 for short, 0 for no position
if (longCondition and position == 0)
entryPrice := close
position := 1
if (shortCondition and position == 0)
entryPrice := close
position := -1
if (exitLongCondition and position == 1)
strategy.exit("Exit Long", from_entry="Long", limit=close)
position := 0
if (exitShortCondition and position == -1)
strategy.exit("Exit Short", from_entry="Short", limit=close)
position := 0
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)