Chiến lược này chủ yếu sử dụng giá cao, thấp và đóng của ngày giao dịch trước đó như mức hỗ trợ và kháng cự cho ngày hiện tại. Nó đi dài khi mức kháng cự bị phá vỡ và đi ngắn khi mức hỗ trợ được kiểm tra lại. Nó thuộc về một chiến lược breakout điển hình.
Mã đầu tiên xác định một hàm calculateSupportResistance để tính toán mức hỗ trợ và kháng cự, lấy giá cao, thấp và đóng của ngày giao dịch trước như mức hỗ trợ và kháng cự của ngày hiện tại.
Sau đó, trong logic chính, hàm này được gọi để có được ba mức giá này và vẽ chúng.
Trong logic backtesting, nếu giá đóng thấp hơn mức thấp của ngày trước trong khi giá hiện tại cao hơn mức thấp đó tạo thành sự phá vỡ, nó sẽ dài. Nếu giá đóng cao hơn mức cao của ngày trước trong khi giá hiện tại thấp hơn mức cao đó tạo thành sự phá vỡ, nó sẽ ngắn.
Thông qua mô hình đột phá này, sự phán đoán về xu hướng và tạo ra các tín hiệu giao dịch được thực hiện.
Sử dụng dữ liệu ngày giao dịch trước để xây dựng mức hỗ trợ và kháng cự của ngày hiện tại, tránh vấn đề tối ưu hóa tham số
Mức hỗ trợ và kháng cự đến từ dữ liệu giao dịch thị trường thực tế, với một số giá trị tham chiếu
Mô hình backtesting đơn giản và trực tiếp, dễ hiểu và thực hiện
Hiển thị trực quan các mức hỗ trợ và kháng cự hình thành nhận thức về giá
Theo dõi thời gian thực của các vụ phá vỡ, bắt kịp thời các cơ hội giao dịch
Mức hỗ trợ và kháng cự thay đổi theo thời gian, khó xác định tính hợp lệ
Không thể dự đoán hướng xu hướng, nguy cơ không có sự đảo ngược
Dễ bị ảnh hưởng bởi các vụ đột nhập giả, nguy cơ nhập cảnh sớm
Không thể xác định sự tồn tại của sự đột phá, khả năng dừng lỗ sớm
Sự thất bại của hỗ trợ và kháng cự cá nhân có nhiều khả năng hơn trong tình trạng biến động thị trường lớn
Các biện pháp đối phó:
Kết hợp nhiều yếu tố khác nhau để đánh giá tính hợp lệ của sự đột phá
Mở rộng phạm vi dừng lỗ phù hợp để bắt được xu hướng
Mở các vị trí theo lô, giảm tác động của biến động cá nhân
Thêm thêm dữ liệu lịch sử như đường 5 ngày, 10 ngày để xác định mức
Bao gồm các chỉ số khác như khối lượng để đánh giá tính hợp lệ của sự đột phá
Đặt lệnh dừng lỗ dựa trên biến động thực tế
Tối ưu hóa quản lý vốn, kiểm soát lỗ đơn
Nhìn chung, đây là một chiến lược đột phá điển hình, đơn giản và trực quan. Bằng cách xây dựng hỗ trợ và kháng cự của ngày hiện tại với dữ liệu ngày trước và kiểm tra lại các mức đột phá của các mức đó cho dài / ngắn. Ưu điểm dễ hiểu và trực tiếp hình dung các mức; nhược điểm là rủi ro đột phá sai và không chắc chắn về sự bền vững.
/*backtest start: 2024-01-22 00:00:00 end: 2024-02-21 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Support and Resistance with Backtesting", overlay=true) // Function to calculate support and resistance levels calculateSupportResistance() => highPrevDay = request.security(syminfo.tickerid, "D", high[1], lookahead=barmerge.lookahead_on) lowPrevDay = request.security(syminfo.tickerid, "D", low[1], lookahead=barmerge.lookahead_on) closePrevDay = request.security(syminfo.tickerid, "D", close[1], lookahead=barmerge.lookahead_on) [highPrevDay, lowPrevDay, closePrevDay] // Call the function to get support and resistance levels [supResHigh, supResLow, supResClose] = calculateSupportResistance() // Plotting support and resistance levels plot(supResHigh, color=color.red, linewidth=2, title="Previous Day High") plot(supResLow, color=color.green, linewidth=2, title="Previous Day Low") plot(supResClose, color=color.blue, linewidth=2, title="Previous Day Close") // Backtesting logic backtestCondition = close[1] < supResLow and close > supResLow strategy.entry("Long", strategy.long, when=backtestCondition) // Plotting buy/sell arrows for backtesting plotarrow(backtestCondition ? 1 : na, colorup=color.green, offset=-1, transp=0)