
Chiến lược này dựa trên chiến lược giao dịch phá vỡ hai đường ray của Binance. Nó sử dụng đường ray trên và dưới của Binance làm tín hiệu mua và bán và đặt điểm dừng để kiểm soát rủi ro.
Chiến lược này sử dụng đường ray trên và đường ray dưới của Brin. Brin được tạo thành từ đường trung bình và hai kênh chênh lệch tiêu chuẩn tương ứng.
Cụ thể, chiến lược vẽ các vùng Brin bằng cách tính trung bình của một chu kỳ nhất định (ví dụ: 20 ngày) và chênh lệch chuẩn của nó gấp đôi. Đường đường trên là trung bình cộng với chênh lệch chuẩn gấp đôi, đường dưới là trung bình trừ đi chênh lệch chuẩn gấp đôi.
Chiến lược này sử dụng tính năng của Brin Band, có thể phát tín hiệu giao dịch khi có biến động bất thường trong giá, do đó nắm bắt cơ hội biến đổi giá. So với chiến lược đơn giản theo dõi đường thẳng, chiến lược này có thể tạo tín hiệu giao dịch khi biến động tăng lên, tránh một phần nguy cơ phá vỡ giả.
So với chiến lược đột phá hai quỹ đạo đơn giản, chiến lược này tăng thêm cơ chế dừng lỗ. Điều này có thể kiểm soát hiệu quả tổn thất do tín hiệu sai cá nhân gây ra. Cài đặt điểm dừng lỗ cũng hợp lý hơn, gần đường trung bình hơn, tránh tổn thất quá nhiều do dừng lỗ quá mạnh mẽ.
Rủi ro lớn nhất của chiến lược này là bản thân Bollinger Bands không đảm bảo hiệu quả của tín hiệu giao dịch. Khi thị trường xảy ra tình huống đặc biệt, giá có thể biến động lớn không hợp lý, trong đó tín hiệu giao dịch của Bollinger Bands có thể là sai.
Ngoài ra, thiết lập điểm dừng có thể quá quyết liệt hoặc bảo thủ, điều này ảnh hưởng đến thu nhập cuối cùng. Nếu mức dừng quá lớn, tín hiệu hiệu quả có thể bị dừng thường xuyên; và nếu mức dừng quá nhỏ, không thể kiểm soát thiệt hại một cách hiệu quả.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Kiểm tra các kết hợp các tham số khác nhau, chẳng hạn như chu kỳ trung bình, số lần chênh lệch tiêu chuẩn, tỷ lệ phần trăm dừng, và các giá trị khác nhau để tìm tham số tối ưu;
Thêm các chỉ số khác để tạo ra các điều kiện lọc đa dạng và tránh các tín hiệu sai;
Tối ưu hóa các chiến lược dừng lỗ, ví dụ như thay thế các phương pháp dừng lỗ đơn giản bằng các phương pháp dừng lỗ di động, dừng lỗ theo đợt;
Giao dịch được xác nhận bằng các băng tần Brin với các chu kỳ thời gian khác nhau để tránh bị trói buộc.
Chiến lược này nói chung là một chiến lược kết hợp theo dõi xu hướng thực tế và phá vỡ hai làn đường. Nó có thể nắm bắt cơ hội đảo ngược khi biến động giá tăng lên, và đặt lệnh dừng để kiểm soát rủi ro.
/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bollinger Bands Strategy by Royce Mars", overlay=true)
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
stopLossPercent = input.float(1.0, title="Stop Loss Percent", minval=0.1, maxval=10, step=0.1)
ma(source, length, _type) =>
switch _type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
// Buy and Sell Conditions
buyCondition = close <= lower
sellCondition = close >= upper
// Stop Loss Condition
stopLossCondition = close < basis * (1 - stopLossPercent / 100)
// Strategy Execution
strategy.entry("Buy", strategy.long, when=buyCondition)
strategy.close("Buy", when=sellCondition or stopLossCondition)
strategy.entry("Sell", strategy.short, when=sellCondition)
strategy.close("Sell", when=buyCondition)
// Plotting on the Chart
plotshape(buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(sellCondition or stopLossCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)
// Plotting the Bollinger Bands
plot(basis, "Basis", color=color.orange)
p1 = plot(upper, "Upper Band", color=color.blue)
p2 = plot(lower, "Lower Band", color=color.blue)
fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95))