
Chiến lược này là một hệ thống giao dịch đột phá động dựa trên Bollinger Bands, chủ yếu sử dụng tín hiệu của giá phá vỡ đường ray để tham gia nhiều đầu vào và kết hợp với nguyên tắc tiếp tục xu hướng và quay trở lại giá trị trung bình để thoát ra. Chiến lược hoạt động trong khung thời gian 5 phút, để nắm bắt cơ hội phá vỡ trong biến động thị trường ngắn hạn bằng cách thiết lập tham số và độ khoan dung của Bollinger Bands, để thực hiện nhập cảnh nhanh chóng và kiểm soát rủi ro.
Chiến lược dựa trên chỉ số Brin, chỉ số này bao gồm ba đường: đường trung bình ((20 chu kỳ trung bình di chuyển đơn giản), đường trên ((trung bình + 1,9 lần chênh lệch tiêu chuẩn) và đường dưới ((trung bình -1,9 lần chênh lệch tiêu chuẩn) ‒ logic giao dịch là:
Chiến lược sử dụng biến số barsNotAboveUpper đếm giá không giữ trên đường lên bao nhiêu chu kỳ liên tiếp. Mỗi khi giá cao hơn đường lên, bộ đếm sẽ được đặt lại là 0; nếu không, bộ đếm sẽ được thêm 1 . Khi đếm đạt đến ngưỡng chịu đựng, hoặc khi giá chạm vào đường giữa, chiến lược sẽ thoát khỏi vị trí nhiều đầu.
Mặc dù có một khung cho các chiến lược vô hiệu trong mã, nhưng phần thực hiện các giao dịch vô hiệu đã được chú thích, làm cho chiến lược chỉ thực hiện các giao dịch đa đầu. Điều này có thể là quyết định tối ưu hóa dựa trên đặc điểm thị trường hoặc kết quả kiểm tra lại.
Theo dõi xu hướng và thích nghi với biến độngBrin tự điều chỉnh chiều rộng của kênh trong các môi trường biến động khác nhau, giúp chiến lược hoạt động trong các điều kiện thị trường khác nhau.
Quy tắc nhập cảnh và xuất cảnh rõ ràngChiến lược: cung cấp tín hiệu nhập cảnh rõ ràng ((để phá vỡ đường đua) và hai điều kiện xuất cảnh khách quan ((chuyển động không bền vững hoặc chạm vào đường trung bình)) và giảm phán đoán chủ quan.
Cơ chế kiểm soát rủi roBằng cách thiết lập các tham số cho sự khoan dung của xu hướng, chiến lược có thể phản ứng nhanh chóng với sự thay đổi của xu hướng và dừng lỗ kịp thời. Cơ chế rút lui kép dựa trên thời gian và giá trị này kiểm soát hiệu quả sự phơi bày rủi ro của một giao dịch.
Không gian tối ưu hóa tham sốChiến lược cung cấp ba tham số có thể điều chỉnh về độ dài, nhân và độ chịu được xu hướng của Brin, cho phép các nhà giao dịch tối ưu hóa cho các điều kiện thị trường và phong cách giao dịch khác nhau.
Ứng dụng nguyên tắc hồi quyChiến lược sử dụng giá chạm vào đường trung bình ((trung tâm)) như là điều kiện thoát ra, phù hợp với tính chất hồi phục trung bình của thị trường tài chính, tăng tính hợp lý của việc thoát ra.
Tích hợp hệ thống cảnh báoChiến lược tích hợp các chức năng cảnh báo tín hiệu giao dịch để thông báo cho các nhà giao dịch về tín hiệu nhập và thoát trong thời gian thực, cải thiện hiệu quả thực hiện giao dịch.
Rủi ro đột phá giảGiá có thể giảm nhanh chóng sau khi đột phá tạm thời, dẫn đến tín hiệu sai và giao dịch không cần thiết, làm tăng chi phí giao dịch.
Độ nhạy tham sốBrin: Độ dài và số nhân của các tham số có ảnh hưởng đáng kể đến hiệu suất chiến lược, thiết lập tham số không phù hợp có thể dẫn đến quá nhiều tín hiệu giả hoặc bỏ lỡ cơ hội giao dịch quan trọng.
Hạn chế giao dịch một chiềuChiến lược hiện tại chỉ thực hiện giao dịch nhiều đầu, có thể thiếu cơ hội kiếm lợi nhuận trong thị trường xu hướng giảm, dẫn đến sự không ổn định trong hoạt động lâu dài.
Cơ chế dừng lỗ phụ thuộc vào thời gianTrong một tình huống cực đoan, có thể không thể dừng lại kịp thời, tăng nguy cơ giảm giá.
Không có sự kiểm soátChiến lược thiếu cơ chế dừng lỗ dựa trên quản lý tài chính tổng thể, có thể dẫn đến việc thu hồi tài khoản lớn hơn khi có liên tục các tín hiệu sai.
Hạn chế về khung thời gian: Chiến lược đặc biệt được thiết kế cho biểu đồ 5 phút, có thể không áp dụng cho các khung thời gian khác, hạn chế phạm vi ứng dụng của chiến lược.
Để giảm thiểu những rủi ro này, khuyến nghị: 1) tăng các điều kiện lọc bổ sung để giảm tín hiệu phá vỡ giả; 2) thực hiện kiểm soát rủi ro dựa trên vị trí tổng thể; 3) thêm các chỉ số xác nhận xu hướng; 4) xem xét tăng cơ chế dừng lỗ dựa trên giá.
adxLength = input.int(14, "ADX Length")
adxThreshold = input.int(25, "ADX Threshold")
dI = ta.dmi(adxLength, adxLength)
adx = ta.adx(adxLength)
trendFilter = adx > adxThreshold and dI+"DI" > dI+"DI-"
longCondition := longCondition and trendFilter
Thực hiện chiến lược đa không gian hoàn chỉnh: Đánh dấu trong mã kích hoạt các logic giao dịch không có giá trị, cho phép chiến lược có lợi nhuận tương tự trong thị trường giảm. Điều này sẽ làm tăng khả năng thích ứng và toàn diện của chiến lược trong các môi trường thị trường khác nhau.
Tối ưu hóa quản lý tài chính: Thêm kiểm soát kích thước vị trí và quản lý rủi ro tổng thể, chẳng hạn như thiết lập dừng lỗ dựa trên ATR, giới hạn thu hồi tối đa. Ví dụ:
atrPeriod = input.int(14, "ATR Period")
atrMultiplier = input.float(3.0, "ATR Multiplier")
atr = ta.atr(atrPeriod)
stopLossPrice = strategy.position_avg_price - (atrMultiplier * atr)
timeFilter = (hour >= 9 and hour < 16) or (hour >= 18 and hour < 22)
longCondition := longCondition and timeFilter
volatilityRatio = ta.atr(14) / ta.atr(56)
dynamicMult = volatilityRatio < 0.8 ? mult * 0.8 : mult * 1.2
var float trailingStop = na
if strategy.position_size > 0
trailingStop := math.max(trailingStop, close - atrMultiplier * atr)
if close < trailingStop
strategy.close("Long")
Chiến lược giao dịch định lượng tăng tốc đột phá động của Brin là một hệ thống giao dịch ngắn hạn dựa trên phân tích kỹ thuật, kết hợp theo dõi xu hướng và nguyên tắc quay trở lại giá trị trung bình. Chiến lược này thực hiện nhiều đầu vào bằng cách giám sát các tín hiệu đột phá của giá trên đường ray của Brin, sử dụng sự không bền vững của giá hoặc chạm vào đường cân bằng để thoát ra, tạo thành một vòng tròn giao dịch hoàn chỉnh.
Điểm mạnh của chiến lược này là khả năng thích ứng với biến động của thị trường và các quy tắc giao dịch rõ ràng, nhưng cũng phải đối mặt với những thách thức như rủi ro đột phá giả mạo và nhạy cảm của tham số. Sự ổn định và lợi nhuận của chiến lược có thể được nâng cao đáng kể bằng cách thêm bộ lọc xu hướng, hoàn thiện hệ thống giao dịch đa chiều, tối ưu hóa quản lý vốn và giới thiệu tham số thích ứng.
Đối với các nhà giao dịch, chiến lược này phù hợp để sử dụng như một hệ thống giao dịch ngắn hạn, đặc biệt là trong các thị trường có tính biến động lớn và có đặc điểm đột phá rõ ràng. Sau khi được tối ưu hóa hơn nữa, nó có tiềm năng trở thành một giải pháp giao dịch toàn diện có thể duy trì hiệu suất tương đối ổn định trong nhiều môi trường thị trường.
/*backtest
start: 2024-03-25 00:00:00
end: 2025-03-24 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © GoodDayss
//@version=6
strategy("Bollinger Bands Strategy 5m", overlay=true)
length = input.int(20, "Bollinger Length", minval=1)
mult = input.float(1.9, "Bollinger Mult", minval=0.001, maxval=50)
tolerance = input.int(4, "Trend Tolerance", minval=1)
source = close
basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
upper = basis + dev
lower = basis - dev
plot(basis, color=color.yellow, linewidth=2, title="Basis")
plot(upper, color=color.white, linewidth=2, title="Up")
plot(lower, color=color.white, linewidth=2, title="Low")
var int barsNotAboveUpper = 0
var int barsNotBelowLower = 0
bool longCondition = ta.crossover(close, upper)
bool shortCondition = ta.crossunder(close, lower)
if longCondition and strategy.position_size <= 0
strategy.entry("Long", strategy.long)
// Alert
alertcondition(longCondition and strategy.position_size <= 0, title = "幹你媽買進", message = "{{{ticker}} 的價格是 {{close}},\n買進!!!.}")
// if shortCondition and strategy.position_size >= 0
// strategy.entry("Short", strategy.short)
if strategy.position_size > 0
if close > upper
barsNotAboveUpper := 0
else
barsNotAboveUpper += 1
bool touchedBasisLong = (low <= basis)
if barsNotAboveUpper >= tolerance or touchedBasisLong
// Alert
alert(message = "{{{ticker}} 的價格是 {{close}},\n塊陶啊,賣出!!!.}")
strategy.close("Long", comment="Exit Long")
barsNotAboveUpper := 0
if strategy.position_size < 0
if close < lower
barsNotBelowLower := 0
else
barsNotBelowLower += 1
bool touchedBasisShort = (high >= basis)
// if barsNotBelowLower >= tolerance or touchedBasisShort
// strategy.close("Short", comment="Exit Short")
// barsNotBelowLower := 0