
Chiến lược này là một hệ thống giao dịch định lượng cao dựa trên MACD (Moving Average Convergence/Divergence Indicator) để tăng cường độ chính xác của các quyết định giao dịch thông qua hiển thị nền động và nhiều tổ hợp tham số cài đặt trước. Cốt lõi của chiến lược này là nắm bắt các điểm chuyển đổi của xu hướng thị trường thông qua tín hiệu chéo của MACD và hiển thị thị trường theo cách trực quan.
Chiến lược sử dụng mười thiết lập tham số MACD khác nhau, bao gồm các thiết lập tiêu chuẩn: (12 , 26 , 9), ngắn hạn (5 , 35 , 5) và dài hạn (3 , 39 , 9), để phù hợp với các môi trường thị trường khác nhau và phong cách giao dịch. Khi đường MACD và đường tín hiệu giao nhau, hệ thống tạo ra tín hiệu mua; khi giao nhau chết, hệ thống tạo ra bán. Chiến lược tín hiệu tăng cường nhận dạng thị giác bằng cách thay đổi màu nền động (xanh là đa đầu, đỏ là đầu trống) để giúp các nhà giao dịch nắm bắt được xu hướng thị trường tốt hơn.
Đây là một phiên bản tiên tiến của chiến lược MACD có cấu trúc hoàn hảo, logic rõ ràng. Việc nâng cao tính thực tế và khả năng hoạt động của chiến lược thông qua cài đặt trước nhiều tham số và phản hồi trực quan động. Mặc dù có một số rủi ro vốn có, nhưng chiến lược này có khả năng trở thành một hệ thống giao dịch vững chắc sau khi được cải thiện thông qua hướng tối ưu hóa được cung cấp.
/*backtest
start: 2024-10-12 00:00:00
end: 2024-11-11 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Hanzo - Top 10 MACD Strategy", overlay=false) // MACD in a separate pane
// Define dropdown options for MACD settings
macdOption = input.string(title="Select MACD Setting",
defval="Standard (12, 26, 9)",
options=["Standard (12, 26, 9)",
"Short-Term (5, 35, 5)",
"Long-Term (19, 39, 9)",
"Scalping (3, 10, 16)",
"Cryptocurrency (20, 50, 9)",
"Forex (8, 17, 9)",
"Conservative (24, 52, 18)",
"Trend-Following (7, 28, 7)",
"Swing Trading (5, 15, 5)",
"Contrarian (15, 35, 5)"])
// MACD setting based on user selection
var int fastLength = 12
var int slowLength = 26
var int signalLength = 9
switch macdOption
"Standard (12, 26, 9)" =>
fastLength := 12
slowLength := 26
signalLength := 9
"Short-Term (5, 35, 5)" =>
fastLength := 5
slowLength := 35
signalLength := 5
"Long-Term (19, 39, 9)" =>
fastLength := 19
slowLength := 39
signalLength := 9
"Scalping (3, 10, 16)" =>
fastLength := 3
slowLength := 10
signalLength := 16
"Cryptocurrency (20, 50, 9)" =>
fastLength := 20
slowLength := 50
signalLength := 9
"Forex (8, 17, 9)" =>
fastLength := 8
slowLength := 17
signalLength := 9
"Conservative (24, 52, 18)" =>
fastLength := 24
slowLength := 52
signalLength := 18
"Trend-Following (7, 28, 7)" =>
fastLength := 7
slowLength := 28
signalLength := 7
"Swing Trading (5, 15, 5)" =>
fastLength := 5
slowLength := 15
signalLength := 5
"Contrarian (15, 35, 5)" =>
fastLength := 15
slowLength := 35
signalLength := 5
// MACD Calculation
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)
macdHist = macdLine - signalLine
// Buy and Sell conditions based on MACD crossovers
enterLong = ta.crossover(macdLine, signalLine)
exitLong = ta.crossunder(macdLine, signalLine)
// Execute buy and sell orders with price labels in the comments
if (enterLong)
strategy.entry("Buy", strategy.long, comment="Buy at " + str.tostring(close, "#.##"))
if (exitLong)
strategy.close("Buy", comment="Sell at " + str.tostring(close, "#.##"))
// Plot the signal price using plotchar for buy/sell prices
//plotchar(enterLong ? close : na, location=location.belowbar, color=color.green, size=size.small, title="Buy Price", offset=0)
//plotchar(exitLong ? close : na, location=location.abovebar, color=color.red, size=size.small, title="Sell Price", offset=0)
// Background highlighting based on bullish or bearish MACD
isBullish = macdLine > signalLine
isBearish = macdLine < signalLine
// Change background to green for bullish periods and red for bearish periods
bgcolor(isBullish ? color.new(color.green, 90) : na, title="Bullish Background")
bgcolor(isBearish ? color.new(color.red, 90) : na, title="Bearish Background")
// Plot the MACD and Signal line in a separate pane
plot(macdLine, title="MACD Line", color=color.blue, linewidth=2)
plot(signalLine, title="Signal Line", color=color.orange, linewidth=2)
hline(0, "Zero Line", color=color.gray)
plot(macdHist, title="MACD Histogram", style=plot.style_histogram, color=color.red)