
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 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.
Chiến lược sóng FiboBuLL có một số ưu điểm sau:
FiboBuLL cũng có một số rủi ro cần lưu ý:
Đố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:
FiboBuLL cũng có một số hướng tối ưu hóa chính:
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.
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.
/*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')