Noro’s Price Channel Scalping Strategy là một chiến lược giao dịch dựa trên kênh giá và dải biến động giá. Chiến lược này sử dụng kênh giá và biến động giá để xác định xu hướng thị trường và tham gia khi xu hướng biến đổi.
Chiến lược này đầu tiên tính toán các kênh giá cao nhất ((lasthigh) và kênh giá thấp nhất ((lastlow) của giá, sau đó tính toán đường trung tâm của kênh giá ((center)). Tiếp theo, tính toán khoảng cách của giá với đường trung tâm ((dist) và đường trung bình di chuyển đơn giản ((distsma) của khoảng cách. Dựa trên điều này, có thể tính toán các vùng dao động giá gấp 1 lần ((hd và ld) và gấp 2 lần ((hd2 và ld2) đường trung tâm.
Chiến lược mở vị trí ngược khi có dấu hiệu suy thoái. Ví dụ: trong xu hướng tăng giá, nếu có hai đường dương, thì sẽ bị hỏng khi đường dương thứ hai đóng cửa; trong xu hướng giảm giá, nếu có hai đường âm, thì sẽ bị hỏng khi đường âm thứ hai đóng cửa.
Phương pháp này sử dụng các kênh giá và dải dao động để đánh giá xu hướng thị trường và mở vị trí ngược khi có dấu hiệu đỉnh hoặc đáy. Chiến lược này có tần suất giao dịch cao, lợi nhuận nhanh, nhưng cũng có một số rủi ro. Bằng cách tối ưu hóa hơn nữa, chiến lược này có thể được áp dụng trong nhiều thị trường khác nhau.
/*backtest
start: 2023-11-10 00:00:00
end: 2023-12-10 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Noro's Bands Scalper Strategy v1.0", shorttitle = "Scalper str 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)
//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")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
src = close
//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2
//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2
//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 = 80)
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up7 = trend == 1 and bar == -1 and bar[1] == -1 ? 1 : 0
dn7 = trend == 1 and bar == 1 and bar[1] == 1 and close > strategy.position_avg_price ? 1 : 0
up8 = trend == -1 and bar == -1 and bar[1] == -1 and close < strategy.position_avg_price ? 1 : 0
dn8 = trend == -1 and bar == 1 and bar[1] == 1 ? 1 : 0
if up7 == 1 or up8 == 1
strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 ? 0 : na)
if dn7 == 1 or dn8 == 1
strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 ? 0 : na)