Ví dụ: Xây dựng biểu đồ phân tích chứng khoán

Một phần của tài liệu PYTHON TRONG PHÂN TÍCH DỮ LIỆU (Trang 25 - 32)

2. Sử dụng Python trong phân tích dữ liệu

2.3. Ví dụ: Xây dựng biểu đồ phân tích chứng khoán

Để tìm hiểu về thị trường chứng khoán, trước hết ta phải biết cách đọc một biểu đồ chứng khoán. Ở đây em sẽ sử dụng biểu đồ hình nến. Đây là một loại biểu đồ mô tả chuyển động giá của một chứng khoán trong quá khứ. Biểu đồ này biểu diễn giá đóng cửa, mở cửa, giá cao nhất và thấp nhất theo ngày của một chứng khoán

Hình 7: Một biểu đồ dạng hình nến

25

Trong biểu đồ nến, những thanh nến là sự kết hợp giữa thân nến và bóng nến. Khối lớn ở giữa (thân nến) thể hiện biên độ giữa giá mở cửa và giá đóng cửa. Nếu khối có màu xanh nghĩa là giá mở cửa thấp hơn giá đóng cửa, ngược lại nếu khối có màu đỏ nghĩa là giá mở cửa cao hơn giá đóng cửa. Bóng nến trên thể hiện giá cao nhất và bóng nến dưới thể hiện giá thấp nhất của phiên giao dịch. Loại biểu đồ này có ưu điểm là rất dễ đọc và hình dung.

Sau đây em sẽ sử dụng Python để xây dựng một biểu đồ hình nến dựa trên dữ liệu chứng khoán thực tế. Dữ liệu được sử dụng là công ty Alphabet (mã chứng khoán: GOOG) trong khoảng thời gian từ ngày 01/01/2021 đến ngày 01/06/2021. Dữ liệu được lấy nguồn từ Yahoo, phần lập trình sử dụng Jupyter Lab. Các bước được tiến hành như sau:

• Nhập thư viện pandas_datareader, datetime, bokeh.plotting

from pandas_datareader import data

import datetime

from bokeh.plotting import figure, show, output_file

• Đặt ngày bắt đầu và ngày kết thúc việc lấy dữ liệu

start_date = datetime.datetime(2021,1,1) end_date = datetime.datetime(2021,6,1)

• Lập bảng df với mã chứng khoán là GOOG, nguồn dữ liệu là Yahoo

df = data.DataReader(name="GOOG", data_source="yahoo", start=start_date, end=end_date)

26

• Tạo hàm tính biên độ giá mở cửa và đóng cửa

def inc_dec(c, o):

if c > o: value="Increase"

elif c < o: value="Decrease"

else: value="Equal"

return value

• Xây hệ trục tọa độ cho biểu đồ bằng hàm figure

p = figure(x_axis_type='datetime', width=1000, height=300) p.title.text = " Biểu đồ hình nến"

27 • Dựng bóng nến

p.segment(df.index, df.High, df.index, df.Low, color="Black")

• Dựng thân nến: trục x là ngày, trục y là giá trị trung bình của giá mở cửa và đóng cửa (Middle), chiều cao nến là biên độ giá (Height)

df["Middle"] = (df.Open+df.Close)/2 df["Height"] = abs(df.Close-df.Open)

• Đặt màu cho nến

df["Status"]=[inc_dec(c,o) for c, o in zip(df.Close,df.Open)] #tăng

p.rect(df.index[df.Status=="Increase"],df.Middle[df.Status=="Incre ase"],hours_12, df.Height[df.Status=="Increase"],fill_color="#3FFF 0A", line_color="black")

#giảm

p.rect(df.index[df.Status=="Decrease"],df.Middle[df.Status=="Decre ase"],hours_12, df.Height[df.Status=="Decrease"],fill_color="#FF33 33", line_color="black")

28 Toàn bộ đoạn code:

from pandas_datareader import data

import datetime

from bokeh.plotting import figure, show, output_file

start_date = datetime.datetime(2021,1,1)

end_date = datetime.datetime(2021,6,1)

df = data.DataReader(name="GOOG", data_source="yahoo", start=

start_date, end=end_date) def inc_dec(c, o): if c > o: value="Increase" elif c < o: value="Decrease" else: value="Equal" return value

df["Status"]=[inc_dec(c,o) for c, o in zip(df.Close,df.Open)] df["Middle"] = (df.Open+df.Close)/2

df["Height"] = abs(df.Close-df.Open)

p = figure(x_axis_type='datetime', width=1000, height=300)

29

hours_12=12*60*60*1000

p.segment(df.index, df.High, df.index, df.Low, color="Black")

#tăng

p.rect(df.index[df.Status=="Increase"],df.Middle[df.Status=="

Increase"],hours_12, df.Height[df.Status=="Increase"],fill_co lor="#3FFF0A", line_color="black")

#giảm

p.rect(df.index[df.Status=="Decrease"],df.Middle[df.Status=="

Decrease"],hours_12, df.Height[df.Status=="Decrease"],fill_co lor="#FF3333", line_color="black")

output_file("chart.html") show(p)

30

KẾT LUẬN

Qua thời gian thực hiện nghiên cứu, tìm hiểu về chủ đề “Python trong Phân tích dữ liệu”, nhìn chung em đã hiểu hơn về ngành phân tích dữ liệu nói chung, về ngôn ngữ Python và ứng dụng của nó trong phân tích dữ liệu nói riêng. Đây là một lĩnh vực không mới, song tiềm năng khai thác của nó vẫn còn rất nhiều.

Phân tích dữ liệu đang ngày càng đóng vai trò quan trọng trong thời đại này, và Python là một công cụ đắc lực cho việc đó. Ngôn ngữ này vẫn đang tiếp tục phát triển, cung cấp thêm các giải pháp nhanh hơn, hiệu quả hơn cho người sử dụng, hứa hẹn sẽ ngày càng được ứng dụng rộng rãi hơn trong nhiều lĩnh vực khác nhau.

31

TÀI LIỆU THAM KHẢO

1. Alvaro Fuentes, Become a Python Data Analyst, Packt Publishing, US, 2018.

2. Vitaly Friedman, “Data Visualization and Infographics”, Smashing Magazine, January 14, 2008.

3. Yves Hilpisch, Python for Finance: Analyze Big Financial Data, O'Reilly Media, US, 2015.

4. Jeff Leek, The Elements of Data Analytic Style, Lulu, US, 2015.

Một phần của tài liệu PYTHON TRONG PHÂN TÍCH DỮ LIỆU (Trang 25 - 32)

Tải bản đầy đủ (PDF)

(32 trang)