
Chiến lược này có thể nhận diện và theo dõi xu hướng bằng cách xây dựng một kênh giá, tính toán khoảng cách của giá từ đường trung tâm, và kết hợp với tín hiệu lọc đồng tuyến. Khi giá vượt qua kênh, nó sẽ tạo ra tín hiệu giao dịch. Chiến lược này có hai đặc điểm là theo dõi xu hướng và phá vỡ.
Chiến lược này khá mạnh mẽ, có thể theo dõi hiệu quả các xu hướng đường dài và trung bình, đồng thời kết hợp với sự phá vỡ xu hướng để tạo ra tín hiệu giao dịch. Bằng cách tối ưu hóa tham số và lọc tín hiệu, chiến lược có thể được cải thiện hơn nữa để phù hợp với nhiều giống và môi trường thị trường.
/*backtest
start: 2023-01-30 00:00:00
end: 2024-02-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Noro's Bands Strategy v1.1", shorttitle = "NoroBands str 1.1", overlay=true)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
color = input(true, "Color")
needbb = input(true, defval = false, title = "Show Bands")
needbg = input(true, defval = false, title = "Show Background")
src = close
//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2
//dist
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
//Trend
trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1]
//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")
//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)
//Signals
up = trend == 1 and ((close < open or color == false) or close < hd) ? 1 : 0
dn = trend == -1 and ((close > open or color == false) or close > ld) ? 1 : 0
longCondition = up == 1
if (longCondition)
strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
shortCondition = dn == 1
if (shortCondition)
strategy.entry("Short", strategy.short, needshort == false ? 0 : na)