TÓM TẮT
- 1 1. Giới thiệu chung về Bollinger Bands
- 2 2. Chuẩn bị môi trường và dữ liệu
- 3 3. Cách vẽ Bollinger Bands trên các nền tảng phổ biến
- 4 4. Hiểu và phân tích các tín hiệu từ Bollinger Bands
- 5 5. Tùy chỉnh Bollinger Bands cho các chiến lược riêng
- 6 6. Lập trình vẽ Bollinger Bands bằng Python (ví dụ thực hành)
- 7 7. Những lỗi thường gặp khi sử dụng Bollinger Bands
- 8 8. Thực hành: Xây dựng chiến lược giao dịch dựa trên Bollinger Bands
- 9 9. Khi nào nên dùng Bollinger Bands và khi nào không nên dùng
- 10 10. Kết luận
1. Giới thiệu chung về Bollinger Bands
Bollinger Bands (viết tắt thường thấy là BB) là một trong những công cụ phân tích kỹ thuật phổ biến và mạnh mẽ nhất hiện nay. Được sáng lập bởi John Bollinger vào những năm 1980, Bollinger Bands không chỉ giúp nhà giao dịch nhận diện xu hướng mà còn cung cấp các tín hiệu về mức độ quá mua, quá bán, và khả năng đảo chiều giá. Đặc điểm nổi bật của Bollinger Bands là tính linh hoạt: nó tự động điều chỉnh độ rộng dựa trên độ biến động của giá, giúp người dùng luôn có một khung nhìn thực tế và thích nghi với mọi thị trường.
Trước khi đi vào cách vẽ Bollinger Bands, chúng ta cần hiểu rõ cấu tạo của chúng:
- Đường trung bình động (Middle Band): Thông thường là Đường trung bình động đơn giản (Simple Moving Average – SMA) với chu kỳ 20 phiên.
- Đường trên (Upper Band): Được tính bằng cách cộng 2 độ lệch chuẩn (Standard Deviation – SD) vào đường trung bình động.
- Đường dưới (Lower Band): Được tính bằng cách trừ 2 độ lệch chuẩn khỏi đường trung bình động.
Công thức tổng quát:
Middle Band = SMA(N)
Upper Band = SMA(N) + K SD(N)
Lower Band = SMA(N) - K SD(N)
Trong đó:
– N là số kỳ tính trung bình (thường là 20).
– K là hệ số độ lệch chuẩn (thường là 2).
2. Chuẩn bị môi trường và dữ liệu
2.1. Lựa chọn phần mềm
Để vẽ Bollinger Bands, bạn cần một nền tảng biểu đồ hỗ trợ công cụ này. Các phần mềm phổ biến bao gồm:
| Phần mềm | Ưu điểm | Nhược điểm |
|---|---|---|
| MetaTrader 4/5 (MT4/MT5) | Nhiều chỉ báo, hỗ trợ lập trình EA | Giao diện cũ, cần cài đặt plugin |
| TradingView | Giao diện hiện đại, chia sẻ ý tưởng | Đôi khi dữ liệu chậm trễ ở gói miễn phí |
| NinjaTrader | Tùy biến cao, phù hợp với nhà giao dịch chuyên nghiệp | Giá thành cao, yêu cầu máy mạnh |
| Thinkorswim (TD Ameritrade) | Tích hợp đầy đủ công cụ phân tích | Chỉ dành cho khách hàng của TD Ameritrade |
2.2. Thu thập dữ liệu lịch sử
Bollinger Bands dựa trên dữ liệu giá đóng cửa (hoặc giá trung bình) của một số phiên nhất định. Để có kết quả chính xác, bạn nên:

Có thể bạn quan tâm: Cách Vẽ Đô Liền: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
- Chọn khung thời gian (timeframe): Tùy vào chiến lược, có thể là 5 phút, 1 giờ, ngày, tuần, hoặc tháng.
- Kiểm tra tính đầy đủ: Đảm bảo không có khoảng trống (missing data) trong chuỗi giá.
- Cân nhắc nguồn dữ liệu: Dữ liệu từ sàn giao dịch chính (NASDAQ, NYSE, HOSE, …), hoặc nhà cung cấp dữ liệu uy tín (Yahoo Finance, Bloomberg, Quandl).
3. Cách vẽ Bollinger Bands trên các nền tảng phổ biến
3.1. Vẽ trên MetaTrader 4/5
- Mở biểu đồ: Chọn cặp tiền tệ, cổ phiếu, hoặc hợp đồng tương lai bạn muốn phân tích.
- Thêm chỉ báo:
- Vào menu “Insert” → “Indicators” → “Trend” → “Bollinger Bands”.
- Cấu hình tham số:
- Period (N): Nhập 20 (hoặc tùy chỉnh).
- Deviation (K): Nhập 2 (hoặc tùy chỉnh).
- Shift: Thường để 0.
- Apply to: Chọn “Close” (giá đóng) hoặc “Typical Price” (giá trung bình).
- Chọn màu sắc và độ dày: Đặt màu xanh cho Middle Band, màu đỏ cho Upper Band, và màu xanh lá cho Lower Band.
- Xác nhận: Nhấn “OK”. Bollinger Bands sẽ xuất hiện trên biểu đồ.
3.2. Vẽ trên TradingView
- Mở biểu đồ: Nhập ticker (ví dụ: AAPL) vào thanh tìm kiếm.
- Thêm chỉ báo:
- Click vào nút “Indicators” (biểu tượng “ƒx”) ở phía trên.
- Gõ “Bollinger” và chọn “Bollinger Bands”.
- Cấu hình:
- Click vào biểu tượng bánh răng (settings) bên cạnh chỉ báo.
- Thay đổi “Length” thành 20, “StdDev” thành 2.
- Chọn “Source” là “Close”.
- Đặt màu sắc và độ dày cho ba dải.
- Lưu layout: Click “Save” để lưu lại cài đặt cho các biểu đồ sau này.
3.3. Vẽ trên NinjaTrader
- Mở Chart: Chọn “New” → “Chart” → Chọn Symbol và Time Frame.
- Thêm Indicator:
- Click chuột phải vào biểu đồ → “Indicators…”.
- Tìm “Bollinger” trong danh sách và nhấn “Add”.
- Thiết lập:
- Period: 20.
- StdDev: 2.
- Input: Close.
- Điều chỉnh màu sắc và độ dày.
- Xác nhận: Nhấn “OK”. Bollinger Bands xuất hiện.
3.4. Vẽ trên Thinkorswim
- Mở Chart: Nhập Symbol vào thanh “Enter Symbol”.
- Thêm Study:
- Click “Studies” → “Add Study” → “Statistical” → “Bollinger Bands”.
- Cấu hình:
- Length: 20.
- Num of Std Dev: 2.
- Price: Close.
- Chỉnh màu và độ dày.
- Xác nhận: Click “Apply” → “OK”.
4. Hiểu và phân tích các tín hiệu từ Bollinger Bands
4.1. Khi giá chạm hoặc vượt ra khỏi dải trên (Upper Band)

Có thể bạn quan tâm: Cách Vẽ Đóng Đinh: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
- Tín hiệu quá mua: Giá thường sẽ có xu hướng quay lại dải giữa hoặc dải dưới.
- Chiến lược: Bán (short) khi giá đóng cửa trên Upper Band và xuất hiện các mô hình nến giảm (như Engulfing giảm).
4.2. Khi giá chạm hoặc vượt ra khỏi dải dưới (Lower Band)
- Tín hiệu quá bán: Giá có khả năng bật lên trở lại.
- Chiến lược: Mua (long) khi giá đóng cửa dưới Lower Band và xuất hiện mô hình nến tăng (như Hammer hoặc Engulfing tăng).
4.3. Squeeze (Ép hẹp) – Khi dải Bollinger thu hẹp lại
- Định nghĩa: Độ rộng của dải trên và dải dưới giảm đáng kể, cho thấy biến động thấp.
- Ý nghĩa: Thị trường đang tích lũy; một phá vỡ mạnh (breakout) có khả năng xảy ra.
- Cách đo: So sánh hiện tại với độ rộng trung bình của 20 phiên trước. Nếu hiện tại < 0.5 trung bình, coi là squeeze.
4.4. Breakout – Giá phá dải
- Breakout lên: Giá đóng cửa trên Upper Band, xu hướng tăng mạnh.
- Breakout xuống: Giá đóng cửa dưới Lower Band, xu hướng giảm mạnh.
- Xác nhận: Kèm theo khối lượng giao dịch tăng và/hoặc các chỉ báo khác (RSI, MACD) để giảm rủi ro.
4.5. Độ lệch chuẩn (Standard Deviation) – Đánh giá độ biến động
- Khi độ lệch chuẩn tăng, dải Bollinger mở rộng → thị trường đang biến động mạnh.
- Khi độ lệch chuẩn giảm, dải Bollinger thu hẹp → thị trường ổn định hoặc chuẩn bị chuyển hướng.
5. Tùy chỉnh Bollinger Bands cho các chiến lược riêng
5.1. Thay đổi chu kỳ SMA (N)
- N ngắn (10): Phản ứng nhanh hơn, phù hợp cho giao dịch ngắn hạn (scalping, day trading).
- N dài (50, 100): Phản ứng chậm, dùng cho swing trading hoặc position trading.
5.2. Thay đổi hệ số độ lệch chuẩn (K)

Có thể bạn quan tâm: Cách Vẽ Đíu Thuốc: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
- K = 1: Dải hẹp hơn, tín hiệu quá mua/bán xuất hiện sớm hơn, nhưng có thể nhiều tín hiệu giả.
- K = 2.5 hoặc 3: Dải rộng hơn, giảm tín hiệu giả, nhưng mất một phần cơ hội.
5.3. Kết hợp với các chỉ báo khác
| Chỉ báo | Mô tả | Cách kết hợp với Bollinger |
|---|---|---|
| RSI (Relative Strength Index) | Đánh giá mức quá mua/bán | Khi giá chạm Upper Band và RSI > 70 → bán; khi giá chạm Lower Band và RSI < 30 → mua |
| MACD (Moving Average Convergence Divergence) | Xác định xu hướng và động lực | Khi MACD cắt dưới đường tín hiệu đồng thời giá phá Upper Band → bán |
| Stochastic Oscillator | Xác định mức quá mua/bán nhanh | Tương tự RSI, nhưng nhạy hơn; dùng để xác nhận tín hiệu |
| Volume | Khối lượng giao dịch | Breakout kèm volume tăng mạnh → xác nhận xu hướng mới |
5.4. Sử dụng Bollinger Bands trong chiến lược “Bollinger Band + EMA”
Một chiến lược phổ biến là kết hợp Bollinger Bands với Đường trung bình EMA (Exponential Moving Average) 50 hoặc 200:
- Khi giá nằm trên EMA 50 và chạm Upper Band → xu hướng tăng mạnh, có thể mở lệnh mua.
- Khi giá nằm dưới EMA 50 và chạm Lower Band → xu hướng giảm mạnh, có thể mở lệnh bán.
6. Lập trình vẽ Bollinger Bands bằng Python (ví dụ thực hành)
Đối với nhà phân tích muốn tự động hoá việc vẽ và phân tích, Python là công cụ mạnh mẽ. Dưới đây là một ví dụ ngắn dùng pandas, numpy, và matplotlib để vẽ Bollinger Bands cho cổ phiếu AAPL.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import yfinance as yf # 1. Tải dữ liệu lịch sử
symbol = 'AAPL'
data = yf.download(symbol, start='2026-01-01', end='2026-12-31')
close = data'Close' # 2. Tính SMA và độ lệch chuẩn
N = 20
K = 2 sma = close.rolling(window=N).mean()
std = close.rolling(window=N).std() upper_band = sma + K std
lower_band = sma - K std # 3. Vẽ biểu đồ
plt.figure(figsize=(14,7))
plt.plot(close, label='Close Price', color='black')
plt.plot(sma, label='20‑Day SMA', color='blue')
plt.plot(upper_band, label='Upper Band (±2σ)', color='red', linestyle='--')
plt.plot(lower_band, label='Lower Band (±2σ)', color='green', linestyle='--')
plt.title(f'Bollinger Bands for {symbol}')
plt.legend()
plt.show()
Giải thích mã:
yfinancedùng để tải dữ liệu giá.rolling(window=N).mean()tính SMA 20 ngày.rolling(window=N).std()tính độ lệch chuẩn 20 ngày.- Các dải trên/dưới được tính bằng công thức đã nêu.
matplotlibvẽ biểu đồ, hiển thị dải và giá đóng.
Bạn có thể thêm logic để phát hiện squeeze:
# Độ rộng dải
band_width = upper_band - lower_band
avg_width = band_width.rolling(window=20).mean() squeeze = band_width < (0.5 avg_width)
plt.figure(figsize=(14,2))
plt.plot(squeeze.astype(int), label='Squeeze (1=Yes)', color='purple')
plt.title('Squeeze Detection')
plt.show()
7. Những lỗi thường gặp khi sử dụng Bollinger Bands

Có thể bạn quan tâm: Cách Vẽ Đáy Hộp: Hướng Dẫn Từ Cơ Bản Đến Nâng Cao Cho Người Mới Bắt Đầu
| Lỗi | Mô tả | Cách khắc phục |
|---|---|---|
| Dùng SMA 20 cho mọi thị trường | Không phải mọi thị trường có tính chất biến động tương tự | Thử nghiệm với N = 10, 30, 50 để tìm giá trị tối ưu |
| Bỏ qua khối lượng giao dịch | Breakout không có volume hỗ trợ có thể là tín hiệu giả | Kiểm tra volume hoặc dùng OBV (On‑Balance Volume) |
| Dùng Bollinger Bands một mình | Dễ bị nhiễu bởi nhiễu giá ngắn hạn | Kết hợp với RSI, MACD hoặc các yếu tố cơ bản |
| Không cập nhật dữ liệu | Dữ liệu cũ dẫn tới tín hiệu lỗi thời | Đảm bảo nguồn dữ liệu thời gian thực hoặc gần thời gian thực |
| Đặt K quá lớn (≥ 3) | Dải quá rộng, mất đi tính nhạy | Thường K = 2 là tiêu chuẩn; điều chỉnh tùy thị trường |
8. Thực hành: Xây dựng chiến lược giao dịch dựa trên Bollinger Bands
8.1. Chiến lược “Bollinger Band Breakout + Volume”
Điều kiện vào lệnh mua:
1. Giá đóng cửa vượt Upper Band.
2. Khối lượng giao dịch hiện tại > 1.5 Khối lượng trung bình 20 ngày.
3. RSI (14) > 55 (để tránh mua trong quá mức quá mua).
Điều kiện vào lệnh bán:
1. Giá đóng cửa dưới Lower Band.
2. Khối lượng giao dịch hiện tại > 1.5 Khối lượng trung bình 20 ngày.
3. RSI (14) < 45.
Quản lý rủi ro:
– Dừng lỗ (Stop‑Loss) đặt tại 1.5 ATR (Average True Range) dưới/ trên mức vào lệnh.
– Chốt lời (Take‑Profit) dựa trên tỷ lệ R:R = 1:2 hoặc khi giá chạm lại Middle Band.
8.2. Kiểm thử lại (Backtest) bằng Python
import talib # Tính chỉ báo
data'Upper', data'Middle', data'Lower' = talib.BBANDS(data'Close', timeperiod=20, nbdevup=2, nbdevdn=2, matype=0)
data'RSI' = talib.RSI(data'Close', timeperiod=14)
data'ATR' = talib.ATR(data'High', data'Low', data'Close', timeperiod=14)
data'MA_Vol' = data'Volume'.rolling(20).mean() # Tín hiệu mua
data'Long' = ((data'Close' > data'Upper') & (data'Volume' > 1.5 data'MA_Vol') & (data'RSI' > 55)) # Tín hiệu bán
data'Short' = ((data'Close' < data'Lower') & (data'Volume' > 1.5 data'MA_Vol') & (data'RSI' < 45)) # Đánh giá hiệu suất (cơ bản)
initial_capital = 100000
position = 0
capital = initial_capital for i in range(len(data)): if data'Long'.iloci and position == 0: position = capital / data'Close'.iloci # mua toàn bộ entry_price = data'Close'.iloci stop_loss = entry_price - 1.5 data'ATR'.iloci elif data'Short'.iloci and position == 0: position = -capital / data'Close'.iloci # bán khống entry_price = data'Close'.iloci stop_loss = entry_price + 1.5 data'ATR'.iloci # Kiểm tra stop‑loss if position > 0 and data'Low'.iloci <= stop_loss: capital = position stop_loss position = 0 elif position < 0 and data'High'.iloci >= stop_loss: capital = -position stop_loss position = 0 # Đóng vị thế khi chạm Middle Band if position != 0 and ((position > 0 and data'Close'.iloci <= data'Middle'.iloci) or (position < 0 and data'Close'.iloci >= data'Middle'.iloci)): capital = position data'Close'.iloci position = 0 final_value = capital + (position data'Close'.iloc-1 if position != 0 else 0)
print(f'Giá trị cuối cùng: {final_value:.2f}, Lợi nhuận: {(final_value-initial_capital)/initial_capital100:.2f}%')
Lưu ý: Đây chỉ là mô hình đơn giản, chưa tính phí giao dịch, trượt giá, và các yếu tố thực tế khác. Khi triển khai thực tế, cần tối ưu hoá các tham số và thực hiện kiểm thử trên nhiều khung thời gian và tài sản khác nhau.

9. Khi nào nên dùng Bollinger Bands và khi nào không nên dùng
9.1. Thích hợp
- Thị trường có xu hướng rõ ràng: Khi xu hướng đang mạnh, Bollinger Bands giúp xác định mức độ quá mua/bán trong xu hướng.
- Giao dịch ngắn hạn: Dải rộng cho phép nhận diện các mức đảo chiều nhanh.
- Khi kết hợp với các chỉ báo động lượng: Tăng độ chính xác của tín hiệu.
9.2. Không thích hợp
- Thị trường “sideways” kéo dài (không có xu hướng): Bollinger Bands sẽ liên tục chạm và bật lại, gây ra quá nhiều tín hiệu sai.
- Thị trường có khối lượng rất thấp: Dải có thể bị ảnh hưởng bởi các giao dịch lẻ, tạo tín hiệu giả.
- Khi chỉ dựa vào một chỉ báo: Độ tin cậy giảm mạnh; cần bổ sung yếu tố cơ bản hoặc tin tức.
10. Kết luận
Bollinger Bands là một công cụ đa năng, không chỉ giúp nhận diện mức quá mua, quá bán mà còn cung cấp thông tin về độ biến động và khả năng “squeeze” – chuẩn bị cho các breakout mạnh. Để vẽ và sử dụng Bollinger Bands hiệu quả, người dùng cần:
- Hiểu rõ công thức và nguyên tắc (SMA + độ lệch chuẩn).
- Cài đặt đúng tham số (N = 20, K = 2 là mặc định, nhưng có thể tùy chỉnh).
- Kết hợp với các chỉ báo khác (RSI, MACD, Volume) để giảm tín hiệu giả.
- Thực hiện kiểm thử (backtest) trên dữ liệu lịch sử và điều chỉnh chiến lược.
- Quản lý rủi ro chặt chẽ bằng stop‑loss và tỷ lệ R:R hợp lý.
Bằng việc nắm vững cách vẽ và phân tích Bollinger Bands, bạn sẽ có một công cụ mạnh mẽ trong tay, giúp đưa ra quyết định giao dịch có căn cứ, giảm thiểu rủi ro và tối ưu hoá lợi nhuận. Hãy bắt đầu áp dụng ngay trên nền tảng yêu thích của bạn, tùy chỉnh tham số phù hợp với phong cách giao dịch và thị trường mục tiêu, và không ngừng học hỏi từ các kết quả thực tế để nâng cao hiệu quả chiến lược. Chúc bạn giao dịch thành công!
