บริษัทหลักทรัพย์ที่ปรึกษาการลงทุน คลาสสิก ออสสิริส จำกัด

Settrade API

Settrade API

เผยแพร่เมื่อ วันพุธที่ 23 ธันวาคม พ.ศ. 2563


Settrade API

Settrade เปิดโอกาสให้สามารถส่งคำสั่งด้วย Algorithm ได้แล้วโดยผ่าน SDK ของทาง Settrade โดยสามารถส่งคำสั่งได้หลายรูปแบบ เช่น Python, Excel VBA และ Amibroker

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

หมดสมัยที่ต้องคีย์คำสั่งด้วยมือแล้ว มาสู่ยุคของ Algorithm Trading ถ้านักลงทุนท่านใดมีความต้องการใช้ Settrade API และมีบัญชีกับโบรคเกอร์อยู่แล้วโปรดติดต่อผู้แนะนำการลงทุนของท่าน แต่ท่านใดยังไม่มีก็สามารถทดลองเล่น Sandbox ดูก่อนได้

การใช้งาน Settrade API

การ Generate Key เพื่อการส่งคำสั่งผ่าน Settrade API

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

ฉะนั้นเพื่อความปลอดภัย “โปรดเก็บกุญแจของคุณเป็นความลับ”

ขั้นตอนต่อไปนี้เป็นวิธีการ Generate Key สำหรับผู้ที่เปิดบัญชีจริง

ก่อนอื่นเข้าไปยัง Login Streaming ของ Websiteโบรกเกอร์ Classic Ausiris

 

 

 

 

 

 

มื่อใช้งานครั้งแรกจะมีหน้า ข้อตกลงและเงื่อนไขการใช้งาน Streaming ปรากฎขึ้นมา

กดยอมรับข้อตกลง

ทางเลือก [Optional] = Auto Position คือการส่งคำสั่งโดยไม่ต้องกำหนด Position ให้เป็น Open หรือ Close ในการส่งคำสั่งจะหักลบกับสถานะเดิมในลักษณะ Net Position

ท่านสามารถติดต่อผู้แนะนำการลงทุนของท่านให้เปิดการใช้ Auto Position ได้

  •  เมื่อทำการขอใช้งาน Auto Position เมื่อเข้าไปยังเว็บไซต์ Settrade ในครั้งแรกเลือกที่ Streaming  จะมีหน้าเว็บให้กดยอมรับการใช้งานปรากฎขึ้นมา
  •  กดยอมรับการใช้งาน ถ้าท่านต้องการใช้งาน Auto Position โปรดติดต่อผู้แนะนำการลงทุนของท่าน

เพียงเท่านี้ก็จะได้ App Secret และ App ID สำหรับการใช้งาน Settrade API สามารถสร้าง Key ใหม่ได้ทุกครั้ง โดยเมื่อสร้าง Key ใหม่ Key เดิมจะใช้งานไม่ได้
ส่วนของ Client Proxy เป็นโปรแกรมสำหรับเชื่อมต่อกับ Amibroker 
ถ้าไม่ได้ใช้ Amibroker ก็ไม่มีความจำเป็นที่ต้องติดตั้ง

Sandbox

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

ไม่ว่าใครก็สามารถสร้าง Algorithm Trading ได้หากเงินทุนของท่านยังไม่พร้อม หรือว่ากำลังรอฤกษ์งามยามดี ยังไม่อยากเปิดบัญชีก็สามารถใช้ Sandbox ได้โดยไม่ต้องเปิดบัญชีซื้อขายจริง เพราะ Sandbox เป็นที่ฝึกฝนและทดลองสร้าง Algorithm Trading ให้ Sandbox เป็นที่เริ่มต้นก้าวแรกของการสร้าง Algorithm ขั้นตอนต่อไปนี้เป็นวิธีการ Generate key สำหรับผู้ที่ใช้งาน Sandbox

การสมัครเข้าใช้งาน
สามารถเข้าไปสมัครใช้งานได้ที่ https://developer.settrade.com/open-api/

หลังจากเข้าสู่ระบบแล้วขั้นตอนต่อมาคือการสร้าง Application ID และ Application Secret สำหรับใช้ใน SDK ของ Settrade API
คลิก “ข้อมูลของฉัน” ในส่วนของ Dropdown มุมขวาบนของจอ

 

 

คลิก “สร้าง Application Id”เพียงเท่านี้เราจะได้ Application ID และ Application Secret สำหรับใช้ใน Sandbox ของ Settrade API แล้วส่วนของ Client Proxy เป็นโปรแกรมสำหรับเชื่อมต่อกับ Amibroker  ถ้าไม่ได้ใช้ Amibroker ก็ไม่มีความจำเป็นที่ต้องติดตั้ง

 

 

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


ส่วนที่สำคัญในที่นี้คือชื่อ Account ที่จะนำไปใช้ใน API ของ Sandbox โดยจะปรากฎที่ส่วนนี้ โดยมีรูปแบบดังนี้

บัญชีหุ้น Account จะเป็น “username-E
บัญชี TFEX Account จะเป็น “username-D
(เป็นรูปแบบบัญชีเฉพาะของ Sandbox)

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

https://developer.settrade.com/open-api/api-reference/getting-start


Excel VBA SDK

ข้ามขีดจำกัดของการส่งคำสั่งด้วย Excel เพียงแค่ใช้ Microsoft Excel  เป็นก็สามารถสร้าง Algorithm ของตนเองได้ “Settrade Excel VBA SDK” เป็นส่วนเสริมของ Microsoft Excel ช่วยให้นักลงทุนสามารถสร้าง Algorithm และส่งคำสั่งได้ด้วยตนเองโดยใช้โปรแกรม Microsoft Excel

การติดตั้ง
สามารถ Download ส่วนเสริมและศึกษาการใช้งานได้จาก developer.settrade.com

1) เลือกแถบ Navigation Bar ในส่วนของ API Reference

2) เลือกแถบด้านข้างในหัวข้อ Download

3) เลือก Plugin ที่รองรับกับ version ของ Excel

4) แตกไฟล์ .rar และทำการติดตั้งโปรแกรม

ถ้าโปรแกรมหา dll ไม่เจอให้ติดตั้ง  Microsoft Visual C++  

https://support.microsoft.com/th-th/help/2977003/the-latest-supported-visual-c-downloads

ถ้าติดตั้งโปรแกรมเรียบร้อยใน Excel จะมีแถบ Settrade เพิ่มขึ้นมา

ในการใช้งานจำเป็นที่จะต้องใส่ Attribute ดังนี้

Broker ID = คือรหัสของโบรคเกอร์ถ้าใช้ Sandbox ใส่เป็น “SANDBOX”

App Code = บัญชีจริงใส่ค่าเป็น “ALGO” ถ้าใช้ Sandbox ใส่เป็น “SANDBOX”

App ID = ได้รับจากการ Generate Key

App Secret = ได้รับจากการ Generate Key

Excel VBA

Excel VBA ถ้าพูดให้เข้าใจง่ายคือ ภาษาที่ใช้ควบคุมการทำงานของโปรแกรม Excel ในการใช้งาน Excel VBA SDK จำเป็นต้องมีความรู้ความเข้าใจการทำงานเล็กน้อย เพียงเพื่อนำมาใช้สร้าง Template สำหรับการใช้งานใน Excel ในการใช้ Excel VBA อันดับแรกต้องเปิดใช้งานแถบ Developer ใน Excel ก่อน ถ้ายังไม่มีแถบ Developer สามารถเปิดแถบดังกล่าวได้ดังนี้

อันดับต่อมาคือการเปิดการอนุญาตใช้ Marcros

 

เมื่อเปิด Visual basic ในแถบ Developer จะพบกับหน้าปล่าวๆ ใช้ในการเขียน Code เราสามารถควบคุมการทำงานทั้งหมดของ Excel จากการเขียน Code ที่นี่

ในการบันทึก Excel ร่วมกับ VBA code จะบันทึกสเปรตชีตทั่วไปเหมือน Excel ธรรมดา แต่
ใน Dropdown ในส่วน Save as type จะเลือกเป็นแบบ Excel Macro

การดึงข้อมูลบัญชี

Code ชุดแรก Setup() ใช้สร้าง object โดยกำหนดตัวแปร deriv เป็น Public

Code  ชุดที่สอง DerivAccount() เป็นชุดหลักในการทำงาน ใช้ในการดึงข้อมูลจาก Settrade โดยใช้ Attribute เป็นหมายเลขบัญชี โดยทำการรัน code ชุดแรกก่อนจึงจะสามารถรันชุดนี้ได้ผ่านคำสั่ง Call setup

ในที่นี้ทำการดึงข้อมูลมาเก็บใน Cell C13 – C18

Worksheets เป็นตัวกำหนดตำแหน่งของ sheet   Range ใช้กำหนดตำแหน่ง Cell ในการใส่ข้อมูล

การดึงข้อมูลราคา

ส่วนการดูราคา สามารถเรียกได้จากการใส้สูตรใน Excel ได้โดยตรง

ในส่วน A1  คือชื่อ Symbol “S50Z20

ในส่วน A2  คือ Attribute หรือคุณลักษณะ

ยกตัวอย่างเช่น

last” = Last Price

bid_price1” = ราคา bid ช่องที่ 1

ask_price1” = ราคา ask ช่องที่ 1

bid_volume1” = volume bid ช่องที่ 1

ask_volume1” = volume ask ช่องที่ 1

การส่งคำสั่ง
เมื่อกำหนดตัวแปรที่จำเป็นสำหรับการส่งคำสั่งดังนี้

เมื่อนำคำสั่งทุกอย่างมายำรวมไว้ด้วยกัน Algorithm จะมีการทำงานดังนี้

  1. Worksheets(“Main”).Calculate 
    Worksheets ชื่อว่า Main คำนวณทุกอย่างใน Worksheets นั้นในที่นี้เราต้องการให้ Excel ดึงข้อมูลราคาโดยใช้สูตรข้างต้นที่แสดงให้ดูก่อนหน้านี้
  2. Call Setup สั่งให้ทำงาน โพรซีเยอร์ Setup เพื่อสร้าง Object deriv
  3. Call Setup สั่งให้ทำงาน โพรซีเยอร์ DerivAccountInfo เมื่อได้ตัวเลขเงินในบัญชี
    เราสามารถผูกเซลล์ เพื่อกำหนดได้ว่ามีเงินเหลือไว้เป็น buffer เมื่อต้องเหลือเงินขนาดใหนจะไม่มีการเปิด order ใหม่เป็นต้น
  4. ตรวจสอบเงื่อนใข ในเซลล์ “F10” เป็น True หรือไม่ในที่นี้เพื่อให้เข้าใจง่ายขึ้นจะใช้เงื่อนไขแค่ True และ False ในการเปิด Order
  5. ดึงค่าแต่ละเซลล์ใน sheet มาเก็บในตัวแปร
  6. ส่ง Order โดยใช้ method PlaceOrder()

คำสั่งที่นำมาแสดงเป็นตัวอย่างข้างต้นเพียงไม่กี่คำสั่งเท่านั้น
ทั้งนี้สามารถดูคำสั่งเพิ่มเติมจากเว็บไซต์ของ
Settrade API : https://developer.settrade.com/open-api/api-reference/getting-start

 


Python SDK

Install

ติดตั้ง python Settrade Python SDK library โดยใช้ Command Line  
โดยพิมพ์คำสั่ง “pip install settrade” 

ในส่วน Python editor ทำการ import library settrade.openapi

ถ้าโปรแกรมหา dll ไม่เจอให้ติดตั้ง  Microsoft Visual C++  

สามารถดาวน์โหลดได้จากเว็บไซต์

https://support.microsoft.com/th-th/help/2977003/the-latest-supported-visual-c-downloads

Create investor objects

ในขั้นแรกต้องสร้าง object ของ investor ขึ้นมาใช้งานก่อน

Attributes ที่จำเป็นต้องใส่

Sandbox

  • app_id และ app_secret
  • ใช้ Application Id และ Secret Id ที่สร้างมาก่อนหน้านี้
  • ในส่วน broker_id และ app_code ใส่เป็น “SANDBOX”

การส่งคำสั่งจริง

  • broker_id จะเป็นรหัสของ Broker
  • app_code จะเป็น ALGO”

Create account objects

ขั้นต่อมาสร้าง objects ของบัญชีเทรดต้องการ Attribute account_no สามารถเลือกบัญชีได้ดังนี้

  • username-D” สำหรับบัญชี TFEX (เป็นรูปแบบบัญชีเฉพาะของ Sandbox)
  • username-E” สำหรับบัญชี หุ้น (เป็นรูปแบบบัญชีเฉพาะของ Sandbox)

ถ้าเป็นบัญชีจริงสามารถใช้เลข Account ของบัญชีได้เลย
เมื่อเรียกใช้ method get_account_info() จะแสดงสถานะของ portfolio

Get data

ในการ feed data ก่อนอื่นสร้าง object จาก MQTTWebsocket() เพื่อใช้ในการ subscribe ข้อมูล

ในตัวอย่างนี้จะสร้าง Object ชื่อว่า mqtt ขึ้นมา

Subscribe Bid Offer

หลังจากที่ได้ Object mqtt มาแล้วในการ feed ข้อมูลเราจะมาสร้าง callback function เพื่อ execute จาก MQTTWebsocket ในที่นี้ ( callback function ชื่อว่า returnSub() )

ใช้ method subscribe_bid_offer ในการรับค่า Bid Offer

ค่าดิบๆที่ได้มาจะอยู่ในรูป dictionary เมื่อปรับปรุงให้สวยงามและ Print ค่าที่ออกมาจะเป็นดังนี้

Subscribe last price

วิธีการคล้ายๆกับการ Subscribe Bid Offer เพียงแต่ใช้ method  subscribe_price_info ในการรับค่าราคาปัจจุบัน

ค่าดิบๆที่ได้มาจะอยู่ในรูป dictionary เมื่อปรับปรุงให้สวยงามและ Print ค่าที่ออกมาจะเป็นดังนี้

PlaceOrder
คำสั่ง PlaceOrder เป็นคำสั่งที่ใช้ในการส่งคำสั่งซื้อขาย

Symbol = คือชื่อหลักทรัพย์ที่ต้องการซื้อขาย

Price = คือราคาที่ต้องการซื้อขาย

Volume = คือปริมาณที่ต้องการในการซื้อขาย

Side = คือสถานะของ Order ว่าจะเป็น "LONG" หรือ "SHORT"

Position = 
คือรูปแบบของสถานะแบ่งเป็น เปิดสถานะ Open Position "OPEN",

- ปิดสถานะ Close Position "CLOSE"

- หรือ Auto Position "AUTO" ไม่สนใจว่าเป็นสถานะใดแต่จะใช้หลักการ net position

Pin = รหัสในการส่งคำสั่ง sandbox คือ pin="000000"

price_type = เป็น Optional กำหนดรูปแบบคำสั่ง "LIMIT", "ATO", "MP", "MP-MTL", "MP-MKT"

*ในตัวอย่างเป็น derivative account

*ทั้งนี้ Settrade API ยังสามารถส่งคำสั่งลักษณะอื่นๆได้อีก สามารถศึกษาได้จาก api-reference ของ Settrade

คำสั่งที่นำมาแสดงเป็นตัวอย่างข้างต้นเพียงไม่กี่คำสั่งเท่านั้น ทั้งนี้สามารถดูคำสั่งเพิ่มเติมจากเว็บไซต์ของ Settrade API:https://developer.settrade.com/open-api/api-reference/getting-start

 

เปิดบัญชี TFEX
รับสิทธิพิเศษทันที !!
Array
(
)
		
Array
(
    [sesCAFXXSLAT] => 1746062833
    [CAFXSI18NX] => th
    [_csrf] => 72260f353aa4d2c0efeca207764b2ccf
    [CAFXSFEREF] => https://www.caf.co.th/article/settrade-api.html?PageSpeed=noscript
)
		
Array
(
    [content] => settrade-api
)
		
Array
(
)