Chiến lược này được thiết kế dựa trên nguyên tắc theo dõi xu hướng trung bình động và kênh động. Nó tính toán kênh giá động, đánh giá hướng xu hướng thông qua các đường ray trên và dưới của kênh và tạo ra tín hiệu giao dịch bằng cách kết hợp trung bình động để lọc biến động giá. Chiến lược này phù hợp với giao dịch xu hướng trung và ngắn hạn.
Các nguyên tắc chính của chiến lược này là:
Tính toán kênh giá năng động. Đường giữa kênh được tính từ giá cao nhất và giá thấp nhất. Đường sắt trên là đường giữa + biến động giá MA, và đường sắt dưới là đường giữa - biến động giá MA.
Khi giá vượt qua đường ray trên, nó được định nghĩa là tăng. Khi giá vượt qua đường ray dưới, nó được định nghĩa là giảm.
Lọc tiếng ồn. Sử dụng biến động giá MA của một khoảng thời gian nhất định để lọc tiếng ồn từ biến động giá ngẫu nhiên.
Tạo tín hiệu giao dịch. Khi tăng, tín hiệu mua được tạo ra khi giá đóng thấp hơn giá mở trong khoảng thời gian đó. Khi giảm, tín hiệu bán được tạo ra khi giá đóng cao hơn giá mở.
Những lợi thế của chiến lược này là:
Những rủi ro của chiến lược này là:
Giải pháp:
Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:
Chiến lược này tích hợp các ý tưởng của kênh năng động và đánh giá xu hướng MA, và hoạt động tốt trong việc nắm bắt hướng xu hướng trong trung hạn và ngắn 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)