ก่อนหน้านี้ เราได้เรียนรู้เกี่ยวกับเหตุผลในการสร้างโปรแกรมเทรดอัตโนมัติโดยใช้ API ของบริษัทหลักทรัพย์เคไอ (한국투자증권) รวมถึงข้อดีต่างๆ ที่ได้รับจากการใช้ API นี้แล้ว
ในครั้งนี้ เราจะมาสรุปและแบ่งปันขั้นตอนการรวบรวมข้อมูลที่จำเป็นสำหรับการพัฒนา API ของบริษัทหลักทรัพย์เคไอ (한국투자증권) เนื่องจากมีผู้เชี่ยวชาญหลายท่านได้แบ่งปัน API ของบริษัทหลักทรัพย์เคไอ (한국투자증권) ไว้แล้ว จึงไม่ยากที่จะค้นหาข้อมูล แต่ถึงกระนั้น เราอยากจะแชร์มุมมองและประสบการณ์ที่ได้จากการรวบรวมข้อมูล เพื่อเป็นประโยชน์ต่อผู้อ่าน (แนะนำให้เริ่มต้นจากการดูที่ GitHub ก่อนเลยนะครับ!!)
เว็บไซต์อย่างเป็นทางการ
เว็บไซต์อย่างเป็นทางการของบริษัทหลักทรัพย์เคไอ (한국투자증권)
สามารถค้นหาข้อมูลเบื้องต้นได้จากเว็บไซต์อย่างเป็นทางการของบริษัทหลักทรัพย์เคไอ (한국투자증권) โดยสามารถดำเนินการต่างๆ ผ่านเว็บไซต์ เช่น การตั้งค่าบัญชีผู้ใช้ การตั้งค่าบัญชีซื้อขาย การสมัครใช้บริการจำลองการซื้อขาย และการสมัครใช้บริการซื้อขายต่างประเทศ นอกจากนี้ เว็บไซต์ยังมีลิงก์ไปยังเว็บไซต์สำหรับนักพัฒนาอย่างง่ายดาย
เมนูการพัฒนาในระบบของบริษัทหลักทรัพย์ Korea Investment & Securities อยู่ในเมนูการซื้อขาย
ศูนย์พัฒนา KIS Developer
เว็บไซต์ KIS Developer เป็นเว็บไซต์ที่จำเป็นต้องเข้าเยี่ยมชมอยู่เสมอระหว่างการพัฒนา API โดยสามารถตรวจสอบรายละเอียดของเอกสาร API ได้จากเว็บไซต์นี้
API สำหรับออก Access Token ซึ่งเป็นขั้นตอนพื้นฐานที่สุด
รายละเอียดของค่า Request และ Response ของ API ใช้ค่าเหล่านี้ในการเรียกใช้งาน API และประมวลผลข้อมูลที่ได้รับ
GitHub - koreainvestment/open-trading-api
นี่คือที่เก็บข้อมูล (Repository) ของ Open Trading API บน GitHub ไฟล์ README.md จะแนะนำขั้นตอนการทำงานอย่างละเอียด ดังนั้น ดังที่ได้กล่าวไว้ข้างต้น แนะนำให้เริ่มดูจาก GitHub ก่อนเลยครับ
GitHub Repository
WikiDocs
สุดท้ายนี้ คือ WikiDocs ที่สามารถใช้เป็นข้อมูลอ้างอิงในการพัฒนาด้วย Python เนื่องจากผู้เขียนคือพนักงานของบริษัทหลักทรัพย์เคไอ (한국투자증권) จึงมีความน่าเชื่อถือสูง สาเหตุที่ระบุว่า “ส่วนใหญ่” เนื่องจากไม่มีการอัปเดตเนื้อหาเพิ่มเติมในช่วงเวลาหนึ่ง และส่วนตัวแล้วพบปัญหาในการทำตามขั้นตอนเกี่ยวกับข้อมูลแบบเรียลไทม์ แต่หาทางแก้ไขไม่ได้
คู่มือการพัฒนาในรูปแบบ WikiDocs ทำได้อย่างครบถ้วน
ข้อมูลอ้างอิงเพิ่มเติม
หลังจากที่ได้ศึกษาข้อมูลอ้างอิงเหล่านี้แล้ว น่าจะสามารถเริ่มต้นการพัฒนาได้อย่างราบรื่น แต่เนื่องจากผมเองยังไม่มีความสามารถมากพอ จึงพบปัญหาและอุปสรรคหลายอย่าง ดังนั้น จึงได้ค้นหาข้อมูลเพิ่มเติมและได้รับความช่วยเหลือจากแหล่งต่างๆ ดังต่อไปนี้ เนื่องจากเป็นข้อมูลที่ผมได้รวบรวมเอง จึงเชื่อว่าผู้อ่านก็สามารถค้นหาได้ง่ายเช่นกัน
วิดีโอของ Jocoding (23:41)
จากวิดีโอนี้ ทำให้เข้าใจข้อดีของ API ของบริษัทหลักทรัพย์เคไอ (한국투자증권) จากมุมมองของผู้ใช้ และเนื่องจากวิดีโอได้อธิบายโค้ดที่ทำงานได้จริง จึงทำให้เข้าใจได้ง่ายขึ้น หากก่อนหน้านี้ได้ทำความเข้าใจคร่าวๆ เกี่ยวกับข้อมูลต่างๆ จากเว็บไซต์อย่างเป็นทางการแล้ว ขอแนะนำให้ดูวิดีโอของ Jocoding (23:41) ก่อนเลยครับ
Websockets
ก่อนหน้านี้ได้กล่าวถึงไปบ้างแล้วว่า พบปัญหาในการจัดการข้อมูลแบบเรียลไทม์ โดย WikiDocs ได้ใช้ websockets ใน Python แต่ไม่เข้าใจว่า websockets คืออะไร เมื่อเกิดปัญหาแบบนี้ ก็ต้องถามสิครับ +_+
ChatGPT ช่วยด้วย
ถ้าไม่มี ChatGPT คงแย่แน่เลย
ดูเหมือนจะเป็นวิธีการสำหรับการสื่อสาร และเมื่อเชื่อมต่อแล้ว จะสามารถรับข้อมูลได้อย่างต่อเนื่อง จากสิ่งที่ได้ศึกษา พบว่า REST API จะส่งคำขอหนึ่งครั้ง และได้รับการตอบกลับหนึ่งครั้ง แต่ Websocket จะส่งคำขอหนึ่งครั้ง และได้รับการตอบกลับอย่างต่อเนื่อง ในการเขียนโปรแกรมเทรดอัตโนมัติ จำเป็นต้องใช้ทั้งสองอย่างนี้ร่วมกัน และต้องทำงานได้อย่างราบรื่น
แต่พบปัญหาในตัวอย่างของ WikiDocs หลังจากส่งคำขอด้วย websocket แล้ว โปรแกรมก็เข้าสู่สถานะ while True: และหยุดทำงานอยู่ตรงนั้น แน่นอนว่าต้องมีวิธีแก้ไข แต่เนื่องจากผมยังเป็นมือใหม่ จึงไม่คุ้นเคยกับแนวคิดนี้ จึงไม่ทราบว่าจะแก้ไขอย่างไร ดังนั้น จึงได้ค้นหาใน GitHub ว่ามีโค้ดตัวอย่างที่เขียนด้วยวิธีอื่นหรือไม่
ที่เก็บข้อมูล (Repository) บน GitHub
- python-kis - Soju06/python-kis: 📈 ไลบรารี API การเทรดแบบ REST ของบริษัทหลักทรัพย์เคไอ (한국투자증권) ที่เขียนด้วย Python (github.com)
- pykis - pjueon/pykis: แพ็กเกจ Python สำหรับใช้งาน API การเทรดแบบใหม่ของบริษัทหลักทรัพย์เคไอ (한국투자증권) ได้อย่างง่ายดาย (github.com)
- mojito - sharebook-kr/mojito: Python wrapper สำหรับ KIS (github.com)
ต้องขอขอบคุณผู้เชี่ยวชาญทุกท่านที่ได้แบ่งปันโค้ด ได้ลองตรวจสอบ 3 ที่เก็บข้อมูล (Repository) แต่ที่เลือกใช้ในครั้งนี้คือ python-kis โดยนำโค้ดส่วนที่เกี่ยวข้องกับ websocket มาใช้ สรุปแล้ว ไม่ได้ใช้ไลบรารี websockets แต่ใช้ไลบรารี websocket และ websocket-client แทน ขอขอบคุณ Soju06 และทุกท่านที่ได้แบ่งปันโค้ดดีๆ บน GitHub ครับ
ตอนนี้สามารถเริ่มพัฒนาโดยใช้ข้อมูลเหล่านี้เป็นแนวทางได้แล้ว แม้ว่าจะพบปัญหาบ้างเล็กน้อย แต่จะสรุปและแบ่งปันในภายหลัง ในขั้นตอนต่อไป เราจะมาวิเคราะห์ “โครงสร้างของระบบเทรดอัตโนมัติ” ซึ่งเป็นส่วนที่ค่อนข้างสำคัญ เพื่อที่จะได้ลดปัญหาและสามารถนำส่วนที่พัฒนาแล้วมาใช้ซ้ำได้ง่ายขึ้นในอนาคต
ความคิดเห็น0