ดึงราคาหุ้น จาก yahoo โดยใช้ python

ดึงราคาหุ้น จาก yahoo (หรือแหล่งอื่นใด) มีวิธีใดสะดวกบ้าง? คำถามนี้มาจากมิตรสหายท่านหนึ่งชอบเล่นหุ้น และอยากได้ข้อมูลหุ้นมาใช้ในการวิเคราะห์ จึงมาขอคำปรึกษาว่าจะทำอย่างไรจึงจะดาวน์โหลดข้อมูลหุ้นมาเก็บในรูปแบบ Excel เพื่อใช้วิเคราะห์หุ้นต่อไป

card game
Photo by Anete Lusina on Pexels.com

อยากบอกมิตรสหายท่านนั้นไปว่า จะทำไปทำไม เล่นหุ้นก็เหมือนเล่นหวย ดูกราฟดูโน่นนี่นั่นมันก็ไม่ทำให้วิเคราะห์หุ้นได้ดีขึ้นมาหรอก หลับหูหลับตาแทงไปเถอะ…

แต่ด้วยความที่ข้าพเจ้าเป็นคนบอบบางและสุภาพมาก ก็เลยบอกว่าเอามา 5,000 เดี๋ยวเขียนโค้ดดึงข้อมูลให้…

เป็นคนมีมิตรจิตมิตรใจ พร้อมรับใช้ช่วยเหลือทุกคนหากมีค่าบริการ…

ดึงราคาหุ้นด้วย python

ความจริง การใช้ python ในการดึงข้อมูลจากเว็บบริการข้อมูลเช่น Yahoo finance หรือ google เป็นเรื่องธรรมดาสามัญและมีคนทำ Library ให้เรียกใช้ง่ายดายมาก โด้ดที่ใช้ก็อาศัย library ของ pandas-datareader

กรุณาแวะไปเยี่ยมชมเว็บไซต์ของผู้จัดทำและทำความเข้าใจวิธีใช้งานได้ที่ https://pandas-datareader.readthedocs.io/en/latest/index.html

และเข้าไปดู source code ได้ที่ https://github.com/pydata/pandas-datareader

ลองอ่านทำความเข้าใจดูก็ไม่ยากเท่าไหร่

เอ่อ ต้องบอกนิดนึง ข้าพเจ้าใช้ Anaconda เวอร์ชันสำหรับ Python 3 ในการทำตัวอย่างครั้งนี้

1 – สมมติว่าทุกท่านลง Anaconda เรียบร้อย ก็ install library ได้เลย

pip install pandas_datareader

ตรงนี้ไม่น่ามีปัญหาอะไร

2 – ต่อมาก็จะเขียนโค้ด โดยใช้ spyder

โค้ดสั้น ๆ เพียงแค่ 6 บรรทัด คือ

import pandas_datareader as web
import datetime
start = datetime.datetime(2017, 11, 1)
end = datetime.datetime(2018, 11, 30)
df = web.DataReader("AAV.BK", 'yahoo', start, end)
df.to_csv('stock_prices_volumes.csv')
ดึงราคาหุ้น spyder

คำอธิบายโค้ด

บรรทัดแรก เราดึง library pandas_datareader มาใช้

บรรทัดที่สอง ดึง datetime ซึ่งเป็น module มาใช้

บรรทัดที่สาม กำหนดค่าว่าต้องการเริ่มดึงข้อมุลจากวันใด (รูปแบบตาม module คือ ปี,เดือน,วัน

บรรทัดที่สี่ กำหนดค่าวันสิ้นสุดที่ต้องการดึงข้อมูล

บรรทัดที่ห้า ระบุตัวหุ้นและต้นทาง สำหรับรูปแบบและวิธีการใช้งาน ลองไปอ่านเว็บต้นทางที่ได้เอ่ยอ้างถึงข้างต้น ในนี้ข้าพเจ้าดึงข้อมูลหุ้น AAV จาก Yahoo finance (สำหรับข้อมูลจากอันอื่น ลองดูในเว็บที่อ้างอิงข้างต้น) โดยดึงข้อมูลจากวันที่ 1 พฤศจิกายน ค.ศ. 2017 จนถึง 30 พฤศจิกายน ค.ศ. 2018 โดยการระบุวันอยู่ในบรรทัดที่สามและสี่

บรรทัดที่หก จะบันทึกข้อมูลที่ดึงมาไว้ในรูปแบบ csv ในที่นี้ตั้งชื่อไฟล์ว่า stock_prices_vloumes.csv

หกบรรทัดเท่านั้นเอง ด้วยความช่วยเหลือจาก pandas-datareader ก็ถึงข้อมูลการซื้อขายหุ้นในอดีตมาใส่ในไฟล์ csv ได้แล้ว

ดึงราคาหุ้น

แค่นี้เอง ง่ายมั้ย?

…แล้วมิตรสหายท่านนั้นก็ยังไม่จ่ายเงินค่าโค้ดนี้เลย…เสียใจมาก

เริ่มต้นเรียนภาษา python ง่าย ๆ เริ่มจาก “Hello, World!”

ความคิดเห็นของคุณ :)

%d bloggers like this: