
Chiến lược này tạo ra tín hiệu giao dịch bằng cách tính toán giá dừng cuối cùng và giá giảm cuối cùng, kết hợp với giá hiện tại để xác định liệu giá có đi vào một vùng nhất định hay không. Khi giá vượt quá một tỷ lệ nhất định của giá dừng trước và khi giá thấp hơn một tỷ lệ nhất định của giá giảm trước.
Chiến lược này tính toán trước giá dừng cuối cùng lastbull và giá dừng cuối cùng lastbear. Sau đó tính toán tỷ lệ thay đổi giá hiện tại gần so với lastbull là ddl, và tỷ lệ thay đổi so với lastbear là dds.
Tín hiệu up được tạo ra khi ddl thấp hơn tín hiệu đa điểm được cấu hình signallong, và tín hiệu dn khi dds cao hơn tín hiệu đa điểm được cấu hình signalshort.
Khi nhận được nhiều tín hiệu, nếu cần nhiều tham số needlong, hãy mở nhiều vị trí. Nếu nhận được tín hiệu shorting, nếu cần tham số shorting, hãy mở vị trí.
Điều kiện là giá tăng sau khi mở nhiều vị trí là giá giảm sau khi mở nhiều vị trí, giá giảm sau khi mở trống là vị trí trống.
Chiến lược này kết hợp xu hướng và phân đoạn phán đoán, có thể nắm bắt xu hướng và có thể sử dụng phá vỡ phân đoạn để tạo ra tín hiệu giao dịch, làm cho nhiều giao dịch chuyển nhượng. So với chiến lược theo dõi xu hướng đơn giản, nó có thể nhanh chóng nắm bắt hướng xu hướng mới sau khi phá vỡ phân đoạn.
Các tham số có thể được cấu hình rộng rãi, có thể điều chỉnh linh hoạt các tham số làm nhiều việc trống, thích ứng với các giống khác nhau. Các khoảng thời gian mở kho có thể được cấu hình để tránh các thời điểm quan trọng.
Chiến lược không có cơ chế dừng lỗ, không thể kiểm soát hiệu quả tổn thất đơn lẻ. Khi phạm vi giao dịch biến động lớn, tính toán vị trí dễ bị ảnh hưởng bởi giá cả.
Bạn có thể thiết lập dừng lỗ để hạn chế tổn thất đơn lẻ. Bạn có thể thiết lập vị trí theo các thuật toán vị trí khác nhau để vị trí ổn định hơn.
Chiến lược này tích hợp các định hướng xu hướng và phá vỡ các khu vực để tạo ra tín hiệu giao dịch, có thể nắm bắt các hướng xu hướng mới và có thể sử dụng các tính năng dao động khu vực. Các tham số được đặt linh hoạt, có thể điều chỉnh không gian lớn, phù hợp với các giống khác nhau.
/*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)