ดึงข้อมูล Intraday stock data ฟรี ง่ายๆ ด้วย Python (Alpha Vantage API)

โดยปกติ AlgoAddict จะทำงานกับข้อมูลรายวัน (Daily) เป็นหลัก แต่บทความนี้ขอเอาใจผู้อ่านที่สนใจข้อมูลระหว่างวัน (Intraday) กันหน่อยค่ะ ด้วยกันแนะนำ Website ที่มีการให้บริการข้อมูล Intraday แบบไม่เสียเงิน!

Website ที่ว่านี้ก็คือ “www.alphavantage.co” นั่นเองค่ะ ก่อนอื่น ลองเข้าไปดูหน้าตาเว็บกันก่อนเลยค่ะ

Alpha Vantage ทำอะไร?

Alpha Vantage เป็นกลุ่มของนักวิจัย วิศวกร และ นักลงทุน ที่รวมตัวกันเพื่อทำวิจัยด้านเทคโนโลยี และ ให้บริการ Free API (application program interface) สำหรับข้อมูล Stock, Forex และ Digital/Crypto currencies

Alpha Vantage ไม่ได้พัฒนาด้วย Python!

ถึงแม้ Alpha Vantage จะให้บริการข้อมูลฟรี ที่เราต้องการ แต่ …. ถ้าเราตามไปอ่าน “Alpha Vantage API Documentation” ก็อาจจะแอบเสียใจที่มันไม่ใช่ภาษา Python ที่เรารู้จัก อีกทั้งข้อมูลที่จัดเก็บก็ยังเป็นรูปแบบของ JOSON object ที่หลายๆ คนอาจจะไม่คุ้นเคย แล้วจะทำยังไงดีล่ะ??

Python wrapper 🙂

ไม่ต้องห่วงค่ะ ถึงแม้ API ไม่ได้พัฒนาบน Python แต่ก็ไม่ได้หมายความว่าเราจะใช้งานมันไม่ได้ เพราะว่า Python Wrapper สำหรับ Alpha Vantage API ได้ถูกพัฒนาขึ้นเรียบร้อยแล้ว ทำให้เราสามารถ Install และ เรียกใช้งาน API ตัวนี้ได้อย่างง่ายดายในภาษา Python ค่ะ เดี๋ยวเรามาดูกันค่ะ ว่าการจะใช้งานเจ้า API ตัวนี้ในการ ดึงข้อมูล Intraday มีขั้นตอนอย่างไรบ้าง

1. Install Library “alpha_vantage”

1.1 Install library ด้วย คำสั่ง pip

ก่อนอื่น เราต้องทำการ Install ตัว Library ที่จะมาช่วยเราทำงานกันก่อนค่ะ คำสั่งที่ใช้ก็คือ

pip install alpha_vantage

การ Install Library ก็จะทำได้ใน Command line หรือ terminal ดังนี้

2. ทดสอบการทำงานโดยการเรียกใช้ Library

เมื่อ Install เรียบร้อยแล้ว ให้เราทำการทดสอบดู โดยการเรียกใช้ Library นี้ ใน Python ค่ะ ในที่นี้ ขอแสดงตัวอย่างด้วย Jupyter notebook นะคะ แต่ใครจะใช้ Editor python ตัวอื่นๆ ก็ตามสะดวกได้เลยค่ะ

จากรูป ด้านบน เมื่อเราเรียกใช้ Library และ ทำการรัน ( shift + enter) ถ้าไม่มี Error แสดงขึ้นมา ก็นับว่า เราได้ลง Library เสร็จเรียบร้อยแล้วค่ะ

2. Import libray “Pandas”

ในที่นี้คาดว่า ทุกๆ ท่าน คงจะได้มีการ install library สำคัญอย่างเจ้า Pandas กันไปเรียบร้อยแล้วนะคะ ถ้าใครยังไม่ได้ Install ก็ต้องไปทำให้เรียบร้อยก่อนนะคะ เพราะ Pandas เป็น อีก 1 Library ที่เราจะต้องใช้งานในการจัดการข้อมูลที่เราจะโหลดมาค่ะ

ดังนั้น ขอเรียกใช้งาน Library Pandas เพิ่มเติมค่ะ

3. จะดึงข้อมูลได้ ต้องมี API Key

ก่อนที่เราจะทำการดึงข้อมูลจาก Alpha Vantage เราต้องทำการขอ “Key” หรือ รหัสสำหรับดึงข้อมูลมาก่อนค่ะ ในที่นี้ให้กลับไปที่เว็บไซต์ “www.alphavantage.co” เลือกเมนู “GET YOUR FREE API KEY TODAY”

ในที่นี้เราต้องการ Free API ให้เรากรอกข้อมูลเป็น Student ไปค่ะ

เมื่อกรอกข้อมูลเรียบร้อยแล้ว กดป่ม “GET FREE API KEY” จะได้ Key ออกมาหน้า ดังนี้

คีย์ที่ได้ ก็จะอยู่ในส่วนของ ตัวอักษรที่ อยู่ในกรอบสีฟ้าด้านบน ซึ่งของแต่ละคนก็จะต่างกันค่ะ ให้เซฟคีย์เก็บไว้ให้ดี เพราะว่า คีย์นี้จะเป็นตัวสำคัญที่จะใช้ในการเชื่อม API ไปยัง Alpha Vantage เพื่อดึงข้อมูลนั้นเองค่ะ

4. สร้าง object “ts”

เมื่อได้ API key มาแล้ว ต่อมาเราจะมาทำการเขียนโปรแกรมกันต่อค่ะ ก่อนอื่น สร้าง object ของคลาส TimeSeries ขึ้นมาก่อน แล้วตั้งชื่อว่า ts ในที่นี้ เราจะต้องใช้ key ที่ได้มา เพื่อทำการเซ็ตค่าของ object ts ด้วย ดังนี้

ในส่วนของคำสั่ง key = ‘ xxxxxxx ‘ ให้นำ key ของแต่ละคนที่ได้มา ใส่ลงไปภายในเครื่องหมาย ‘ ‘ (signle quote) ค่ะ เมื่อเขียนคำสั่งใน บรรทัดที่ 4 จบแล้วกดรัน ถ้าไม่มี error เกิดขึ้น ก็แสดงว่า การสร้าง object timeseries นั้นเสร็จสมบูรณ์ ถ้าต้องการเรียกดูก็ทำได้โดยใส่ชื่อ Timeseries นั้นๆ ดังบรรทัดที่ 5 แล้วกัดรัน จะเห็นว่าผลลัพธ์ที่ได้ คือ ts มีชนิดเป็น alpha_vantage timeseries

5. อ่านข้อมูล Intraday

ขั้นตอนต่อมา ก็คือ การอ่านข้อมูลนั่นเองค่ะ โดยใช้คำสั่ง “get_intraday” ดังนี้

ในที่นี้จะขอดึงข้อมูล MSFT หรือข้อมูลราคาของ Microsoft Corporation จากตลาด NASDAQ มาให้ดูเป็นตัวอย่างนะคะ โดยให้ interval = ‘1min’ ซึ่งก็คือข้อมูลที่ช่วงข้อมูล 1 นาทีนั่นเองค่ะ จากคำสั่งนี้ ถ้ากดรัน แล้วไม่เกิด Error อะไร ก็ถือว่า การอ่านข้อมูลเรียบร้อยดีค่ะ

(*** หมายเหตุ เนื่องจาก API นี้ เป็นแบบไม่เสียค่าใช้จ่าย อาจจะขาดความสเถียรไปบ้าง ถ้ากดรันแล้วเกิด Error ให้ทดลอง reset kernal ของ python แล้วกดรันใหม่ดูค่ะ ***)

6. เรียกดูข้อมูลที่อ่านมาได้

ข้อมูลที่อ่านมาได้จากคำสั่ง get_intraday จะถูกส่งมาเป็นลักษณะของ List ที่ประกอบได้ด้วยสองค่า คือ ข้อมูล (เก็บเป็น DataFrame) และ คำอธิบายข้อมูล (เก็บข้อมูลเป็น Data Dictionary) ซึ่งในที่นี้ เราได้เขียน ให้จัดเก็บอยู่ในตัวแปร data และ meta_data ตามลำดับ มาลองเรียกดูข้อมูลกันดีกว่าค่ะ

*** หมายเหตุ ข้อมูล แบบ list เป็นรูปแบบข้อมูลที่สามารถเก็บข้อมูลในรูปแบบที่แตกต่างกัน ไว้ในตัวแปรเดียวกันได้ ซึ่งในที่นี้ list คำตอบที่ส่งมาจาก alpha vantage จะเป็น list ที่เก็บข้อมูลประเภท DataFrame ซึ่งก็คือ Data หรือ ราคา กับ อีกส่วนคือข้อมูลประเภท DataDictionary ที่เก็บข้อมูล Meta_data หรือ คำอธิบายข้อมูล เอาไว้ นั่นเอง ***

ถ้าผู้อ่านท่านใด ยังไม่คุ้นเคยกับรูปแบบตัวแปรประเภทต่างๆ ใน Python ก็สามารถเรียนได้จากคอร์ส “Basic Python Programming ฉบับปูพื้นฐานเร่งด่วน” ได้โดย ไม่เสียค่าใช้จ่าย ที่เว็บด้านล่างค่ะ

https://algoaddict.com/p/basic-python-programming/

การเรียกดูข้อมูลทำให้ง่าย โดยการพิมพ์ชื่อตัวแปร แล้วรันได้เลยค่ะ

เรียกดูข้อมูลราคา หรือ Data

มาเรียกดูข้อมูลในส่วนของ ราคา กันก่อนค่ะ ซึ่งเก็บอยู่ในตัว ในที่นี้ ราคา ถูกจัดเก็บอยู่ในตัวแปรชื่อ data ซึ่งเป็นตัวแปรชนิด DataFrame เราจะขอเรียกดูเฉพาะส่วนของ 5 แถวแรก โดยใช้คำสั่ง data.head() ค่ะ

จะเห็นว่าข้อมูล เก็บทุก 1 นาที ตามที่เราต้องการ และ ประกอบด้วยข้อมูล Open, High, Low, Close, volume ตามปกติ

เรียกดูข้อมูลคำอธิบาย หรือ Meta_data

ข้อมูล meta_data เป็นตัวแปรที่เก็บคำอธิบายข้อมูลชุดนั้นๆ เอาไว้ โดยการเก็บจะเป็นรูปแบบของ Data Dictionary (โครงสร้างข้อมูลที่มีการเก็บ index และ value เป็นคู่ๆ กันไป) สามารถเรียกดูได้ โดยพิมพ์ชื่อตัวแปร แล้วกดรันได้เลยค่ะ

จะเห็นว่าข้อมูลทีเก็บก็จะเป็น รายละเอียดต่างๆ ของหุ้นตัวนั้น นั่นเองค่ะ

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

เช่น ถ้าอยากจะลอง plot ข้อมูลราคา Close ดู ก็สามารถทำได้ดังนี้ค่ะ

(*** หมายเหตุ เนื่องจาก API นี้ เป็นแบบไม่เสียค่าใช้จ่าย อาจจะขาดความสเถียรไปบ้าง ซึ่งผู้เขียนไม่สามารถแก้ไขให้ได้ อย่างไรก็ตาม ถ้ากดรันแล้วเกิด Error ให้ทดลอง reset kernal ของ python แล้วกดรันใหม่ดูค่ะ ***)

รวมโค้ดทั้งหมด

หวังว่าบทความนี้จะเป็นประโยชน์ให้ผู้ที่สนใจ ไม่มากก็น้อยค่ะ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s