Tài nguyên đang được tải lên... tải...

Chiến lược vị trí động lực của NoroBands

Tác giả:ChaoZhang, Ngày: 2024-01-18 10:58:48
Tags:

img

Tổng quan

Chiến lược này kết hợp lý thuyết dải Noro với các kỹ thuật định lượng để hình thành một chiến lược đột phá động lực. Nó tạo ra các tín hiệu giao dịch bằng cách tính toán đường trung bình động, RSI, dải, thanh màu và các chỉ số khác để thực hiện giao dịch đột phá dải.

Chiến lược logic

  1. Tính toán dải trên và dưới bằng cách sử dụng phạm vi trung bình thực sự. Giá vượt qua dải trên cho thấy tín hiệu dài trong khi phá vỡ dải dưới cho tín hiệu ngắn.
  2. Sử dụng chỉ số RSI để xác định khu vực mua quá mức và bán quá mức. RSI dưới 30 cho thấy dài trong khi trên 70 cho thấy ngắn.
  3. Phá vỡ giá tối đa và tối thiểu cho thấy hướng động lực giá.
  4. Các thanh màu cho thấy thị trường tăng hoặc giảm. Màu xanh lá cây có nghĩa là thị trường tăng trong thời gian dài trong khi màu đỏ có nghĩa là thị trường giảm trong thời gian ngắn.
  5. Kết hợp trung bình động để xác định sự khác biệt cho tín hiệu giao dịch.

Ưu điểm

  1. Kết hợp nhiều chỉ số cải thiện độ chính xác.
  2. Kết hợp lý thuyết dải và kỹ thuật định lượng làm cho chiến lược hiệu quả hơn.
  3. Kết hợp đà phá vỡ và giao dịch đảo ngược trung bình mở rộng không gian lợi nhuận.
  4. Khả năng mở rộng cao để điều chỉnh các thông số theo thị trường.

Rủi ro

  1. Các thông số cần tối ưu hóa và thử nghiệm liên tục.
  2. Không phản ứng kịp thời với các công tắc ngắn dài, có thể gây ra tổn thất.
  3. Tần suất giao dịch cao, dễ bị ảnh hưởng bởi phí và trượt.
  4. Các thông số nên được điều chỉnh kịp thời để phù hợp với các chu kỳ khác nhau.

Tối ưu hóa

  1. Xác thực nhiều khung thời gian để tìm kết hợp tham số tốt nhất.
  2. Thêm stop loss để giảm lỗ đơn.
  3. Quản lý vị trí lớn hơn để cải thiện hiệu quả lợi nhuận.
  4. Kết hợp học sâu để tối ưu hóa tham số tự động.

Tóm lại

Chiến lược này kết hợp các chỉ số định lượng điển hình để đạt được lợi nhuận hiệu quả thông qua động lực và chỉ số đảo ngược trung bình. Nó cũng sử dụng lý thuyết phạm vi trung bình thực để xác định các điểm nhập hợp lý. Một ví dụ tốt về việc kết hợp lý thuyết và kỹ thuật. Với tối ưu hóa tham số và cải thiện kiểm soát rủi ro, nó sẽ trở thành một chiến lược định lượng hiệu quả và ổn định.


/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Strategy v1.5", shorttitle = "NoroBands str 1.5", 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, defval = true, title = "Use ColorBar")
usecb = input(true, defval = true, title = "Use CryptoBottom")
usersi = input(true, defval = true, title = "Use RSI")
usemm = input(true, defval = true, title = "Use min/max")
usepyr = input(true, defval = true, title = "Use pyramiding")
needbb = input(false, defval = false, title = "Show Bands")
needbg = input(false, defval = false, title = "Show Background")
needlo = input(false, defval = false, title = "Show Locomotive")
needpy = input(false, defval = false, title = "Show Avg.price line")
src = close

//Fast RSI
fastup = rma(max(change(src), 0), 2)
fastdown = rma(-min(change(src), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//CryptoBottom
mac = sma(close, 10)
lencb = abs(close - mac)
sma = sma(lencb, 100)
max = max(open, close)
min = min(open, close)

//PriceChannel
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
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(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2")
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")
plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Signals
up = trend == 1 and ((close < open or color == false) or close < hd) and (min < min[1] or usemm == false) and (close < strategy.position_avg_price or usepyr == false or strategy.position_size <= 0) ? 1 : 0
dn = trend == -1 and ((close > open or color == false) or close > ld) and (max > max[1] or usemm == false) and (close > strategy.position_avg_price or usepyr == false or strategy.position_size >= 0) ? 1 : 0 
up2 = close < open and lencb > sma * 3 and min < min[1] and fastrsi < 10 and (close < strategy.position_avg_price or usepyr == false or strategy.position_size <= 0) ? 1 : 0 //CryptoBottom
//dn2 = close > open and len > sma * 3 and max > max[1] and fastrsi > 90 ? 1 : 0 //CryptoBottom
up3 = fastrsi < 5 and usersi == true and (close < strategy.position_avg_price or usepyr == false or strategy.position_size <= 0) ? 1 : 0
//dn3 = fastrsi > 95 and usersi = true ? 1 : 0

//Avg Price
colpy = needpy == false ? na : black
plot(strategy.position_avg_price, color = colpy)

up4 = close < strategy.position_avg_price and usepyr == true and strategy.position_size >= 0 ? 1 : 0 
dn4 = close > strategy.position_avg_price and usepyr == true and strategy.position_size <= 0 ? 1 : 0 

//Locomotive
uploco = trend == 1 and close < open and min < min[1] and close < center ? 1 : 0
plotarrow(needlo == true and uploco == 1 ? 1 : 0, colorup = black, colordown = black, transp = 0)

longCondition = up == 1 or (up2 == 1 and usecb == true) or (up3 == 1 and usersi == true) or up4 == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1 or dn4 == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

Thêm nữa