
Chiến lược này tạo ra tín hiệu mua và bán bằng cách tính toán các chỉ số PB trung bình và Brin đan xuống đường, để đánh giá mối quan hệ giữa chỉ số PB và Brin đan xuống đường, tạo ra tín hiệu mua. Khi chỉ số PB đi lên, nó sẽ phá vỡ đường trung tâm của Brin hoặc xuống đường; khi chỉ số PB đi xuống, nó sẽ phá vỡ đường trung tâm của Brin hoặc lên đường.
Chỉ số trung bình PB là chỉ số trung bình của chiến lược. Chỉ số trung bình PB kết hợp sự ổn định của hệ thống đường trung bình và độ nhạy của chỉ số PB, nó sử dụng sự khác biệt giữa hai đường trung bình khác nhau trong thời gian để thể hiện xu hướng thay đổi giá, do đó đánh giá xem tình trạng trống.
Chiến lược này cũng sử dụng chỉ số Brin để xác định giá cổ phiếu quá mua quá bán. Chỉ số Brin bao gồm ba đường cong trung đạo, trên đường và dưới đường. Đường trung đạo là đường trung bình di chuyển n ngày; trên và dưới đường được tính bằng trung đạo và biến động lịch sử.
Tóm lại, chiến lược này sử dụng các chỉ số PB trung bình để xác định xu hướng giá cổ phiếu tăng hoặc giảm, và hỗ trợ các chỉ số Bollinger Bands để xác định tình trạng quá mua quá bán, tìm kiếm điểm mua và bán trong mối quan hệ chỉ số kết hợp giữa cả hai, thuộc về chiến lược giao dịch chỉ số số số điển hình.
Những lợi thế chính của chiến lược này là:
Những rủi ro chính của chiến lược này là:
Đối với các rủi ro trên, có thể tránh rủi ro bằng cách thiết lập tham số tối ưu hóa, dừng lỗ nghiêm ngặt, xem xét các yếu tố môi trường lớn và giám sát nhân tạo.
Chiến lược này có thể được tối ưu hóa như sau:
Chiến lược này hoạt động hiệu quả tốt, với chỉ số PB trung bình là cốt lõi, được hỗ trợ bởi băng Brin để xác định điểm mua và bán, hoạt động đơn giản, nhạy cảm cao, phản hồi hiệu suất tốt. Bằng cách liên tục tối ưu hóa các tham số thiết lập, thêm các chỉ số hỗ trợ, các biện pháp ngăn chặn nghiêm ngặt, có thể làm tăng thêm lợi nhuận và ổn định của chiến lược, đáng để thử nghiệm và ứng dụng.
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("BandPass EOS", overlay=false, initial_capital = 1000)
src = input(close, "Source", input.source)
Period1 = input(41, "Fast Period", input.integer)
Period2 = input(54, "Slow Period", input.integer)
showBG = input(false, "Show crosses on background?", input.bool)
UseReversalStop = input(true, "Use additional triggers?", input.bool)
//Super Passband Filter
a1 = 0.0
a2 = 0.0
PB = 0.0
RMS = 0.0
if bar_index > Period1
a1 := 5 / Period1
a2 := 5 / Period2
PB := (a1 - a2) * src + (a2 * (1 - a1) - a1 * (1 - a2)) * src[1] +
(1 - a1 + 1 - a2) * nz(PB[1]) - (1 - a1) * (1 - a2) * nz(PB[2])
for i = 0 to 49 by 1
RMS := RMS + PB[i] * PB[i]
RMS
RMS := sqrt(RMS / 40)
RMS
z = 0
buy = PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z)
sell = PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z)
signal = buy ? 1 : sell ? -1 : 0
bg = buy ? color.green : sell ? color.red : color.white
bg := showBG ? bg : na
upperFill = PB>RMS ? color.lime : na
lowerFill = PB<-RMS ? color.red : na
p1 = plot(PB,"PB",color.red)
p2 = plot(RMS,"+RMS",color.blue)
p3 = plot(-RMS,"-RMS",color.blue)
bgcolor(bg)
fill(p1,p2,upperFill)
fill(p1,p3,lowerFill)
hline(0)
//PERIOD
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)
testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)
testPeriod() => true
lcolor = PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z)
scolor = PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z)
c1 = (PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z))
c2 = (PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z))
plot (c1 ? PB : na, style = plot.style_circles, color = color.red, linewidth = 3)
plot (c2 ? PB : na, style = plot.style_circles, color = color.green, linewidth = 3)
if (PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z))
strategy.entry("long", strategy.long, when = testPeriod())
if (PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z))
strategy.entry("short", strategy.short, when = testPeriod())