
Bài viết này giới thiệu về một hệ thống giao dịch theo dõi xu hướng kết hợp hộp Darvas và đường trung bình di chuyển 25 chu kỳ (MA25). Chiến lược này xác định các hộp được hình thành trong khu vực giá tròn và kết hợp với xác nhận xu hướng đồng đều để nắm bắt các hoạt động mạnh mẽ khi phá vỡ. Thiết kế hệ thống đã xem xét đầy đủ về tính liên tục của xu hướng và lọc phá vỡ giả, cung cấp cho các nhà giao dịch một khuôn khổ nhập cảnh thị trường hoàn chỉnh.
Chiến lược bao gồm ba thành phần cốt lõi:
Chiến lược này xây dựng một hệ thống giao dịch vững chắc bằng cách kết hợp lý thuyết hộp Davos cổ điển và theo dõi xu hướng trung bình di chuyển. Ưu điểm chính của hệ thống là có thể nắm bắt hành vi theo xu hướng một cách hiệu quả, đồng thời kiểm soát rủi ro thông qua nhiều cơ chế lọc. Mặc dù có một số chậm trễ, nhưng thông qua tối ưu hóa tham số và quản lý rủi ro hợp lý, chiến lược này có thể đạt được hiệu suất ổn định trong thị trường theo xu hướng.
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("DARVAS BOX with MA25 Buy Condition", overlay=true, shorttitle="AEG DARVAS")
// Input for box length
boxp = input.int(5, "BOX LENGTH")
// Calculate 25-period moving average
ma25 = ta.sma(close, 25)
// Lowest low and highest high within the box period
LL = ta.lowest(low, boxp)
k1 = ta.highest(high, boxp)
k2 = ta.highest(high, boxp - 1)
k3 = ta.highest(high, boxp - 2)
// New high detection
NH = ta.valuewhen(high > k1[1], high, 0)
// Logic to detect top and bottom of Darvas Box
box1 = k3 < k2
TopBox = ta.valuewhen(ta.barssince(high > k1[1]) == boxp - 2 and box1, NH, 0)
BottomBox = ta.valuewhen(ta.barssince(high > k1[1]) == boxp - 2 and box1, LL, 0)
// Plot the top and bottom Darvas Box lines
plot(TopBox, linewidth=3, color=color.green, title="Top Box")
plot(BottomBox, linewidth=3, color=color.red, title="Bottom Box")
plot(ma25, color=#2195f31e, linewidth=2, title="ma25")
// --- Buy and Sell conditions ---
// Buy when price breaks above the Darvas Box AND MA15
buyCondition = ta.crossover(close, TopBox) and close > ma25
// Sell when price drops below the Darvas Box
sellCondition = ta.crossunder(close, BottomBox)
// --- Buy and Sell Signals ---
// Plot BUY+ and SELL labels
plotshape(series=buyCondition, title="Buy+ Signal", location=location.abovebar, color=#72d174d3, style=shape.labeldown, text="BUY")
plotshape(series=sellCondition, title="Sell Signal", location=location.belowbar, color=color.rgb(234, 62, 62, 28), style=shape.labelup, text="SELL")
// --- Strategy execution ---
if (buyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition)
strategy.close("Buy")