Chiến lược này tính toán giá cao nhất cuối cùng (lastbull) và giá thấp nhất cuối cùng (lastbear). Sau đó nó so sánh giá hiện tại với lastbull và lastbear để xác định xem giá đã bước vào một phạm vi nhất định và do đó tạo ra các tín hiệu giao dịch. Nó đi dài khi giá tăng trên lastbull một tỷ lệ phần trăm nhất định, và đi ngắn khi giá giảm dưới lastbear một tỷ lệ phần trăm nhất định.
Chiến lược đầu tiên tính toán giá cao nhất cuối cùng lastbull và giá thấp nhất cuối cùng lastbear. sau đó nó tính toán tỷ lệ thay đổi tỷ lệ phần trăm ddl của giá hiện tại gần so với lastbull, và tỷ lệ thay đổi tỷ lệ phần trăm dds so với lastbear.
Khi ddl thấp hơn ngưỡng tín hiệu dài được cấu hình, một tín hiệu dài được tạo ra. Khi dds cao hơn ngưỡng tín hiệu ngắn được cấu hình, một tín hiệu ngắn dn được tạo ra.
Khi nhận được tín hiệu dài, nó mở vị trí dài nếu tham số needlong là đúng. Khi nhận được tín hiệu ngắn, nó mở vị trí ngắn nếu tham số needshort là đúng.
Nó đóng vị trí dài khi giá tăng sau khi mở dài, và đóng vị trí ngắn khi giá giảm sau khi mở ngắn.
Chiến lược này kết hợp phân tích xu hướng và phạm vi. Nó có thể bắt được xu hướng và tạo ra các tín hiệu giao dịch từ việc phá vỡ phạm vi. So với các chiến lược theo dõi xu hướng đơn giản, nó có thể nhanh chóng bắt được hướng xu hướng mới sau khi phá vỡ phạm vi.
Các thông số có thể được cấu hình cho các sản phẩm khác nhau.
Không có cơ chế dừng lỗ trong chiến lược này để hạn chế lỗ trên mỗi giao dịch.
Stop loss có thể được thêm vào để hạn chế lỗ trên mỗi giao dịch.
Chiến lược này kết hợp phân tích xu hướng và đột phá phạm vi để tạo ra các tín hiệu giao dịch, có thể bắt được xu hướng mới và tận dụng các đặc điểm giới hạn phạm vi. Các thông số có thể cấu hình cao cho các sản phẩm khác nhau. Có nhiều không gian tối ưu hóa để thích nghi với môi trường thị trường phức tạp hơn.
/*backtest start: 2023-01-25 00:00:00 end: 2024-01-31 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2019 //@version=4 strategy(title = "Noro's DDL Strategy", shorttitle = "DDL str", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3) //Settings needlong = input(true, title = "Long") needshort = input(true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot") signalshort = input(3.0, title = "Short, %") signallong = input(-3.0, title = "Long, %") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Levels bull = close > close[1] ? 1 : 0 bear = close < close[1] ? 1 : 0 lastbull = 0.0 lastbull := bull ? close : lastbull[1] lastbear = 0.0 lastbear := bear ? close : lastbear[1] //Signals ddl = ((close / lastbull) - 1) * 100 up = ddl < signallong dds = ((close / lastbear) - 1) * 100 dn = dds > signalshort //Lines plot(dds, style = plot.style_area, color = color.red, transp = 0) plot(ddl, style = plot.style_area, color = color.lime, transp = 0) plot(0, color = color.black, linewidth = 2, transp = 0) //Background col = (up and needlong) or (dn and needshort) ? color.yellow : na bgcolor(col, transp = 20) //Orders lot = 0.0 lot := strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1] truetime = true if up strategy.entry("Long", strategy.long, lot, when = needlong and truetime) if dn strategy.entry("Short", strategy.short, lot, when = needshort and truetime) if strategy.position_size > 0 and close > open strategy.entry("Close", strategy.short, 0) if strategy.position_size < 0 and close < open strategy.entry("Close", strategy.long, 0)