Chiến lược này sử dụng kênh ATR và lý thuyết đột phá để theo dõi xu hướng bằng cách vào khi kênh bị phá vỡ. Nó thuộc về các chiến lược theo xu hướng. Chiến lược đơn giản và dễ hiểu, sử dụng các kênh trung bình động và các chỉ số ATR để xác định hướng xu hướng và phát ra các tín hiệu giao dịch tại các điểm chính.
Chiến lược này xây dựng các băng thông trên và dưới với giá cao, thấp, đóng và chỉ số ATR để tạo thành một kênh ATR. Chiều rộng kênh được xác định bởi kích thước tham số ATR. Khi giá vượt qua kênh, nó được đánh giá là sự khởi đầu của một xu hướng, tại những điểm nào các vị trí dài hoặc ngắn được nhập. Chiến lược có hai tầng tín hiệu giao dịch. Khi giá vượt qua một chiều rộng ATR, nó được coi là xu hướng mới nổi, kích hoạt các điểm mua / bán tầng đầu tiên. Khi giá vượt qua hai chiều rộng ATR, nó được coi là xu hướng tăng tốc, kích hoạt các điểm mua / bán tầng thứ hai.
Những lợi thế chính của chiến lược này là:
Những rủi ro chính của chiến lược này là:
Các hướng tối ưu hóa cho chiến lược này bao gồm:
Khung tổng thể của chiến lược này là rõ ràng và có thể sử dụng như một bằng chứng về khái niệm. Nhưng có những khoảng trống từ giao dịch trực tiếp cho phép tối ưu hóa đáng kể. Nếu kiểm soát rủi ro và tần suất giao dịch có thể được cải thiện hơn nữa, triển vọng ứng dụng sẽ tốt.
/*backtest start: 2023-12-03 00:00:00 end: 2024-01-02 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Myhaj_Lito //@version=5 strategy("Renko Trend Strategy",shorttitle = "RENKO-Trend str.",overlay = true) TF = input.timeframe(title='TimeFrame', defval="60") ATRlength = input.int(title="ATR length", defval=60, minval=2, maxval=1000) HIGH = request.security(syminfo.tickerid, TF, high) LOW = request.security(syminfo.tickerid, TF, low) CLOSE = request.security(syminfo.tickerid, TF, close) ATR = request.security(syminfo.tickerid, TF, ta.atr(ATRlength)) RENKOUP = float(na) RENKODN = float(na) H = float(na) COLOR = color(na) BUY = int(na) SELL = int(na) UP = bool(na) DN = bool(na) CHANGE = bool(na) RENKOUP := na(RENKOUP[1]) ? (HIGH + LOW) / 2 + ATR / 2 : RENKOUP[1] RENKODN := na(RENKOUP[1]) ? (HIGH + LOW) / 2 - ATR / 2 : RENKODN[1] H := na(RENKOUP[1]) or na(RENKODN[1]) ? RENKOUP - RENKODN : RENKOUP[1] - RENKODN[1] COLOR := na(COLOR[1]) ? color.white : COLOR[1] BUY := na(BUY[1]) ? 0 : BUY[1] SELL := na(SELL[1]) ? 0 : SELL[1] UP := false DN := false CHANGE := false // calculating if not CHANGE and close >= RENKOUP[1] + H * 2 CHANGE := true UP := true RENKOUP := RENKOUP[1] + ATR * 2 RENKODN := RENKOUP[1] + ATR COLOR := color.rgb(0, 255, 170,60) SELL := 0 BUY += 2 BUY if not CHANGE and close >= RENKOUP[1] + H CHANGE := true UP := true RENKOUP := RENKOUP[1] + ATR RENKODN := RENKOUP[1] COLOR := color.rgb(0, 230, 38,60) SELL := 0 BUY += 1 BUY if not CHANGE and close <= RENKODN[1] - H * 2 CHANGE := true DN := true RENKODN := RENKODN[1] - ATR * 2 RENKOUP := RENKODN[1] - ATR COLOR := color.rgb(255, 92, 43,60) BUY := 0 SELL += 2 SELL if not CHANGE and close <= RENKODN[1] - H CHANGE := true DN := true RENKODN := RENKODN[1] - ATR RENKOUP := RENKODN[1] COLOR := color.rgb(245, 69, 69,60) BUY := 0 SELL += 1 SELL //// STRATEGY if(UP) strategy.entry("Long",strategy.long) if(DN) strategy.entry("Short",strategy.short) // ploting bgcolor(COLOR)