Chiến lược này là một hệ thống theo xu hướng dựa trên bộ lọc đột phá cao trong lịch sử và bộ lọc trung bình động hàng tháng. Nó tạo ra tín hiệu mua bằng cách theo dõi sự đột phá giá trên mức cao trong lịch sử trước đó, trong khi sử dụng Trung bình Di chuyển đơn giản 8 giai đoạn (8 SMA) trên khung thời gian hàng tháng như một bộ lọc bán để giảm rủi ro đột phá sai.
Logic cốt lõi bao gồm hai thành phần chính:
Đây là một xu hướng được thiết kế tốt theo chiến lược với logic rõ ràng. Thông qua sự kết hợp của các xu hướng cao trong lịch sử và trung bình động hàng tháng, nó đạt được cả việc nắm bắt xu hướng hiệu quả và kiểm soát rủi ro hợp lý. Mặc dù có những rủi ro vốn có của sự chậm trễ và đột phá sai, các hướng tối ưu hóa được đề xuất mang lại tiềm năng cải thiện hiệu suất hơn nữa. Chiến lược đặc biệt phù hợp với các thị trường có xu hướng rõ ràng và có thể phục vụ như một công cụ tham chiếu quan trọng cho đầu tư trung và dài hạn.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-11 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Buy Signal on Close Greater Than Previous All-Time High Strategy", overlay=true) // Initialize the previous all-time high var float prevAllTimeHigh = na // Update the all-time high, excluding the current bar's high (use previous bar's high) if (na(prevAllTimeHigh) or high[1] > prevAllTimeHigh) prevAllTimeHigh := high[1] // Monthly closing price and 8 SMA on monthly time frame monthlyClose = request.security(syminfo.tickerid, "M", close) monthlySMA = ta.sma(monthlyClose, 8) // Variables to track the last signal type var int lastSignal = 0 // 0 = None, 1 = Buy, 2 = Sell // Debugging output to check the all-time high and conditions plot(prevAllTimeHigh, color=color.blue, linewidth=1, title="Previous All-Time High") plot(monthlySMA, color=color.green, linewidth=1, title="8 SMA (Monthly)") // Buy signal: when the latest close is greater than the previous all-time high buySignal = close > prevAllTimeHigh and lastSignal != 1 // Sell signal: when the monthly close is below the 8 SMA sellSignal = monthlyClose < monthlySMA and lastSignal != 2 // Update the last signal type after triggering a signal if (buySignal) lastSignal := 1 if (sellSignal) lastSignal := 2 // Execute the strategy orders if (buySignal) strategy.entry("Buy", strategy.long) if (sellSignal) strategy.close("Buy") // Optional: Plot buy and sell signals on the chart for visual reference plotshape(series=buySignal, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small) plotshape(series=sellSignal, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)