
Chiến lược này là hệ thống giao dịch theo đà tăng trưởng dựa trên chỉ báo Dải Bollinger. Nó xác định các cơ hội đột phá tiềm năng bằng cách theo dõi mối quan hệ giữa giá và Dải Bollinger trên và đóng vị thế khi giá giảm xuống dưới Dải Bollinger dưới. Dải Bollinger bao gồm ba đường: dải giữa (đường trung bình động), dải trên và dải dưới (được tính từ độ lệch chuẩn). Chiến lược này hỗ trợ nhiều loại đường trung bình động và có thể điều chỉnh các thông số theo sở thích của nhà giao dịch.
Logic cốt lõi của chiến lược này dựa trên những điểm sau:
Đây là chiến lược theo dõi xu hướng dựa trên dải Bollinger, nắm bắt xu hướng thị trường bằng cách quan sát mối quan hệ giữa giá và dải Bollinger. Chiến lược được thiết kế hợp lý, có khả năng điều chỉnh và cơ chế quản lý rủi ro tốt. Thông qua các hướng tối ưu hóa được đề xuất, tính ổn định và lợi nhuận của chiến lược có thể được cải thiện hơn nữa. Chiến lược này đặc biệt phù hợp với các thị trường có tính biến động lớn hơn, nhưng các nhà giao dịch cần điều chỉnh các thông số và biện pháp kiểm soát rủi ro dựa trên các điều kiện thực tế.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="Demo GPT - Bollinger Bands Strategy", overlay=true, initial_capital=100000, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3)
// Inputs
length = input.int(20, minval=1, title="Length")
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")
offset = input.int(0, "Offset", minval=-500, maxval=500)
startDate = input(timestamp('01 Jan 2018 00:00 +0000'), title="Start Date")
endDate = input(timestamp('31 Dec 2069 23:59 +0000'), title="End Date")
// Moving Average Function
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)
// Calculations
basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
// Plotting
plot(basis, "Basis", color=#2962FF, offset=offset)
p1 = plot(upper, "Upper", color=#F23645, offset=offset)
p2 = plot(lower, "Lower", color=#089981, offset=offset)
fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95))
// Strategy Logic
inTradeWindow = true
longCondition = close > upper and inTradeWindow
exitCondition = close < lower and inTradeWindow
if (longCondition)
strategy.entry("Long", strategy.long, qty=1)
if (exitCondition)
strategy.close("Long")