Chiến lược này là một hệ thống giao dịch theo dõi động lực dựa trên chỉ số Bollinger Bands. 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à Bollinger Band trên cùng, và đóng các vị trí khi giá phá vỡ dưới dải dưới. Bollinger Bands bao gồm ba đường: dải giữa (trung bình động), dải trên và dưới (được tính bằng cách sử dụng độ lệch chuẩn). Chiến lược hỗ trợ nhiều loại đường trung bình động và cho phép điều chỉnh tham số dựa trên sở thích của nhà giao dịch.
Logic cốt lõi của chiến lược dựa trên các điểm sau:
Đây là một chiến lược theo xu hướng dựa trên Bollinger Bands, 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à các dải. Chiến lược được thiết kế tốt với khả năng thích nghi tốt và cơ chế quản lý rủi ro. 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 tăng thêm. Nó đặc biệt phù hợp với thị trường biến động, nhưng các nhà giao dịch cần điều chỉnh các tham số và các biện pháp kiểm soát rủi ro theo đ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")