วิธีการดึงข้อมูลหุ้นหลายตัว ด้วยภาษาไพธอน

 

วิธีการดึงข้อมูลหุ้นหลายตัว ด้วยภาษาไพธอน 

เตรียม Environment: ตรวจสอบว่าได้ติดตั้ง Library ครบหรือยังด้วยคำสั่ง pip install yfinance pandas

ไฟล์ CSV: อย่าลืมย้ำในคลิปเรื่อง encoding='utf-8-sig' เพราะเป็นปัญหาใหญ่ที่คนไทยมักเจอเวลาเปิดไฟล์ใน Excel แล้วภาษาไทยอ่านไม่ออก

---------------------------------

# Full Code

import yfinance as yf          # นำเข้า Library สำหรับดึงข้อมูลการเงินจาก Yahoo Finance

import pandas as pd            # นำเข้า Library สำหรับจัดการข้อมูลในรูปแบบตาราง (DataFrame)

from datetime import datetime  # นำเข้าคำสั่งสำหรับดึงวันที่และเวลาปัจจุบันของระบบ


# รายชื่อหุ้นที่ต้องการดึงข้อมูล โดยระบุเป็นลิสต์ (List)

stocks = ["PTT.BK", "AAPL", "TU.BK"]


# สร้างลิสต์ว่างเพื่อเอาไว้เก็บข้อมูลของหุ้นแต่ละตัวที่จะวนลูปดึงมาได้

data_list = []


# ดึงวันที่และเวลาปัจจุบัน แล้วจัดรูปแบบเป็น "ปี-เดือน-วัน ชั่วโมง:นาที:วินาที"

current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")


# เริ่มการวนลูป (Loop) เพื่อดึงข้อมูลหุ้นทีละตัวจากลิสต์ stocks

for s in stocks:

    t = yf.Ticker(s)           # สร้างออบเจกต์ Ticker เพื่อเชื่อมต่อกับข้อมูลของหุ้นตัวนั้นๆ

    

    # ดึงข้อมูลพื้นฐาน เช่น ชื่อเต็มของบริษัท ถ้าไม่พบให้ใส่คำว่า 'ไม่พบชื่อ'

    name = t.info.get('longName', 'ไม่พบชื่อ')

    # ดึงสกุลเงินที่ใช้ซื้อขายหุ้นตัวนั้นๆ

    currency = t.info.get('currency', 'Unknown')

    

    # เข้าถึงข้อมูลราคาแบบรวดเร็ว (Fast Info) ซึ่งดึงค่าได้ไวขึ้น

    info = t.fast_info

    current_p = info['last_price']      # ราคาซื้อขายล่าสุด (Last Price)

    open_p    = info['open']            # ราคาตอนเปิดตลาด (Open)

    high_p    = info['day_high']        # ราคาสูงสุดของวัน (High)

    low_p     = info['day_low']         # ราคาต่ำสุดของวัน (Low)

    close_p   = info['previous_close']  # ราคาปิดของวันทำการก่อนหน้า (Previous Close)

    

    # นำข้อมูลที่ดึงได้มาจัดเก็บในรูปแบบ Dictionary แล้วเพิ่มเข้าไปใน data_list

    data_list.append({

        "Date": current_time,           # วันที่ดึงข้อมูล

        "Stock Name": f"{name} ({s})",  # ชื่อบริษัทพร้อมตัวย่อ

        "Last Price": round(current_p, 2), # ราคาล่าสุด (ปัดเศษ 2 ตำแหน่ง)

        "Open": round(open_p, 2),       # ราคาเปิด (ปัดเศษ 2 ตำแหน่ง)

        "High": round(high_p, 2),       # ราคาสูงสุด (ปัดเศษ 2 ตำแหน่ง)

        "Low": round(low_p, 2),         # ราคาต่ำสุด (ปัดเศษ 2 ตำแหน่ง)

        "Close": round(close_p, 2),     # ราคาปิดก่อนหน้า (ปัดเศษ 2 ตำแหน่ง)

        "Currency": currency            # สกุลเงิน

    })


# แปลงลิสต์ของ Dictionary ให้กลายเป็นตาราง DataFrame เพื่อความสวยงามและจัดการง่าย

df = pd.DataFrame(data_list)


# แสดงข้อความหัวข้อพร้อมระบุเวลาที่ดึงข้อมูล

print(f"--- ข้อมูลหุ้นรายวัน ณ วันที่ {current_time} ---")


# แสดงผลตารางบนหน้าจอ โดยใช้ to_string(index=False) เพื่อไม่ให้แสดงเลขลำดับแถวด้านหน้า

print(df.to_string(index=False))


# บันทึกข้อมูลทั้งหมดลงไฟล์ CSV

# index=False คือไม่เซฟเลขลำดับแถว

# encoding='utf-8-sig' เพื่อให้ Excel เปิดอ่านภาษาไทยได้ถูกต้อง

df.to_csv("Stock_Full_Data.csv", index=False, encoding='utf-8-sig')


# แจ้งเตือนเมื่อการทำงานเสร็จสมบูรณ์

print("\nบันทึกไฟล์ Stock_Full_Data.csv เรียบร้อยแล้ว!")


---------------------------------------------------------


ความคิดเห็น