【คัดลอก-วางได้】วิธีดึงข้อมูลราคาหุ้นสหรัฐฯด้วย Python แล้วเปรียบเทันต์ผลตอบแทน
・อยากเปรียบเทียบข้อมูลราคาหุ้นของตราสารที่สนใจอย่างรวดเร็ว
・อยากลองวิเคราะห์ข้อมูลการเงินด้วย Python
・อยากรู้แนวโน้มราคาหุ้นของบริษัทที่ได้ซื้อไว้ในระยะยาว
บทความนี้เขียนเพื่อผู้ที่อยู่ในทิศทางดังกล่าว
ครั้งนี้เราจะสร้าง
Python โค้ดที่เปรียบเทียบกราฟการเคลื่อนไหวของราคาหุ้นหลายตัวในสหรัฐอเมริกาตามระยะเวลาที่ผู้ใช้กำหนด
นั่นคือจุดประสงค์
โดยสรุปคือโปรแกรมที่ทำให้ข้อมูลราคาหุ้นที่ต้องการมองเห็นได้ชัดขึ้น
ไม่ว่าจะทำ bot ซื้อขายอัตโนมัติ หรือทำการวิเคราะห์ทางเทคนิคใดๆ หากไม่มีข้อมูลราคาหุ้นก็ไม่สามารถเริ่มต้นได้
สำหรับผู้เริ่มต้น Python นี่เป็นโปรแกรมที่ไม่เสียหายถ้าจะลองสัมผัสดูเป็นสิ่งที่ควรลอง
ยกตัวอย่าง "อยากได้การเปรียบเทียบการเคลื่อนไหวของราคาหุ้น GAFAM ตั้งแต่ 1 มกราคม 2020 ถึง 12 ตุลาคม 2020"
เมื่อถึงเวลานั้น หากรันโปรแกรมนี้จะสร้างภาพกราฟแบบนี้ขึ้นมา
ในช่วงเวลานี้ Amazon ของ GAFAM มีการเติบโตของราคาหุ้นมากที่สุดจะเห็นได้ชัด
โค้ดที่สร้างกราฟนี้อยู่ด้านล่าง
import pandas_datareader.data as web
import datetime as datetime
import matplotlib.pyplot as plt
import pandas as pd
#ระบุช่วงข้อมูลและสัญลักษณ์หุ้น (Ticker Symbol)
start=datetime.datetime(2020,1,1)
end =datetime.datetime(2020,10,12)
print("เริ่มดึงข้อมูล ข้อมูลจาก Yahoo Finance เป็นค่าเริ่มต้น")
print("ระยะเวลาที่ได้มา: "+str(start)+" ----> "+str(end))
all_data = web.DataReader(tickers,
'yahoo',
start=start,
end=end)
print("ดึงข้อมูลเสร็จสมบูรณ์")
print("กำลังสรุปผลลัพธ์")
# คราวนี้ใช้เฉพาะปิดปรับปรุงแล้ว จึงเก็บไว้ใน df
df = all_data["Adj Close"]
# คำนวณการคืนทุน
df=df/df.iloc[0]
# เพิ่มคอลัมน์วันที่
df["Date"] = all_data.index
print(df.dtypes)
df.set_index(["Date"],inplace=True)
# เรียงลำดับตราสารจากมูลค่าการคืนทุนสูงสุด
df=df.sort_values(df.index[-1],axis=1,ascending=False)
# พลอต
pd.set_option("display.max_rows",None)
df.plot()
# บันทึกภาพ
plt.savefig("result.png")
# บันทึกข้อมูลตัวเลข
df.to_csv("result.csv")
print("เสร็จเรียบร้อย")
print("ไฟล์ result.png แสดงกราฟแนวโน้มราคาหุ้นแต่ละตัว และ result.csv บันทึกข้อมูลตัวเลขแล้ว")
ในส่วนด้านบนให้ระบุช่วงที่ต้องการศึกษาด้วย start, end และใส่สัญลักษณ์ตราสารที่สนใจด้วย tickers
เพียงเปลี่ยนสองบรรทัดนี้ก็สามารถใช้งานได้ทันที
(คัดลอกวางแล้วลองปรับแต่งดู เพื่อเพิ่มความเข้าใจใน pandas)
หมายเหตุ)
1. หากเจอข้อผิดพลาดว่าไม่พบโมดูล ให้ติดตั้งผ่าน pip ตามความเหมาะสม
2. หากเจอข้อความ AttributeError: 'numpy.datetime64' object has no attribute 'toordinal'
อาจเป็นเวอร์ชัน matplotlib เก่าลองติดตั้งเวอร์ชันล่าสุดดู
3. ในอนาคต Yahoo Finance อาจเปลี่ยนแปลงการใช้งาน ทำให้โค้ดนี้ทำงานไม่ถูกต้อง
ปกติแล้วบล็อกการลงทุนหุ้น และnote เขียนบทความเกี่ยวกับการลงทุนอยู่
ถ้าเป็นไปได้ ลองไปดูดูนะครับ (^_^)