
Chiến lược này dựa trên các chỉ số Bollinger Bands để đánh giá tín hiệu giao dịch và quản lý vị trí bằng cách sử dụng phương pháp dừng lỗ. Chiến lược sẽ giám sát sự phá vỡ của Bollinger Bands lên đường và xuống đường, làm nhiều khi giá vượt qua Bollinger Bands lên đường, làm trống khi phá vỡ đường mòn, và sử dụng vị trí dừng lỗ khi phá vỡ ngược.
Chiến lược này sử dụng đường trung đạo, đường trên và đường dưới trong chỉ số Brin. Đường trung đạo là giá trị trung bình trong một khoảng thời gian nhất định, đường trên là đường trung đạo cộng với chênh lệch tiêu chuẩn gấp đôi, đường dưới là đường trung đạo trừ đi chênh lệch tiêu chuẩn gấp đôi.
Mã đầu tiên tính toán đường giữa, đường trên và đường dưới của đường dây Brin. Sau đó, đánh giá xem giá có phá vỡ đường lên hoặc đường dưới không, nếu phá vỡ đường lên thì làm nhiều, nếu phá vỡ đường dưới thì làm trống.
Chính xác thì, chiến lược này có thể diễn ra như sau:
Bằng cách này, bạn có thể nắm bắt xu hướng khi giá cổ phiếu có biến động lớn, đồng thời có thể hạn chế tổn thất bằng cách dừng lỗ.
Có thể tối ưu hóa bằng cách kết hợp các chỉ số Combine, điều chỉnh các đơn vị dừng lỗ thích hợp.
Chiến lược này được thiết kế dựa trên các chỉ số Brin, một chiến lược theo dõi xu hướng đơn giản hơn. Nó có thể tạo vị trí nhanh chóng khi giá có đột phá, đồng thời sử dụng dừng để kiểm soát rủi ro. Tuy nhiên, chỉ xem xét các yếu tố giá có thể dẫn đến sai lầm, và dừng quá nhạy cảm có thể làm tăng tần suất giao dịch.
/*backtest
start: 2023-09-26 00:00:00
end: 2023-10-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ROBO_Trading
//@version=5
strategy(title = "Bollinger Stop Strategy", shorttitle = "BBStop", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 10000, default_qty_value = 100, commission_value = 0.1)
//Settings
long = input(true)
short = input(true)
length = input.int(20, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)
source = input(close)
showbb = input(true, title = "Show Bollinger Bands")
showof = input(true, title = "Show Offset")
startTime = input(defval = timestamp("01 Jan 2000 00:00 +0000"), title = "Start Time", inline = "time1")
finalTime = input(defval = timestamp("31 Dec 2099 23:59 +0000"), title = "Final Time", inline = "time1")
//Bollinger Bands
basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
upper = basis + dev
lower = basis - dev
//Show indicator
offset = showof ? 1 : 0
colorBasis = showbb ? color.gray : na
colorUpper = showbb ? color.blue : na
colorLower = showbb ? color.blue : na
colorBands = showbb ? color.blue : na
p0 = plot(basis, "Basis", color = colorBasis, offset = offset)
p1 = plot(upper, "Upper", color = colorUpper, offset = offset)
p2 = plot(lower, "Lower", color = colorLower, offset = offset)
fill(p1, p2, title = "Background", color = colorBands, transp = 90)
//Trading
truetime = true
if basis > 0 and truetime
if long
strategy.entry("Long", strategy.long, stop = upper, when = truetime)
if short
strategy.entry("Short", strategy.short, stop = lower, when = truetime)
if long == false
strategy.exit("Exit", "Short", stop = upper)
if short == false
strategy.exit("Exit", "Long", stop = lower)
if time > finalTime
strategy.close_all()