
Chiến lược này là một hệ thống theo dõi xu hướng dựa trên nhiều lớp trung bình di chuyển ((SMA), kết hợp với kỹ thuật phát hiện chéo chữ số chính xác. Nó xác định xu hướng thị trường bằng cách liên kết theo cấp bậc của trung bình di chuyển 20, 50, 100 và 200 chu kỳ và sử dụng giá thực tế và chéo của trung bình di chuyển để kích hoạt tín hiệu giao dịch.
Chiến lược sử dụng một cơ chế lọc xu hướng ba tầng, yêu cầu đường trung bình 50 chu kỳ nằm trên đường trung bình 100 chu kỳ, và đường trung bình 100 chu kỳ nằm trên đường trung bình 200 chu kỳ để xác nhận xu hướng tăng, ngược lại xác nhận xu hướng giảm. Tín hiệu nhập dựa trên giao thoa của giá với đường trung bình 50 chu kỳ, sử dụng dữ liệu phân đoạn để thực hiện phát hiện giao thoa chính xác, xác định thời điểm giao thoa xảy ra bằng cách so sánh hành vi giá hiện tại với mối quan hệ vị trí của một đường K trước.
Đây là một chiến lược theo dõi xu hướng có cấu trúc, logic rõ ràng, sử dụng nhiều lớp trung bình di chuyển kết hợp, đảm bảo độ tin cậy của tín hiệu và theo dõi xu hướng hiệu quả. Chiến lược được thiết kế với sự cân nhắc đầy đủ về tính thiết thực và tính phổ biến, phù hợp để sử dụng trong các môi trường thị trường khác nhau. Bằng cách tối ưu hóa và hoàn thiện hơn nữa, chiến lược này có khả năng hoạt động tốt hơn trong giao dịch thực tế.
/*backtest
start: 2024-02-22 00:00:00
end: 2024-06-25 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Multi-SMA Strategy - Core Signals", overlay=true)
// ———— Universal Inputs ———— //
int smaPeriod1 = input(20, "Fast SMA")
int smaPeriod2 = input(50, "Medium SMA")
bool useTickCross = input(true, "Use Tick-Precise Crosses")
// ———— Timezone-Neutral Calculations ———— //
sma20 = ta.sma(close, smaPeriod1)
sma50 = ta.sma(close, smaPeriod2)
sma100 = ta.sma(close, 100)
sma200 = ta.sma(close, 200)
// ———— Tick-Precise Cross Detection ———— //
golden_cross = useTickCross ?
(high >= sma50 and low[1] < sma50[1]) :
ta.crossover(sma20, sma50)
death_cross = useTickCross ?
(low <= sma50 and high[1] > sma50[1]) :
ta.crossunder(sma20, sma50)
// ———— Trend Filter ———— //
uptrend = sma50 > sma100 and sma100 > sma200
downtrend = sma50 < sma100 and sma100 < sma200
// ———— Entry Conditions ———— //
longCondition = golden_cross and uptrend
shortCondition = death_cross and downtrend
// ———— Exit Conditions ———— //
exitLong = ta.crossunder(low, sma20)
exitShort = ta.crossover(high, sma20)
// ———— Strategy Execution ———— //
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
strategy.close("Long", when=exitLong)
strategy.close("Short", when=exitShort)
// ———— Clean Visualization ———— //
plot(sma20, "20 SMA", color.new(color.blue, 0))
plot(sma50, "50 SMA", color.new(color.red, 0))
plot(sma100, "100 SMA", color.new(#B000B0, 0), linewidth=2)
plot(sma200, "200 SMA", color.new(color.green, 0), linewidth=2)
// ———— Signal Markers ———— //
plotshape(longCondition, "Long Entry", shape.triangleup, location.belowbar, color.green, 0)
plotshape(shortCondition, "Short Entry", shape.triangledown, location.abovebar, color.red, 0)
plotshape(exitLong, "Long Exit", shape.xcross, location.abovebar, color.blue, 0)
plotshape(exitShort, "Short Exit", shape.xcross, location.belowbar, color.orange, 0)