
Chiến lược này được thiết kế dựa trên nguyên tắc theo dõi xu hướng của kênh động và đường đồng. Nó tính toán kênh động của giá, xác định hướng xu hướng giá thông qua đường dẫn lên xuống, kết hợp với sự phân tán giá của chu kỳ đường đồng, tạo ra tín hiệu giao dịch. Chiến lược này phù hợp với giao dịch xu hướng đường ngắn giữa.
Chiến lược này dựa trên các nguyên tắc sau:
Tính toán kênh giá động. Tính toán đường trung bình của kênh thông qua giá cao nhất và giá thấp nhất, đường trên là đường trung bình + đường trung bình phân tán giá, đường dưới là đường trung bình - đường trung bình phân tán giá.
Xác định hướng của xu hướng. Khi giá lên đường, nó được định nghĩa là bullish; Khi giá xuống đường, nó được định nghĩa là bearish.
Phong trào tiếng ồn. Phong trào tiếng ồn gây ra bởi biến động ngẫu nhiên của giá, sử dụng đường trung bình phân tán giá của một chu kỳ nhất định.
Tạo tín hiệu giao dịch. Khi đà tăng, tạo tín hiệu mua khi giá đóng cửa của chu kỳ thấp hơn giá mở cửa; khi giảm, tạo tín hiệu bán khi giá đóng cửa của chu kỳ cao hơn giá mở cửa.
Chiến lược này có những ưu điểm sau:
Chiến lược này cũng có những rủi ro sau:
Giải pháp tương ứng:
Chiến lược này có thể được tối ưu hóa bằng cách:
Chiến lược này kết hợp các suy nghĩ về định hướng xu hướng động và đồng nhất, hoạt động tốt trong việc nắm bắt hướng xu hướng giữa và ngắn. Tuy nhiên, cũng có một số hạn chế, cần thử nghiệm và tối ưu hóa thêm để phù hợp với nhiều tình huống thị trường hơn.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("Noro's Bands Strategy v1.0", shorttitle = "NoroBands 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")
color = input(true, "Color")
needbb = input(false, defval = false, title = "Show Bands")
needbg = input(false, 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)
//up = and trend == 1 ? 1 : 0
//dn = and trend == -1 ? 1 : 0
up = close < hd and trend == 1 and (close < open or color == false) ? 1 : 0
dn = close > ld and trend == -1 and (close > open or color == false) ? 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)