10 Step ดึงข้อมูลเทรดอนุพันธ์ ผ่าน Microsoft Excel
ในปัจจุบันนี้ Robot เป็นสิ่งใกล้ตัวเรา ซึ่งเราเริ่มนำใช้งานทดแทนคน เช่น เครื่องดูดพื้น เครื่องออกตั๋ว ทุกคนเริ่มอยู่กับมันมานานแล้ว ในรอบๆตัวเริ่มมีคนนำมาใช้งานมากขึ้น
ในโลกการลงทุนตลาดหลักทรัพย์ และตลาดอนุพันธ์ มีวิวัฒนาการเริ่มจากรูปแบบเคาะกระดาน ถัดมาผ่านโทรศัพท์ผ่านทาง IC และเริ่มนำ computer และ internet ลูกค้าก็คุ้นชิน ซึ่งสามารถเพิ่มความสะดวกสบายและความรวดเร็ว และทำให้ไม่พลาดทุกการลงทุน ทำให้สามารถเทรดได้ทุกที่ทุกเวลา
แต่การเคาะซื้อเคาะขายผ่าน Application หรือโปรแกรมต่างๆ ก็เริ่มมีปริมาณเทรดมากขึ้นทำให้ทุกนาทีคือโอกาส จึงมีการเริ่มให้บริการคำสั่งซื้อขายแบบมีเงื่อนไข (Conditional Order) ซึ่งฟังก์ชั่นจะทำงานตามเงื่อนไขที่ตั้งไว้จึงจะมีการส่งคำสั่งซื้อขายออกไปที่ตลาด ซึ่งเริ่มเป็นรูปแบบ Algo Trading แบบง่ายๆ เริ่มมีบทบาทในการส่งคำสั่งซื้อขายมากขึ้น ซึ่งประโยชน์การส่งคำสั่งประเภทนี้จะช่วย
- ไม่ตามภาวะอารมณ์ของผู้ลงทุน
- ใช้เวลาน้อยไม่ต้องเฝ้าหน้าจอ
- การตัดสินใจและส่งคำสั่งโดยข้อมูลตัดสินใจที่ชัดเจน เช่น หากราคา Last ถึงราคาที่กำหนดไว้ระบบจะส่งคำสั่งซื้อขายออกไป
- ความเร็วในการส่งคำสั่ง
ประโยชน์ก็มีแต่ก็มีจุดอ่อนด้วยเหมือนกัน
- ความเสถียรภาพของระบบคอมพิวเตอร์หรืออินเตอร์เน็ตหากมีปัญหาอาจทำให้การส่งคำสั่งสะดุดได้
- โปรแกรมทำงานตามเงื่อนไขที่กำหนด หากเกิดสถานการณ์เหตุการณ์ที่ส่งผลต่อราคา หุ้นขึ้นหรือลงอย่างรุนแรง หรือเกิดสถานการณ์ที่ไม่เป็นไปตามเงื่อนไขที่ได้ตั้งเอาไว้ อาจเกิดปัญหาการส่งคำสั่งซื้อขาย
ซึ่งทุกวันนี้ผู้ลงทุนที่มีกลยุทธ์ของตัวเอง แต่อยากนำกลยุทธ์ มาทำเป็น Robot ยังทำได้ยากต้องอาศัยเรื่องความเชี่ยวชาญ และขั้นตอนต่าง ๆ ในการขออนุญาตการใช้งานที่มีความซับซ้อน
ทางเซ็ทเทรดจึงได้พัฒนา Settrade Open API ที่จะช่วยต่อยอดความฝันของผู้ลงทุนที่มีกลยุทธ์ของตัวเองมาพัฒนาและส่งคำสั่งได้รวดเร็วและง่าย โดยใช้เงินทุนและค่าคอมที่น้อยกว่า เหมาะกับผู้ลงทุนรายย่อยที่ต้องการทำ Robot Trade - Algo Trading
มาดูข้อดีของระบบ Settrade Open API กันว่าทำไมต้องมาเริ่มใช้งาน
- ไม่ต้องส่ง logic รายละเอียดกลยุทธ์ของท่านให้โบรกเกอร์ ไร้กังวลเรื่อง Front Run บอก Logic และกลยุทธ์เบื้องต้นก็เพียงพอ เพราะเนื่องจากระบบเซ็ทเทรดข้อดีคือมีระบบป้องกันที่เรียกว่า Pre Trade Risk ป้องกันไม่ให้เกิด False Market ซึ่งมีการควบคุมเรื่องการจับคู่กันเอง พยายามล่อลวงคนอื่น หรือเขียนผิดจนส่งซ้ำเข้าไป
- ติดตามคำสั่งหรือพอร์ตของการทำ Robot ได้ผ่าน Streaming หรือว่าหากท่านมีตั้ง Order Alert ไว้เมื่อคำสั่งของท่านถูกจับคู่ ระบบจะมี Alert แจ้งผ่านมือถือของท่านได้เลย
- ประหยัด เข้าถึงง่ายต่อการเริ่มต้น เขียน Robot ส่งคำสั่งผ่าน Excel ได้ ติดตั้งโปรแกรมเพิ่มเติมนิดหน่อย ก็สามารถส่งคำสั่งซื้อขายได้แล้ว
- สำหรับคนที่มีความเชี่ยวชาญเขียนโปรแกรมได้ สามารถนำภาษา Python มาสร้างกลยุทธ์ของตัวเองได้เลย โดยใช้ข้อมูลสถิติ หรือใช้ Library ของ python ที่มี Technic indicator หรือเทรด on chart ใช้งาน amibroker ซึ่งใช้งานได้ฟรี
- มีตลาดจำลอง (Sandbox) ให้ท่าน ทดลองเขียนและเชื่อมต่อง่าย ๆ ได้สมัครใช้งานผ่าน https://developer.settrade.com เป็นโบรกเกอร์ Sandbox และตลาดจำลองให้ทดลองใช้งานเชื่อมต่อ ลองฝีมือ
- ลองและนำมาใช้งานจริงได้เลย สามารถนำโปรแกรมที่ลองในตลาดจำลองมาเปิดบริการกับโบรกเกอร์ชั้นนำที่มีให้บริการ Settrade Open API ได้เลย
- กรณีฉุกเฉินต้องการยกเลิกคำสั่งได้ผ่าน Streaming ได้เลย เมื่อต้องการเปลี่ยนใจ หรือต้องการยกเลิกคำสั่ง กรณีต่างๆ สามารถยกเลิกคำสั่งซื้อขายผ่าน Streaming ได้ทันที
ในวันนี้จึงอยากมานำเสนอวิธีการสร้าง Robot Trade ดึงข้อมูล Real-Time ติดตาม Portfolio ได้ง่ายๆ ภายใน 30 นาที ผ่าน Microsoft Excel และไม่ว่าจะเป็นระบบปฎิบัติการ OS หรือ Windows ก็ใช้งานได้ โดยจะเทียบข้อมูลบน Streaming เพื่อให้เข้าใจง่ายขึ้น ผู้ลงทุนที่ไม่มีความรู้ด้านการเขียนโปรแกรมก็สามารถทำได้ค่ะ
10 Step ดึงข้อมูลเทรดอนุพันธ์ ผ่าน Microsoft Excel
-
เริ่มต้นติดตั้งโปรแกรมเพื่อช่วยในการเชื่อมต่อระบบเซ็ทเทรด (SDK) ที่เครื่องคอมพิวเตอร์ของท่านก่อน :
- เปิดโปรแกรม Microsoft Excel
- ตรวจสอบเวอร์ชั่นของ Microsoft Excel ว่าเป็น 32/64 Bits โดยไป File เลือก Account และ About Excel
- คลิกที่นี่ เพื่อดาวน์โหลดโปรแกรมเสริมสำหรับเชื่อมต่อระบบเซ็ทเทรด หาหัวข้อ VBA เลือก เวอร์ชั่น Excel ของท่าน จากเครื่องผู้เขียนคือ 32 Bit จึงเลือก Download Version ล่าสุดคือ 0.4.0 และเลือก Excel 32 Bits กดดาวน์์โหลดและติดตั้งโปรแกรม
- สำคัญเลย ต้องทำการ Restart เครื่องคอมพิวเตอร์ของท่านก่อนทำขั้นตอนถัดไป
- สำหรับผู้ลงทุนที่ยังไม่มีบัญชีซื้อขาย สามารถทดลองเชื่อมต่อข้อมูล กับโบรกเกอร์จำลอง (sandbox) ได้เลย คลิกที่นี่ กดสมัครเข้าใช้งาน จากปุ่มที่อยู่ขวาสุดด้านบนของเว็บไซต์
- กรอกข้อมูล Email, Username, Password และเลือกว่า ให้แสดงเครื่องหมายถูก “ฉันไม่ใช่โปรแกรมอัตโนมัติ” กดปุ่ม ลงทะเบียน
- หลังจากนั้นให้กดปุ่ม “สร้าง Application Id” ระบบจะแสดง 2 ส่วน
- - App Secret, App ID, Broker ID, App Code จากเว็บไซต์
- - ส่วนข้อมูลบัญชี
- Broker ID ชื่อโบรกเกอร์จำลอง ในที่นี้คือ “SANDBOX”
- App Code ชื่อ Service ใช้สำหรับการเชื่อมต่อในที่นี้คือ “SANDBOX”
- Equity account คือบัญชีจำลองระบบหุ้น โดยจะเอาชื่อ Username มาต่อด้วย –E เสมอ เช่น jpensiri-E โดยที่ username คือ jpensiri
- Derivatives account คือบัญชีจำลองระบบอนุพันธ์ โดยจะเอาชื่อ Username มาต่อด้วย –D เสมอ เช่น jpensiri-D โดยที่ username คือ jpensiri
- PIN : 000000 (เสมอ)
- ทำการ Login : เมื่อติดตั้งเรียบร้อยแล้ว เปิด Microsoft Excel จะสังเกตุเห็น Tab Settrade และนำค่าต่างๆ ไปกำหนดที่ Tab Settrade ตามรูป และกด Login เช่น กรอกช่อง App ID โดยระบุข้อมูล Application ID (จากข้อ 4) ,กรอกช่อง App Secret โดยระบุค่า Application Secret (จากข้อ 4)
หากกรอกข้อมูลถูกต้อง ระบบจะแสดง popup ว่า Login successful
- เริ่มเชื่อมต่อกับระบบเซ็ทเทรด ได้ง่าย ๆ เลยค่ะ
- 6.1. เปิด Excel ไปที่ Tab “Developer” แล้วเลือก Visual Basic
สำหรับใครที่หา Tab “Developer” ไม่เจอให้คลิกขวาบริเวณพื้นที่ Tool bar เลือก Customize the Ribon และติ๊กถูก Tab “Developer”
- 6.2. เลือก Tools - References เพื่อทำการเชื่อมต่อกับโปรแกรมเชื่อมต่อกับระบบเซ็ทเทรด (SDK)
- 6.3. ทำเครื่องหมายถูกที่ SettradeOpenAPI กับ SettradeRTDServer
- 6.4. ผู้ลงทุน คลิกดาวน์โหลด Template ตัวอย่าง ไปเปิดและลองแก้ไขดูได้เลยค่ะ มีทั้งดูข้อมูล Series และวงเงินพอร์ต และส่งคำสั่งซื้อขายค่ะ ก่อนการใช้งานทุกครั้งต้องกด login เพื่อให้ระบบแสดงข้อความ login success เสมอ (สงสัยกลับขึ้นไปดูวิธีการข้อ 5)
- เริ่มแสดงข้อมูล Real-time กันก่อนเลย ใน Tab “Realtime” (เปิด Template ตัวอย่าง)
ตอนนี้สมมติว่าอยากดูข้อมูล Real-time ของ GFG22 จะใช้คำสั่ง RTD โดยเทียบข้อมูลกับ Streaming เพื่อให้เห็นภาพชัดเจนขึ้น
- วิธีกดใช้งานเพื่อตรวจสอบข้อมูลในตลาดจำลองกดดู หน้าเว็บไซต์เดิม แล้วหารูปโปรแกรม Streaming บริเวณ Tab Menu ด้านบน
- หมวด Price Info : last, high, low, total_volume, projected_open_price ให้ทำตามขั้นตอนดังนี้
ส่วนการแสดงชื่อหัวข้อ
- ตำแหน่ง B3 ให้พิมพ์ข้อความ Symbol
- ตำแหน่ง C3 ให้พิมพ์ข้อความ Last
- ตำแหน่ง D3 ให้พิมพ์ข้อความ High
- ตำแหน่ง E3 ให้พิมพ์ข้อความ Low
- ตำแหน่ง F3 ให้พิมพ์ข้อความ total_Volume
- ตำแหน่ง B4 ให้พิมพ์ข้อความ GFG22
ส่วนการแสดงข้อมูลจาก Streaming
- ตำแหน่ง C4 ให้พิมพ์ข้อความ =RTD("settrade",,"priceinfo","GFG22","last")ตำแหน่ง D4 ให้พิมพ์ข้อความ =RTD("settrade",,"priceinfo","GFG22","high")
- ตำแหน่ง E4 ให้พิมพ์ข้อความ =RTD("settrade",,"priceinfo","GFG22","low")ตำแหน่ง F4 ให้พิมพ์ข้อความ =RTD("settrade",,"priceinfo","GFG22"," total_volume ")
หมายเหตุ: ตำแหน่งต่างๆ ใน Microsoft Excel เช่น B3 หมายถึง คอลัมน์ B แถวที่ 3
- หมวด Bidoffer : แสดงได้ Bids/Offers โดยใช้ฟังก์ชั่น RTD ตามตัวอย่างให้ทำตามขั้นตอนดังนี้
ส่วนการแสดงชื่อหัวข้อ
- ตำแหน่ง C6 ให้พิมพ์ข้อความ Volume
- ตำแหน่ง D7 ให้พิมพ์ข้อความ Bid
- ตำแหน่ง E8 ให้พิมพ์ข้อความ Offer
- ตำแหน่ง F8 ให้พิมพ์ข้อความ Volume
- ตำแหน่ง B4 ให้พิมพ์ข้อความ GFG22
ส่วนการแสดงข้อมูลจาก Streaming
- ตำแหน่ง C7 ให้พิมพ์ข้อความ ==RTD("settrade",,"bidoffer","GFG22","bid_volume1")
- ตำแหน่ง D7 ให้พิมพ์ข้อความ =RTD("settrade",,"bidoffer","GFG22","bid_price1")
- ตำแหน่ง E7 ให้พิมพ์ข้อความ =RTD("settrade",,"bidoffer","GFG22","ask_price1")
- ตำแหน่ง F7 ให้พิมพ์ข้อความ =RTD("settrade",,"bidoffer","GFG22","ask_volume1")
หากต้องการหลาย ๆ ระดับราคาให้แก้ไขตัวเลขด้านหล้งสามารถแสดง 5 ระดับราคา
หมายเหตุ: ตำแหน่งต่างๆ ใน Microsoft Excel เช่น B3 หมายถึง คอลัมน์ B แถวที่ 3
- วิธีการเรียกดูข้อมูลพอร์ต/วงเงินจะต้องเริ่มเขียนโปรแกรมแล้วนะคะ แต่ไม่ยากค่ะ
- 8.1 แสดงวงเงินของพอร์ต
- เลือก Sheet ที่เราต้องการให้แสดงข้อมูล ตัวอย่างจะใช้ Tab ใหม่ชื่อ Portfolio ซึ่งเป็น sheet ที่ 2 ของไฟล์นี้ดูจาก Excel ประกอบได้เลย
- แล้วกดมาที่ Microsoft Visual Basic มาที่ Sheet 2 แล้ว Double Click และ Copy code ที่ให้ไว้แปะเลยค่ะ อย่าลืมแก้ Accountno ในที่นี้คือ jpensiri-D ที่เราได้จากเว็บ Developer.settrade.com เลยค่ะ (จากข้อ 4) แล้วกด Save ค่ะ
Set accountReq = deriv.GetAccountInfo()
If accountReq.success = True Then
Dim account
Set account = accountReq.Data
Me.Range("A4").Value = "jpensiri-D" ' fill account number
Me.Range("B4").Value = account.CreditLine 'Credit Line
Me.Range("C4").Value = account.ExcessEquity 'ExcessEquity
Me.Range("D4").Value = account.CashBalance 'CashBalance
End If
End Sub
Sub DerivPortfolio() 'Function to Display Portoflio
Set deriv = New SettradeOpenApi.DerivativesInvestor
Call deriv.SyncAccount("jpensiri-D") ' fill account number
Dim portfolioReq1
Set portfolioReq1 = deriv.GetPortfolio()
Debug.Print "===== Get Portfolio ====="
If portfolioReq1.success = True Then
Dim positions, account
positions = portfolioReq1.Data
Dim i, start, Row
start = 9 'Start Line for Write your portofilo
For i = 0 To UBound(positions)
Row = i + start
Me.Range("A" & Row).Value = positions(i).symbol
If positions(i).ActualLongPosition > 0 Then
Me.Range("B" & Row).Value = "Long"
Me.Range("C" & Row).Value = positions(i).ActualLongPosition
Else
Me.Range("B" & Row).Value = "Short"
Me.Range("C" & Row).Value = positions(i).ActualShortPosition
End If
Me.Range("D" & Row).Value = positions(i).MarketPrice
Next i
End If
Debug.Print "Message: ", portfolioReq1.Message
Debug.Print "Status Code: ", portfolioReq1.StatusCode
End Sub
- กลับมาที่หน้าตาราง excel ค่ะเราได้ทำ Layout ในการแสดงข้อมูลไว้แล้ว และท่านต้องปุ่ม [แสดงวงเงินของพอร์ต] แล้วกำหนดการทำงานให้มัน โดยเรียกไปฟังก์ชั่น DerivAccountInfo เพื่อแสดงวงเงินของระบบอนุพันธ์ ระบุข้อมูลตามด้านล่างนี้ได้เลยค่ะ
- กำหนด Layout ของ Excel โดยเริ่มที่ A2 – D2 ให้ใส่ ข้อมูลตามรูปคือ
ส่วนการแสดงชื่อหัวข้อ
- ตำแหน่ง A3 ให้พิมพ์ข้อความ Account No
- ตำแหน่ง B3 ให้พิมพ์ข้อความ CreditLine
- ตำแหน่ง C3 ให้พิมพ์ข้อความ ExcessEquity
- ตำแหน่ง D4 ให้พิมพ์ข้อความ Cashbalance
ส่วนการแสดงข้อมูลจาก Streaming โดยตัวโปรแกรมทำงานจะแสดงค่าวงเงินในบัญชีอนุพันธ์ที่ตรงกับ Streaming ตามที่เราได้กำหนดเช่น
- - นำค่า Account มาแสดงในตำแหน่ง A4
- - นำค่า Credit Line ของ Account นั้นมาใส่ที่ B4
- - นำค่า Excess Equity มาแสดงตำแหน่งที่ C4
- - นำค่า Cashbalance มาแสดงตำแหน่ง D4
หมายเหตุ: ตำแหน่งต่างๆ ใน Microsoft Excel เช่น B3 หมายถึง คอลัมน์ B แถวที่ 3
สร้างปุ่มโดยกดไปที่ Tab “DEVELOPER” แล้วเลือก insert
เลือกปุ่ม โดยกดที่สัญลักษณ์แรก
ระบบจะให้กำหนด Macro คือการเลือกกำหนดการทำงานให้ปุ่มนี้ โดยเราจะเลือก Sheet
- 2. DerivAccountIno ระบบแสดงที่ Macro Name ตามชื่อที่เราต้องการแล้วปุ่ม [OK]
และใส่ชื่อปุ่มโดยกำหนดค่า Exit Edit Text “ แสดงวงเงินของพอร์ต” จัดวางตามตำแหน่งที่ต้องการได้เลย
- หลังจากนั้นเมื่อกดปุ่ม[แสดงวงเงินของพอร์ต] ระบบจะนำข้อมูลวงเงินมาเทียบกับ Streaming
- 8.2 แสดงพอร์ตการลงทุน
- สร้าง Sheet 2 ตั้งชื่อ “Portfolio” ที่ใช้แสดงวงเงิน หรือสามารถใช้ Sheet เดิมต่อจากข้อ 8.1
- กลับมาที่ Sheet “Portfolio” ใน MS excel ค่ะเราได้ทำ Layout ในการแสดงข้อมูลไว้แล้ว และสร้างปุ่ม (แสดงพอร์ต) แล้วกำหนดการทำงานให้มัน โดยเรียกไปฟังก์ชั่น DerivPortfolio เพื่อแสดงพอร์ตการลงทุนของระบบอนุพันธ์
กำหนด Layout ของ Excel โดยเริ่มที่ A8 – D8 ให้ใส่ ข้อมูลตามรูปคือ
ส่วนการแสดงชื่อหัวข้อ
- - ตำแหน่ง A8 ให้พิมพ์ข้อความ Symbol
- - ตำแหน่ง B8 ให้พิมพ์ข้อความ Position
- - ตำแหน่ง C8 ให้พิมพ์ข้อความ Volume
- - ตำแหน่ง D8 ให้พิมพ์ข้อความ MarketPrice
ส่วนการแสดงข้อมูลจาก Streaming โดยตัวโปรแกรมทำงานจะนำค่าต่าง ๆ ในพอร์ตมาแสดงที่ตำแหน่งที่กำหนดตั้งแต่ แถวที่ 9 เป็นต้นไป ทั้งนี้ขึ้นอยู่จำนวน Symbol ที่อยู่ในพอร์ตการลงทุนของบัญชีอนุพันธ์ของท่าน
- - นำค่า Symbol มาแสดงในตำแหน่ง A9 เป็นต้นไป
- - นำค่า Position ของ Account นั้นมาใส่ที่ B9 เป็นต้นไป
- - นำค่า Volume มาแสดงตำแหน่งที่ C9 เป็นต้นไป
- - นำค่า MarketPrice มาแสดงตำแหน่ง D9 เป็นต้นไป
หมายเหตุ: ตำแหน่งต่างๆ ใน Microsoft Excel เช่น B3 หมายถึง คอลัมน์ B แถวที่ 3
- หลังจากนั้นทำการสร้างปุ่มโดยกดไปที่ Tab “DEVELOPER” แล้วเลือก insert
- เลือกปุ่ม โดยกดที่สัญลักษณ์แรก
ระบบจะให้กำหนด Macro คือการเลือกกำหนดการทำงานให้ปุ่มนี้ โดยเราจะเลือก Sheet2. DerivPortfolio เมื่อเลือกแล้วระบบแสดงที่ Macro Name ตามชื่อที่เราต้องการแล้วปุ่ม [OK]
- และใส่ชื่อปุ่มโดยกำหนดค่า Exit Edit Text “ แสดงพอร์ต” จัดวางตามตำแหน่งที่ต้องการได้เลย
- หลังจากนั้นเมื่อกดปุ่ม[แสดงพอร์ต] ระบบจะนำข้อมูลวงเงินมาเทียบกับ Streaming ซึ่งหากไม่มี Symbol ในพอร์ตระบบจะไม่แสดงค่าอะไรนะคะ ไปลองส่งคำสั่งให้ถูกจับคู่ในตลาดจำลอง(Sandbox) กันเลยค่ะ
- สำคัญคือการตั้งชื่อเพื่อ save ต้องกำหนดชื่อไฟล์และใส่เป็นประเภท Save as type : Excel-Macro Enable Workbook เท่านั้นนะคะ
- เริ่มทดลองดึงข้อมูลอื่น ๆ ผ่านตลาดจำลองกันเลยดีกว่าค่ะ
ครั้งหน้าจะมาสอนการส่งคำสั่งซื้อขายกันต่อนะคะ รูปแบบนี้น่าจะช่วยให้ท่านเริ่มต้นสร้าง Robot Trade เองได้ไม่ยากแล้ว ท่านสามารถ ศึกษารายละเอียดการใช้งานแต่ละฟังก์ชั่นได้จากเว็บไซต์ http://developer.settrade.com ได้เลยค่ะ