Chiến lược sóng FiboBuLL dựa trên sự phá vỡ của dải Bollinger


Ngày tạo: 2023-12-01 14:11:56 sửa đổi lần cuối: 2023-12-01 14:11:56
sao chép: 0 Số nhấp chuột: 729
1
tập trung vào
1619
Người theo dõi

Chiến lược sóng FiboBuLL dựa trên sự phá vỡ của dải Bollinger

Tổng quan

Chiến lược FibobuLL Wave là một chiến lược giao dịch dựa trên phiên bản bộ lọc của Brin Belt, có thể được tìm thấy dưới trang My Program. Chiến lược này làm nhiều khi giá đóng cửa cao hơn đường lên và làm trống khi giá đóng cửa thấp hơn đường xuống.

Blink band là một chỉ số cổ điển sử dụng đường trung bình di chuyển đơn giản 20 chu kỳ và đường ray lên xuống với 2 độ phân cách tiêu chuẩn trên đường viền. Các đường ray này giúp hình dung biến động và xu hướng của giá dựa trên vị trí của giá so với các dải.

Chiến lược này không xem xét các tham số khác như khối lượng giao dịch, RSI, cơ bản, v.v., do đó người dùng phải thực hiện quyền tự do tùy thuộc vào sự xác nhận hoặc cơ bản từ các chỉ số khác. Kết quả của chiến lược này hoàn toàn dựa trên giao dịch nhiều đầu và trống, không xem xét bất kỳ mục tiêu hoặc dừng lỗ nào được người dùng định nghĩa.

Chiến lược này hoạt động tốt nhất khi giá phá vỡ/tháo lỗ trên các cột liên tiếp. Việc quyết định sử dụng chiến lược này cùng với các chỉ số khác hoặc bộ lọc Bollinger Bands là một động thái khôn ngoan khi Bollinger Bands bị ép hoặc phá vỡ/tháo lỗ trên cơ sở biến động.

Chiến lược này có thể được sử dụng trên các biểu đồ mặt trời và giờ, hoặc có thể tìm thấy xu hướng trong chiến lược dương và âm, nhưng không được khuyến cáo sử dụng cho đầu vào giao dịch vì chúng không thể phản ánh giá thực sự của tài sản.

Nguyên tắc chiến lược

Nguyên tắc cốt lõi của chiến lược sóng FiboBuLL là đánh giá giá dựa trên các chỉ số đai Brin. Đai Brin bao gồm đường trung tâm, đường trên và đường dưới.

Khi giá đóng cửa ở trên đi vào quỹ đạo, nó tạo ra tín hiệu nhiều; khi giá đóng cửa ở dưới đi xuống quỹ đạo, nó tạo ra tín hiệu lỗ. Sau khi làm nhiều lỗ, nó sẽ phá vỡ quỹ đạo ngược lại một lần nữa.

Chiến lược này sử dụng hàm barssince để theo dõi giá so với sự phá vỡ của đường ray lên xuống. Khi số cột phá vỡ đường ray trên nhỏ hơn số cột phá vỡ đường ray dưới, nó tạo ra tín hiệu làm nhiều và khi số cột phá vỡ đường ray dưới nhỏ hơn số cột phá vỡ đường ray trên, nó tạo ra tín hiệu làm trống.

Bằng cách điều chỉnh tham số chu kỳ trung đạo và tham số nhân chênh lệch tiêu chuẩn, bạn có thể thay đổi độ nhạy đột phá của băng tần Brin, do đó điều chỉnh thời gian vào sân.

Phân tích lợi thế

Chiến lược sóng FiboBuLL có một số ưu điểm sau:

  1. Brines được sử dụng để đánh giá giá phá vỡ, nguyên tắc rất đơn giản và dễ hiểu
  2. Có thể điều chỉnh các tham số để kiểm soát độ nhạy của đột phá
  3. Hình ảnh Brines giúp xác định biến động và xu hướng giá cả
  4. Có thể kết hợp với các chỉ số khác để cải thiện tính chính xác của quyết định
  5. Có thể sử dụng trong nhiều chu kỳ thời gian, khả năng ứng dụng mạnh mẽ

Phân tích rủi ro

FiboBuLL cũng có một số rủi ro cần lưu ý:

  1. Chỉ dựa vào sự đột phá của Brin, dễ tạo ra tín hiệu sai
  2. Không thể xác định được mức độ và thời gian đột phá kéo dài.
  3. Không thể đánh giá được sự đảo ngược giá sau đợt phá vỡ
  4. Thiết lập không mất mát, rủi ro mất mát cao

Đối với các rủi ro trên, có thể tối ưu hóa theo các khía cạnh sau:

  1. Kết hợp các chỉ số khác để tránh tín hiệu sai
  2. Thiết lập tham số dựa trên thử nghiệm dữ liệu lịch sử
  3. Thiết lập điểm dừng để kiểm soát lỗ tối đa
  4. Xem xét thêm các yếu tố đảo ngược để đánh giá tính bền vững

Hướng tối ưu hóa

FiboBuLL cũng có một số hướng tối ưu hóa chính:

  1. Thêm các chỉ số giao dịch, chẳng hạn như chỉ số năng lượng, để tránh đột phá giả không có sức mạnh
  2. Kết hợp với các chỉ số mua bán quá mức như RSI để tăng độ chính xác của quyết định
  3. Xác định chu kỳ tối ưu và nhân chênh lệch chuẩn dựa trên các tham số tối ưu hóa theo lịch sử
  4. Thiết lập mức dừng lỗ và dừng chân, kiểm soát rủi ro và khóa lợi nhuận
  5. Xem xét xu hướng và điều kiện lọc đảo ngược để đánh giá hướng tiếp tục
  6. Thiết lập tham số để thử nghiệm các giống và chu kỳ khác nhau

Bằng cách tối ưu hóa các điểm trên, bạn có thể cải thiện đáng kể sự ổn định và lợi nhuận của chiến lược sóng FiboBuLL.

Tóm tắt

Chiến lược sóng FiboBuLL sử dụng các nguyên tắc cơ bản của Burin để xác định giá phá vỡ và quay trở lại quỹ đạo trung tâm, theo dõi biến động giá lên và xuống đường trung tâm và tạo ra tín hiệu giao dịch bằng cách phá vỡ. Khái niệm của chiến lược này đơn giản, có thể áp dụng rộng rãi và là một cách hiệu quả để theo dõi biến động của thị trường.

Tuy nhiên, chỉ đơn thuần dựa vào phá vỡ dễ tạo ra tín hiệu sai và phá vỡ không có sức mạnh. Do đó, phải kết hợp xu hướng, khối lượng giao dịch và các yếu tố khác để đánh giá độ tin cậy của phá vỡ, thiết lập rủi ro kiểm soát dừng lỗ để tận dụng tối đa hiệu quả của chiến lược.

Chiến lược sóng FiboBuLL cung cấp cho chúng tôi một khuôn khổ cơ bản để đánh giá thời gian giao dịch dựa trên biến động giá. Chiến lược này có thể trở thành một công cụ mạnh mẽ để đưa ra quyết định giao dịch trong quá trình tối ưu hóa liên tục và kết hợp với các chỉ số khác.

Mã nguồn chiến lược
/*backtest
start: 2022-11-24 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//@FiboBuLL

strategy(shorttitle='FB Wave', title='FiboBuLL Wave (A version of Bollinger Bands Breakout Strategy By Trade Chartist)', overlay=true, pyramiding=1, currency=currency.NONE, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

src = input(close, title='Source')
length = input.int(21, minval=1, title='SMA length')  // 20 for classis Bollinger Bands SMA line (basis)


mult = input.float(1., minval=0.236, maxval=2, title='Standard Deviation')  //2 for Classic Bollinger Bands //Maxval = 2 as higher the deviation, higher the risk
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)

Show = input.string('Both', options=['Longs Only', 'Shorts Only', 'Both'], title='Trade Type')
CC = input(true, 'Color Bars')

upper = basis + dev
lower = basis - dev

//Conditions for Long and Short - Extra filter condition can be used such as RSI or CCI etc.

short = src < lower  // and rsi(close,14)<40
long = src > upper  // and rsi(close,14)>60

L1 = ta.barssince(long)
S1 = ta.barssince(short)

longSignal = L1 < S1 and not (L1 < S1)[1]
shortSignal = S1 < L1 and not (S1 < L1)[1]

//Plots and Fills


////Long/Short shapes with text
// plotshape(S1<L1 and not (S1<L1)[1]?close:na, text = "sᴇʟʟ", textcolor=#ff0100, color=#ff0100, style=shape.triangledown, size=size.small, location=location.abovebar, transp=0, title = "SELL", editable = true)
// plotshape(L1<S1 and not (L1<S1)[1]?close:na, text = "ʙᴜʏ", textcolor = #008000, color=#008000, style=shape.triangleup, size=size.small, location=location.belowbar, transp=0, title = "BUY", editable = true)  

// plotshape(shortSignal?close:na, color=#ff0100, style=shape.triangledown, size=size.small, location=location.abovebar, transp=0, title = "Short Signal", editable = true)
// plotshape(longSignal?close:na, color=#008000, style=shape.triangleup, size=size.small, location=location.belowbar, transp=0, title = "Long Signal", editable = true)  


p1 = plot(upper, color=color.new(#ff0000, 75), display=display.all, title='Upper Band')
p2 = plot(lower, color=color.new(#008000, 75), display=display.all, title='Lower Band')

p = plot(basis, color=L1 < S1 ? #008000 : S1 < L1 ? #ff0000 : na, linewidth=2, editable=false, title='Basis')

fill(p, p1, color=color.new(color.teal, 85), title='Top Fill')  //fill for basis-upper
fill(p, p2, color=color.rgb(217, 161, 161), title='Bottom Fill', transp=85)  //fill for basis-lower

//Barcolor

bcol = src > upper ? color.new(#8ceb07, 0) : src < lower ? color.new(#ff0000, 0) : src > basis ? color.green : src < basis ? color.red : na

barcolor(CC ? bcol : na, editable=false, title='Color Bars')


// === INPUT BACKTEST RANGE ===
FromMonth = input.int(defval=1, title='From Month', minval=1, maxval=12)
FromDay = input.int(defval=1, title='From Day', minval=1, maxval=31)
FromYear = input.int(defval=2018, title='From Year', minval=2015)
ToMonth = input.int(defval=1, title='To Month', minval=1, maxval=12)
ToDay = input.int(defval=1, title='To Day', minval=1, maxval=31)
ToYear = input.int(defval=9999, title='To Year', minval=2010)

// === FUNCTION EXAMPLE === 
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)  // backtest finish window
window() =>
    time >= start and time <= finish ? true : false

if window() and (Show == 'Longs Only' or Show == 'Both')
    strategy.entry('AL', direction=strategy.long, when=longSignal)
    strategy.close('LongAL', when=shortSignal, comment='AL KAPA')

if window() and (Show == 'Shorts Only' or Show == 'Both')
    strategy.entry('SAT', direction=strategy.short, when=shortSignal)
    strategy.close('SAT', when=longSignal, comment='SAT KAPA')