
Chiến lược này dựa trên chiến lược theo dõi và phá vỡ xu hướng của chỉ số Recursive Band được phát triển bởi Alex Grover. Chiến lược sử dụng chỉ số Recursive Band để xác định xu hướng giá và mức kháng cự hỗ trợ quan trọng, kết hợp với điều kiện động lượng để lọc phá vỡ giả, để thực hiện nhập cảnh có tần suất thấp nhưng chất lượng cao.
Chỉ số dây chuyền luân hồi bao gồm dây chuyền trên, dây chuyền dưới và dây chuyền giữa. Cách tính toán chỉ số là:
Dải trên = giá trị tối đa ((dải trên của dòng K trước, giá đóng cửa + n*Tỷ lệ biến động)
Dải dưới = giá trị tối thiểu ((dải dưới của dòng K trước, giá đóng cửa - n*Tỷ lệ biến động)
Vòng trung = (vòng trên + vòng dưới) / 2
Trong đó n là một hệ số mở rộng, dao động có thể chọn ATR, chênh lệch tiêu chuẩn, kênh giá trị trung bình và phương pháp RFV đặc biệt. Độ nhạy của chỉ số được điều khiển bởi tham số chiều dài, số lượng lớn hơn, chỉ số càng khó bị kích hoạt.
Chiến lược đầu tiên là kiểm tra xem đường dưới có tiếp tục đi lên và đường trên có tiếp tục đi xuống để loại bỏ các đột phá giả.
Khi giá giảm xuống, bạn có thể làm nhiều hơn; khi giá vượt quá, bạn có thể làm ít hơn.
Ngoài ra, chiến lược này còn có một logic dừng lỗ.
Chiến lược này có những lợi thế sau:
Chiến lược này cũng có một số rủi ro:
Những rủi ro này có thể được kiểm soát bằng cách tối ưu hóa các tham số, thiết lập lỗ hổng và tăng điểm trượt.
Chiến lược này cũng có thể được tối ưu hóa theo các hướng sau:
Chiến lược này nói chung là một chiến lược theo dõi xu hướng hiệu quả và rất thực tế. Nó kết hợp với khung định kỳ để tiết kiệm tài nguyên tính toán, sử dụng xu hướng hỗ trợ cho sự kháng cự để xác định hướng của xu hướng lớn, tăng điều kiện động lực để lọc các đột phá giả, do đó đảm bảo chất lượng tín hiệu giao dịch.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// @version=5
// Original indicator by alexgrover
strategy('Extended Recursive Bands Strategy', overlay=true, commission_type=strategy.commission.percent,commission_value=0.06,default_qty_type =strategy.percent_of_equity,default_qty_value = 100,initial_capital =1000)
length = input.int(260, step=10, title='Length')
src = input(close, title='Source')
method = input.string('Classic', options=['Classic', 'Atr', 'Stdev', 'Ahlr', 'Rfv'], title='Method')
bandDirectionCheck = input.bool(true, title='Bands Hold Direction')
lookback = input(3)
//----
atr = ta.atr(length)
stdev = ta.stdev(src, length)
ahlr = ta.sma(high - low, length)
rfv = 0.
rfv := ta.rising(src, length) or ta.falling(src, length) ? math.abs(ta.change(src)) : rfv[1]
//-----
f(a, b, c) =>
method == a ? b : c
v(x) =>
f('Atr', atr, f('Stdev', stdev, f('Ahlr', ahlr, f('Rfv', rfv, x))))
//----
sc = 2 / (length + 1)
a = 0.
a := math.max(nz(a[1], src), src) - sc * v(math.abs(src - nz(a[1], src)))
b = 0.
b := math.min(nz(b[1], src), src) + sc * v(math.abs(src - nz(b[1], src)))
c = (a+b)/2
// Colors
beColor = #675F76
buColor = #a472ff
// Plots
pA = plot(a, color=color.new(beColor, 0), linewidth=2, title='Upper Band')
pB = plot(b, color=color.new(buColor, 0), linewidth=2, title='Lower Band')
pC = plot(c, color=color.rgb(120,123,134,0), linewidth=2, title='Middle Band')
fill(pC, pA, color=color.new(beColor,90))
fill(pC, pB, color=color.new(buColor,90))
// Band keeping direction
// By Adulari
longc = 0
shortc = 0
for i = 0 to lookback-1
if b[i] > b[i+1]
longc:=longc+1
if a[i] < a[i+1]
shortc:=shortc+1
bhdLong = if bandDirectionCheck
longc==lookback
else
true
bhdShort = if bandDirectionCheck
shortc==lookback
else
true
// Strategy
if b>=low and bhdLong
strategy.entry(id='Long',direction=strategy.long)
if high>=a and bhdShort
strategy.entry(id='Short',direction=strategy.short)
// TP at middle line
//if low<=c and strategy.position_size<0 and strategy.position_avg_price>close
//strategy.exit(id="Short",limit=close)
//if high>=c and strategy.position_size>0 and strategy.position_avg_price<close
//strategy.exit(id="Long",limit=close)