อยากหาข้อมูลราคาตลาด Derivatives ย้อนหลัง…ทำไงดี…

Pitsanu Mukdaprakorn
3 min readMay 27, 2020

--

สวัสดีครับ…ตอนนี้วิกฤตโรคระบาดก็ดูจะผ่อนคลายลงไปเยอะแล้ว ผู้คนเริ่มออกมาใช้ชีวิตกันอีกครั้ง ตลอดหลายเดือนที่ผ่านมา หลายๆคนน่าจะได้ดื่มด่ำกับการ WFH จนแทบจะอาเจียนกันออกมาเลยทีเดียว ยังไงแล้วเราก็ยังคงต้องช่วยทำแบบที่คุณหมอทวีศิลป์ว่าไว้นะครับ “การ์ดอย่าตก” ไม่งั้นคงได้กลับไป WFH จนเป็นโรคซึ้มเศร้าแทน…

จากบทความก่อนหน้าเราได้ทดลองใช้ตัว API ของ SETTRADE กันไปเรียบร้อยแล้ว เราสามารถสั่งซื้อขายได้โดยเขียน Python เพียงไม่กี่บรรทัด แต่ปัญหาต่อไปคือ การทำระบบเทรดมันจำเป็นที่จะต้องใช้ข้อมูลราคาโดยหลีกเลี่ยงไม่ได้ ไม่งั้นเราก็จะทำได้แค่เขียนโปรแกรมแล้วสร้างปุ่มเล็กๆ มากดเปิดปิด Order แทนการเข้าสู่โปรแกรม Streaming…ฟังดูหดหู่จริงๆ

อันดับแรกก่อนนะครับ …ข้อมูลย้อนหลัง…

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

  • efin Smart Data plugin
    ตัวนี้จะเป็นหนึ่งแหล่งข้อมูลที่หลายๆ คนแนะนำมาเนื่องจากมีข้อมูลย้อยหลังแบบรายวันตั้งแต่เปิดตลาดจนปัจจุบัน ทำให้เราได้ข้อมูลมากพอที่จะไปทำระบบเทรด รวมถึงยังเชื่อมต่อไปยัง MetaStock และ Amibroker ได้อีกด้วย แน่นอนครับมันมีราคาค่าใช้งานแน่นอน ลองไปศึกษากันดูครับ ผมคงไม่รีวิวเพราะว่าไม่ได้ค่าโฆษณา….ฮ่าาาาา (จริงๆ ใช้ไม่ค่อยเป็น)
  • เว็บ Tfex
    ทางเว็บจะมีราคาให้ดูย้อนหลังได้จำนวนสูงสุด 2 ปี ซึ่งเป็นรายวัน ขออย่างเดียวคืออดทนครับ ใช้เวลาซักนิด เพราะมันสามารถโหลดออกมาเป็น Excel ได้ แต่ปัญหาใหญ่คือได้แค่ทีล่ะ Series ครับ ปีนึงก็จะมี 4 Series ที่นิยมๆ เทรดกันก็ไม่เยอะครับสำหรับสองปีค่อยๆ ทำไป ของฟรีนะครับอาจจะไม่สบายมือ แต่สบายกระเป๋าเงินแน่นอน
  • MetaTrader
    บอกตรงๆ ว่าผมชอบวิธีนี้ที่สุดเพราะมันง่ายมากครับ อาจจะใช้เงินซักนิด แต่มันไม่ได้เสียไปเปล่าๆ ถ้าใครเคยเขียน EA ในโปรแกรม MT4 คงรู้อยู่แล้วว่าเราสามารถเขียนบอทเทรดได้เลย โดยการสร้างเงื่อนไขในแบบของเราเอง เพื่อสั่งซื้อขายอัตโนมัติได้ในโปรแกรมเลย แต่…ถ้ามันสามารถเขียนโปรแกรมลงไปได้ ผมจะไปเชื่อมต่อ API ทำไมให้วุ่นวายใช่มั้ย ไปหัดเขียน MQL เลยจะได้จบๆ ไป

ใช่ครับ…ถ้าระบบเทรดคุณไม่ได้ซับซ้อนจน MQL รับไม่ได้

ความน่าหงุดหงิดของการเขียนโปรแกรมเทรดอัตโนมัติใน MT4 คือการต้องนำโค้ดของเราไป Stamp กับโบรกเกอร์ซึ่งมันจะกินเวลาซักระยะนึง เหมือนเป็นการบอกว่าโปรแกรมนี้ได้ผ่านการตรวจสอบเรียบร้อยแล้วสามารถนำไปใช้งานได้ ดังนั้นทุกๆ กระบวนการจะต้องผ่านการ Stamp ไม่ว่าคุณจะแก้บักแค่ 1 ตัวอักษร มันจะใช้ไม่ได้ทันที ต้องนำไป Stamp ใหม่เสมอ ในช่วงแรกๆ ที่ผมพัฒนาก็ผ่านขั้นตอนนี้ไปหลายครั้งอยู่ จนท้ายที่สุด MT4 ก็รับมือกับความซับซ้อนของผมไม่ได้จนต้องไปใช้ Python ในการทำระบบแทน แต่ผมก็เขียน EA โง่ๆ หนึ่งตัวที่สามารถทำได้แค่ เปิด/ปิด/แก้ไข สถานะเท่านั้น ส่วนการคำนวณผมก็ทำผ่าน Python และสร้าง Pipeline เฉพาะออกมาเพื่อส่งคำสั่งไปยัง MT4 แล้วผมก็ไม่เคยเอาโค้ดไป Stamp อีกเลย โดยที่ผมจะเปลี่ยนระบบเทรดไปมากมายแค่ไหนก็ตาม และนี่คือคำตอบที่ว่าทำไมผมถึงชอบวิธีนี้…

แต่การจะใช้งานมันเราต้องไปเปิดบัญชีที่เป็น MT4 ก่อนนะครับ แนะนำที่ CAF เช่นเดิมครับ (ขอค่าโฆษณาหน่อยสิครับ เอ่ยชื่อหลายทีแล้ว..555) ถ้าเปิดแล้วนอกจากจะได้ลองเขียน MT4 แล้ว ยังสามารถเปิดอีกบัญชีแบบ Streaming เพื่อใช้ร่วมกับ API ก็ได้ครับ

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

ในโปรแกรม MT4 จะมีเครื่องมือที่เรียกว่า History Center ที่จะมีข้อมูลย้อนหลังอยู่พอสมควรเลยครับ โดยแบ่งตามหมวดออกไป

ในตอนนี้เราจะสนใจแค่ SET50 Index Future ล่ะกันนะครับ และจะเรียกมันสั้นๆ ว่า S50IF ส่วนตัวอื่นๆ ไปเล่นกันเอง เมื่อผมกดไปที่ ContinueSeries > S50IF_CON (CON ย่อมาจาก Continue หรือเป็นการเอาราคาแต่ล่ะ Series มาเรียงกันเป็นข้อมูลเดียว) กดไปแล้วผมก็จะพบข้อมูลย้อนหลังของ S50IF และสามารถกด Download ได้ทันทีโปรแกรมก็จะทำการโหลดข้อมูลเข้าสู่ระบบจำนวนหนึ่ง มันก็จะแสดงหน้าต่างมาว่า ไม่มีข้อมูลใหม่แล้ว ถ้าดูตามตัวเลขข้อมูลคือ 2048 แท่ง!!!

มันย้อนไปได้ถึงปี 2012 กันเลยนะครับ และสามารถกด Export ออกมาเป็น CSV เอาไปยำกันต่อตามสบายเลย อย่างเดียวที่ไม่ตรงคือ Volume เนื่องจากไม่ใช่ Real Volume และความเจ๋งอีกอย่างนึงคือ มีให้เราทุก Timeframe ถ้าลองไปกดดู H1 กันก็จะพบว่าเราจะได้ข้อมูลมา 2048 แท่งเช่นเดียวกัน ซึ่งน่าจะเป็นข้อจำกัดของระบบ

ซึ่งจำนวน 2048 แท่งของ H1 จะได้ถึงราวๆ กลางปีก่อนเท่านั้นครับ

แต่ผมก็พบอะไรบางอย่าง…

ถ้าผมเปิดหน้าต่างกราฟแล้วกลิ้งเมาส์กลับไปยังจุดที่มากกว่า 2048 แท่งข้อมูลมันจะโผล่มาเพิ่มครับ เท่านั้นแหละครับ ผมเปิดกราฟ ปิด Auto Scroll แล้วเอาอิฐวางทับปุ่ม PageUp บนแป้นทันที (เอาจริงๆ มันก็ไม่นานขนาดนั้นครับ กดไม่ถึงสิบวิก็สุดล่ะ)

สวัสดีครับ ข้อมูล 10637 แถว…

รอบหน้าพบกับการลองหาช่องทางดึงราคาปัจจุบัน กดตบมือกดติดตามไว้เลยครับ จะได้ไม่พลาดสาระดีๆ กันครับ

ขอกำไรจงอยู่คู่กับท่าน ราตรีสวัสดิ์ครับ…..

--

--