Giới thiệu về chỉ số SMA
Chỉ báo SMA là gì?
SMA (Simple Moving Average) là một công cụ phân tích kỹ thuật đơn giản, tính toán giá trung bình của một tài sản trong một khoảng thời gian xác định, thường sử dụng giá đóng cửa.
Cách tính chỉ báo SMA và phân loại
1.2.1.Cách tính chỉ báo SMA
SMA được tính bằng cách lấy tổng các giá trị đóng cửa của tài sản trong một số phiên gần đây và chia cho số lượng phiên đó Điều này tạo ra một đường trung bình di chuyển mượt theo giá của tài sản trong khoảng thời gian xác định.
Công thức tính SMA cụ thể như sau: SMA = (P1 + P2 + P3 + … + Pn)/N
- Trong đó: o P1-Pn: là mức giá đóng cửa trong mỗi chu phiên. o n: số ngày/phiên giao dịch
SMA (10) = tổng mức giá đóng cửa của cổ phiếu VCB 10 phiên giao dịch gần nhất /10 SMA (50) = tổng mức giá đóng cửa của cổ phiếu VCB 50 phiên giao dịch gần nhất /50
SMA (100) = tổng mức giá đóng cửa của cổ phiếu VCB 100 phiên giao dịch gần nhất /100
Dựa vào chu kỳ tính toán người ta chia SMA làm 3 loại: ngắn hạn, trung hạn và dài hạn.
SMA ngắn hạn: SMA10, SMA12, SMA20…
SMA trung hạn: SMA50, SM70, SMA90…
SMA dài hạn: SMA200, SMA250, SMA500…
Cách sử dụng đường SMA trong giao dịch
- Sử dụng 1 đường SMA xác định điểm mua bán
Biểu đồ giá giảm cắt ngang đường SMA theo hướng từ trên xuống, đường SMA hướng lên trên và giá đóng cửa trên đường SMA Đây là thời điểm nên mở lệnh mua.
Biểu đồ giá tăng cắt ngang đường SMA theo hướng từ dưới lên, đường SMA hướng xuống dưới và giá đóng cửa nằm dưới đường SMA Đây là thời điểm nên mở lệnh bán. Khi đường SMA đi ngang, không rõ xu hướng giao dịch.
- Sử dụng 2 đường SMA xác định điểm mua bán
Có thể sử dụng 2 chỉ báo SMA trung hạn (SMA 50) và SMA dài hạn (SMA 200) Đường SMA 200 ít biến động hơn Tuy nhiên nó là mức giá trung bình ổn định Bằng cách này sẽ bắt được tín hiệu khi SMA-50 di chuyển cắt SMA-200 theo hướng từ trên xuống tạo độ dốc cao như thác đổ Lúc này cũng tương tự như biểu đồ giá cắt SMA, đây là thời điểm bạn nên bán ra để chốt lời khi SMA-50 di chuyển nhanh lên trên và cắt qua đường SMA-
200 theo hướng từ dưới lên Giá lúc này có dấu hiệu tăng mạnh, đây là lúc bạn nên mua vào.
Ý nghĩa của chỉ báo SMA
Đường SMA là công cụ giúp các nhà đầu tư có thể nhận thức rõ hơn xu hướng cơ bản cả thị trường và đưa ra quyết định chính xác nhất trong giao dịch Nó có ý nghĩa quan trọn khi đầu tư vào thị trường chứng khoán.
Xác định xu hướng thị trường: SMA giúp nhà đầu tư nhận biết và xác định xu hướng chính của thị trường Bằng cách tính toán giá trị trung bình của một khoảng thời gian nhất định, SMA làm mờ các biến động ngắn hạn và tạo ra một đường cong mượt mà thể hiện xu hướng dài hạn của giá cổ phiếu Điều này giúp nhà đầu tư nhận ra liệu thị trường đang trong giai đoạn tăng, giảm hoặc đi ngang, từ đó đưa ra quyết định đúng đắn về mua vào hoặc bán ra.
Xác định hỗ trợ kháng cự: SMA cung cấp thông tin quan trọng về mức hỗ trợ và kháng cự trên biểu đồ giá Khi giá cổ phiếu tiếp cận hoặc cắt qua đường SMA, nó có thể gây ra sự phản ứng từ các nhà đầu tư và ảnh hưởng đến xu hướng giá SMA có thể được sử dụng để xác định mức giá quan trọng mà giá cổ phiếu có thể gặp khó khăn trong việc vượt qua (kháng cự) hoặc mức giá mà giá cổ phiếu có thể được hỗ trợ.
Tìm điểm vào lệnh, chốt lời và cắt lỗ: SMA cung cấp tín hiệu mua vào và bán ra trong quá trình giao dịch Khi giá cổ phiếu vượt qua đường SMA từ dưới lên (crossover),đây có thể là tín hiệu mua vào Ngược lại, khi giá cổ phiếu vượt qua đường SMA từ trên xuống (crossover ngược), đây có thể là tín hiệu bán ra Ngoài ra, SMA cũng có thể sử dụng để xác định điểm chốt lời hoặc cắt lỗ trong giao dịch Khi giá cổ phiếu vượt qua đường SMA từ trên xuống và tiếp tục đi xuống, điều này có thể là tín hiệu để cắt lỗ.Trong khi đó, khi giá cổ phiếu vượt qua đường SMA từ dưới lên và tiếp tục đi lên, đây có thể là tín hiệu để chốt lời.
Phân tích và ứng dụng chỉ số SMA
Đồ thị biểu diễn giá đóng cửa của cổ phiểu VCB, đường SMA(20) và đường SMA(50) (Câu 1)
Bước 1: Cài đặt các thư viện Python backtesting và ta vào môi trường Python bằng lệnh !pip install backtesting ta
Bước 2: Cài đặt thư viện
matplotlib.pyplot được import để vẽ đồ thị và hình ảnh
umpy được import để thực hiện tính toán trên dữ liệu
pandas được import để xử lý và phân tích dữ liệu trên các bảng dữ liệu
Backtesting và Strategy được import từ thư viện backtesting Backtest được dùng để tạo ra một backtest cho một chiến lược giao dịch cụ thể Strategy được dùng để định nghĩa chiến lược giao dịch
sma_indicator được import từ thư viện ta Đây là các chỉ báo kỹ thuật để tính toán đường trung bình động (EMA) và đường trung bình động đơn giản (SMA)
Bước 3:Đọc bảng dữ liệu ‘VCB1.csv’
Hình 1 Bảng dữ liệu VCB
Bước 4: Định hình các cột trong DataFrame theo thứ tự [‘Date’, ‘Open’, ‘High’,
Bước 5:Vẽ đồ thị dữ liệu giá cổ phiếu từ cột “Close”.
Hình 2 Đồ thị giá cổ phiếu VCB cột "Close"
plt.plot(df[‘Close’]) : vẽ đồ thị dữ liệu giá cổ phiếu từ cột “Close” của DataFrame df Hàm plt.plot() được sử dụng để vẽ đồ thị, trong đó đối số truyền vào là cột “ Close ” của DataFrame df
Bước 6: Thay đổi kiểu dữ liệu của cột “Date” và đặt cột "Date" của DataFramedf làm chỉ mục (index) của DataFrame.
df[‘Date’]=pd.to_datetime (df[‘Date’]) : thay đổi kiểu dữ liệu của cột “ Date ” trong
DataFrame df từ kiểu chuỗi sang kiểu date time Hàm pd.to_datetime() được sử dụng để chuyển đổi kiểu dữ liệu của cột “ Date ” Khi chuyển đổi sang kiểu datetime, ta có thể thực hiện các tác vụ liên quan đến thời gian như xác định khoảng cách thời gian giữa các ngày hoặc lọc dữ liệu theo các ngày cụ thể.
dfset_index(‘Date’) : vẽ đồ thị dữ liệu giá cổ phiếu từ cột “ Close ” của
DataFrame Khi một cột được đặt làm chỉ mục, các giá trị trong DataFrame sẽ được sắp xếp và truy xuất dựa trên giá trị của cột chỉ mục đó.
Bước 7: Thực hiện tính toán và thêm hai cột mới vào bảng dữ liệu đang được xử lý với tên gọi là “SMA 20” và “SMA 50”.
Hình 4 Thể hiện SMA20, SMA50 vào bảng dữ liệu
Đoạn mã trên thực hiện tính toán và thêm hai cột mới vào bảng dữ liệu đang được xử lý với tên gọi là “ SMA 20 ” và “ SMA 50 ” Cả hai cột chứa thông tin về giá trị của đường trung bình động trong 20 ngày và 50 ngày của giá đóng cửa cổ phiếu tương ứng.
Chức năng sma_indicator được sử dụng để tính toán giá trị của SMA Đối với close chứa thông tin về giá cổ phiếu, window chứa độ dài của cửa sổ tính toán (20 và 50).
Với SMA, mỗi giá trị trong chuối được tính bằng cách lấy trung bình cộng của giá trị trong cửa sổ tính toán SMA thường được sử dụng để đánh giá xu hướng của giá cổ phiếu và xác định điểm mua bán hoặc các điểm quan trọng khác trong giao dịch chứng khoán.
Bước 8: Biểu đồ giá đóng cửa (close), SMA20 và SMA50.
Hình 5 Đồ thị biểu diễn giá đóng cửa, SMA20, SMA50
plt.plot(df['Close'].head(2500),label='Close') : Vẽ đường biểu đồ cho cột Close trong DataFrame df, head(2500) chỉ lấy 2500 dòng đầu tiên của cột 'Close' , label='Close' đặt nhãn cho đường biểu đồ là 'Close'
plt.plot(df['SMA 20'].head(2500),label='SMA 20') : Vẽ đường biểu đồ cho cột 'SMA 20' trong DataFrame df, head(2500) chỉ lấy 2500 dòng đầu tiên của cột ' SMA 20 ', label='SMA 20' đặt nhãn cho đường biểu đồ là 'SMA 20'
plt.plot(df['SMA 50'].head(2500),label='SMA 50') : Vẽ đường biểu đồ cho cột 'SMA 50' trong DataFrame df, head(2500) chỉ lấy 2500 dòng đầu tiên của cột ' SMA 50 ', label='SMA 50' đặt nhãn cho đường biểu đồ là 'SMA 50'
plt.legend() : Hiển thị chú thích cho các đường biểu đồ, sử dụng các nhãn đã được đặt trước đó.
Xây dựng chiến thuật giao dịch trên đường SMA(ngắn hạn) và đường SMA(dài hạn) (Câu 2)
Hình 6 Xây dựng chiến thuật SMA20 và SMA50
Hai đoạn mã đầu ở trên được chia ra 2 trường hợp:
Trường hợp 1: Nếu SMA 20 vượt qua SMA 50 và SMA 20 của ngày trước đó không vượt qua SMA 50 của ngày trước đó thì đặt giá trị 1 cho cột “position” tại các vị trí tương ứng Điều này cho rằng tại các thời điểm đó chúng ta nên mở vị thế mua vì tín hiệu SMA
20 vượt qua SMA 50 và cho thấy đây là xu hướng giá tăng.
Trường hợp 2: Nếu SMA 20 thấp hơn SMA 50 và SMA 50 của ngày trường đó không vượt qua SMA 20 của ngày trước đó thì đặt giá trị -1 cho cột “position” tại các vị trí tương ứng Điều này cho rằng tại các thời điểm đó chúng ta nên mở vị thế bán vì tín hiệu SMA 20 thấp hơn SMA 50 cho thấy đây là xu hướng giá giảm.
Sau khi thực thi đoạn code này sẽ trả về một DataFrame mới chỉ chứa các hàng trong DataFrame df mà giá trị trong cột “position” không phải là null.
Hình 7 Bảng kết quả chiến thuật SMA
Cụ thể, hàm notnull() được sử dụng để trả về một mảng Boolean cho thấy giá trị tương ứng trong cột “ position ” có phải là null hay không Sau đó, mảng Boolean này được sử dụng để lọc các hàng trong DataFrame df bằng cách sử dụng df[df[‘position’].notnull()] Kết quả là một DataFrame mới chỉ chứa các hàng với giá trị khác null trong cột “position”.
df[df.index