รับข้อมูลสัญลักษณ์¶
การรับและตีความข้อมูลสัญลักษณ์ (เช่น ราคาเปิดและปิดของแท่งทั้งหมดในช่วงเวลาที่กำหนด) เป็นสิ่งสำคัญในแอปพลิเคชันใดๆ ที่มีฟังก์ชันการทำงานดังต่อไปนี้:
- แผนภูมิ – เพื่อสร้างแผนภูมิแท่งหรือเส้น คุณจำเป็นต้องรู้ทั้งข้อมูลแท่งและคำพูดในอดีตและแบบเรียลไทม์
- สถิติตลาด – หากคุณต้องการแสดงสถิติตลาด (เช่น การเปลี่ยนแปลงราคารายวันสำหรับสัญลักษณ์แต่ละตัว) คุณต้องรับทั้งราคาในอดีตและแบบเรียลไทม์
- รีเพลย์ – ในแอปพลิเคชันของคุณ คุณอาจอนุญาตให้นักเทรดย้อนกลับไปยังช่วงเวลาก่อนหน้าและเทรดบนข้อมูลในอดีต เพื่อทำเช่นนั้น คุณจะต้องรับและประมวลผลข้อมูลแท่งและ tick ในอดีต
ในบทช่วยสอนนี้ เราจะแสดงให้เห็นว่าคุณสามารถรับและประมวลผลข้อมูลแท่งและ tick ในอดีตและแบบเรียลไทม์ และคำพูด depth แบบเรียลไทม์ได้อย่างไร
โปรดทราบว่าบทช่วยสอนนี้ให้ตัวอย่างโค้ดสำหรับการรับข้อมูลแท่งในอดีตเท่านั้น เนื่องจากตรรกะหลักยังคงเหมือนเดิมไม่ว่าคุณจะดำเนินการใด คุณสามารถปรับตัวอย่างโค้ดนี้เพื่อรับข้อมูลประเภทอื่นได้
ทำงานกับ JSON
เมื่อทำงานกับ JSON คุณยังสามารถนำโค้ดจากบทช่วยสอนนี้มาใช้ใหม่ได้ อย่างไรก็ตาม คุณจำเป็นต้องปรับเปลี่ยนเล็กน้อยขึ้นอยู่กับวิธีการ serialisation และ deserialisation ของคุณ
รับข้อมูลแท่งในอดีต ¶
เพื่อรับข้อมูลแท่งในอดีต ให้ทำตามขั้นตอนต่อไปนี้:
- เริ่มต้นออบเจ็กต์ที่แสดงถึง ข้อความ
ProtoOAGetTrendbarsReq - เติมคุณสมบัติของออบเจ็กต์ด้วย
ctidTraderAccountId,symbolId,ProtoOATrendbarPeriod,countของแท่งที่จะส่งคืน และtoTimestampและfromTimestampUnix timestamps ที่ต้องการ
ข้อจำกัดของ Timestamp
โปรดทราบว่ามีข้อจำกัดบางประการเกี่ยวกับระยะทางสูงสุดที่เป็นไปได้ระหว่าง toTimestamp และ fromTimestamp ข้อจำกัดเหล่านี้ขึ้นอยู่กับ ProtoOATrendPeriod ที่ระบุ หากต้องการเรียนรู้เพิ่มเติม คลิกที่นี่
- ส่งข้อความที่สร้างใหม่และรับการตอบสนองของประเภท
ProtoOAGetTrendbarsResเข้าถึงฟิลด์trendbarเพื่อรับรายการแท่งเทรนด์ - แปลงข้อมูลจากรูปแบบสัมพัทธ์เป็นราคาสัญลักษณ์จริง เพื่อทำเช่นนั้น ก่อนอื่นให้รับราคาต่ำสุดของแท่งเทรนด์และหารด้วย 100000 จากนั้นปัดเศษผลลัพธ์เป็นตัวเลขสัญลักษณ์ (เช่น สองตัวหลังจุดทศนิยม) เพื่อรับราคาสูงสุด เปิด และปิดของแท่งเทรนด์ ให้เพิ่มเดลต้าของแต่ละราคาเหล่านี้เข้ากับราคาต่ำสุดของแท่งเทรนด์ หลังจากนั้นหารแต่ละตัวเลขด้วย 100000 และปัดเศษผลลัพธ์เป็นตัวเลขสัญลักษณ์
คุณสามารถทำขั้นตอนเหล่านี้ได้โดยนำโค้ดด้านล่างมาใช้ใหม่
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
รับข้อมูล tick ในอดีต ¶
เพื่อรับข้อมูล tick ในอดีต ให้ทำตามขั้นตอนต่อไปนี้:
- เริ่มต้นออบเจ็กต์ที่แสดงถึง ข้อความ
ProtoOAGetTickDataReq - เติมคุณสมบัติของออบเจ็กต์ด้วย
ctidTraderAccountId,symbolId, ประเภทคำพูดtypeรวมถึงfromTimestampและtoTimestampที่ต้องการ
ข้อจำกัดของ Timestamp
เป็นไปไม่ได้ที่จะขอข้อมูล tick ในอดีตสำหรับช่วงเวลาที่มากกว่าหนึ่งสัปดาห์ ดังนั้นความแตกต่างระหว่าง toTimestamp และ fromTimestamp ที่ระบุต้องไม่เกิน 604800000
- ส่งข้อความที่สร้างใหม่และรับการตอบสนองของประเภท
ProtoOAGetTickDataResเข้าถึงฟิลด์tickDataเพื่อรับรายการองค์ประกอบประเภทProtoOATickData - แปลงข้อมูลจากรูปแบบสัมพัทธ์เป็นราคาสัญลักษณ์จริง เพื่อทำเช่นนั้นหารแต่ละ tick ด้วย 100000 และปัดเศษผลลัพธ์เป็นตัวเลขสัญลักษณ์
การขอจำนวน tick จำนวนมาก
มีข้อจำกัดเกี่ยวกับจำนวน tick ที่สามารถส่งคืนในข้อความ ProtoOAGetTickDataRes หากเกินขีดจำกัดนี้ (เช่น มีจำนวน tick จำนวนมากในช่วงเวลาที่ระบุ) ข้อความ ProtoOAGetTickDataRes จะรวมเฉพาะ tick X แรก โดยที่ X เป็นตัวเลขที่ต่ำกว่าขีดจำกัด tick ขีดจำกัดที่แน่นอนขึ้นอยู่กับการกำหนดค่า backend ของ cTrader
เพื่อตรวจสอบว่ามี tick มากกว่าที่ส่งคืนในข้อความที่ได้รับหรือไม่ ให้ใช้แฟล็ก hasMore
รับข้อมูลแท่งแบบเรียลไทม์ ¶
เพื่อรับแท่งแบบเรียลไทม์ ให้ทำตามขั้นตอนต่อไปนี้:
- เริ่มต้นตัวแปรที่แสดงถึง ข้อความ
ProtoOAGetTrendbarsReq - เติมคุณสมบัติของออบเจ็กต์ด้วย
ctidTraderAccountId,symbolId,ProtoOATrendbarPeriod,countของแท่งที่จะส่งคืน,toTimestampและfromTimestampUnix timestamps ที่ต้องการ
ข้อจำกัดของ Timestamp
มีข้อจำกัดบางประการเกี่ยวกับระยะทางสูงสุดที่เป็นไปได้ระหว่าง toTimestamp และ fromTimestamp ข้อจำกัดเหล่านี้ขึ้นอยู่กับ ProtoOATrendPeriod ที่ระบุ หากต้องการเรียนรู้เพิ่มเติม คลิกที่นี่
-
ส่งข้อความที่สร้างใหม่และรับการตอบสนองของประเภท
ProtoOAGetTrendbarsResเข้าถึงฟิลด์trendbarเพื่อรับรายการแท่งเทรนด์ -
แปลงข้อมูลจากรูปแบบสัมพัทธ์เป็นราคาสัญลักษณ์จริง เพื่อทำเช่นนั้น ก่อนอื่นให้รับราคาต่ำสุดของแท่งเทรนด์และหารด้วย 100000 จากนั้นปัดเศษผลลัพธ์เป็นตัวเลขสัญลักษณ์ (เช่น สองตัวหลังจุดทศนิยม) เพื่อรับราคาสูงสุด เปิด และปิดของแท่งเทรนด์ ให้เพิ่มเดลต้าของแต่ละราคาเหล่านี้เข้ากับราคาต่ำสุดของแท่งเทรนด์ หลังจากนั้นหารแต่ละตัวเลขด้วย 100000 และปัดเศษผลลัพธ์เป็นตัวเลขสัญลักษณ์
-
เริ่มต้นออบเจ็กต์ที่แสดงถึง ข้อความ
ProtoOASubscribeLiveTrendbarReq -
เติมคุณสมบัติของออบเจ็กต์ด้วย
ctidTraderAccountId,ProtoOATrendbarPeriodและsymbolIdที่ต้องการ -
ทำเช่นเดียวกันสำหรับออบเจ็กต์ที่แสดงถึง ข้อความ
ProtoOASubscribeSpotsReq -
ส่งข้อความ
ProtoOASubscribeSpotsReqและProtoOASubscribeLiveTrendbarReqในลำดับนั้นและรับการตอบสนองของประเภทProtoOASubscribeSpotsResและProtoOASubscribeLiveTrenbarsResณ จุดนี้ คุณได้สมัครสมาชิกข้อมูลแท่งแบบเรียลไทม์และคุณควรได้รับข้อความประเภทProtoOASpotEvent
สมัครสมาชิกแท่งเทรนด์แบบเรียลไทม์
การสมัครสมาชิกแท่งเทรนด์แบบเรียลไทม์สำเร็จต้องมีการสมัครสมาชิกเหตุการณ์ spot ก่อน
- เมื่อคุณได้รับข้อความ
ProtoOASpotEventใหม่ ให้ใช้ฟิลด์trendbarเพื่อรับข้อมูลของแท่งราคาปิดล่าสุด - แปลงข้อมูลจากรูปแบบสัมพัทธ์เป็นราคาสัญลักษณ์จริง เพื่อทำเช่นนั้น ก่อนอื่นให้รับราคาต่ำสุดของแท่งเทรนด์และหารด้วย 100000 จากนั้นปัดเศษผลลัพธ์เป็นตัวเลขสัญลักษณ์ (เช่น สองตัวหลังจุดทศนิยม) เพื่อรับราคาสูงสุด เปิด และปิดของแท่งเทรนด์ ให้เพิ่มเดลต้าของแต่ละราคาเหล่านี้เข้ากับราคาต่ำสุดของแท่งเทรนด์ หลังจากนั้นหารแต่ละตัวเลขด้วย 100000 และปัดเศษผลลัพธ์เป็นตัวเลขสัญลักษณ์
เพื่อยกเลิกการสมัครรับข้อมูลแท่งเทรนด์สด คุณสามารถส่ง ข้อความ ProtoOAUnsubscribeLiveTrendbarsReq ที่มี symbolId, period และ ctidTraderAccountId ของคุณได้ตลอดเวลา หากคำขอของคุณสำเร็จ คุณควรได้รับคำตอบประเภท ProtoOAUnsubscribeLiveTrenbarRes การสมัครรับเหตุการณ์สปอตของคุณจะยังคงอยู่
รับราคาสด ¶
เพื่อรับราคา Bid และ Ask สดสำหรับสัญลักษณ์ ให้ทำตามขั้นตอนต่อไปนี้:
- เริ่มต้นวัตถุที่แสดง ข้อความ
ProtoOASubscribeSpotsReq - กรอกคุณสมบัติของวัตถุด้วย
ctidTraderAccountId,symbolIdและหากต้องการsubscribeToSpotTimestampบูล - ส่งข้อความที่สร้างใหม่และรับคำตอบประเภท
ProtoOASubscribeSpotsResณ จุดนี้ คุณได้สมัครรับข้อมูลราคาสดแล้ว และคุณควรได้รับข้อความประเภทProtoOASpotEvent - เมื่อคุณได้รับข้อความ
ProtoOASpotEventใหม่ ให้เข้าถึงฟิลด์bidและaskเพื่อรับราคาล่าสุด โปรดทราบว่าคุณยังต้องแปลงข้อมูลเป็นค่าสัมบูรณ์โดยหารด้วย 100000 และปัดเศษให้เป็นจำนวนหลักของสัญลักษณ์
ฟิลด์ Bid และ Ask
เนื่องจากฟิลด์ bid และ ask เป็นทางเลือก คุณอาจไม่เห็นข้อความ ProtoOASpotEvent ที่ระบุทั้งสองฟิลด์เสมอไป
เพื่อยกเลิกการสมัครรับข้อมูลราคา คุณสามารถส่ง ข้อความ ProtoOAUnsubscribeSpotsReq ที่มี symbolId และ ctidTraderAccountId ของคุณได้ตลอดเวลา หากคำขอของคุณสำเร็จ คุณควรได้รับคำตอบประเภท ProtoOAUnsubscribeSpotsRes ณ จุดนี้ คุณควรหยุดรับเหตุการณ์สปอต
ราคา Depth ¶
สุดท้ายแต่ไม่ท้ายสุด คุณยังสามารถรับราคา Depth หรือ Level II สดสำหรับสัญลักษณ์ได้ ในการทำเช่นนั้น ให้ทำตามขั้นตอนต่อไปนี้
คุณสามารถสมัครและรับราคา Depth หรือ Level II สดสำหรับสัญลักษณ์จาก API ได้
- เริ่มต้นวัตถุที่แสดง ข้อความ
ProtoOASubscribeDepthQuotesReq - กรอกคุณสมบัติของวัตถุด้วย
ctidTraderAccountIdและsymbolId - ส่งข้อความที่สร้างใหม่และรับคำตอบประเภท
ProtoOASubscribeDepthQuotesResณ จุดนี้ คุณได้สมัครรับราคา Depth แล้ว ซึ่งหมายความว่าคุณควรเริ่มรับข้อความประเภทProtoOADepthEvent - เมื่อคุณได้รับข้อความ
ProtoOADepthEventใหม่ คุณจะต้องใช้ฟิลด์newQuotesและdeletedQuotesเพื่อรับข้อมูล Depth ล่าสุด คุณยังต้องแปลงข้อมูลเป็นค่าสัมบูรณ์โดยหารด้วย 100000 และปัดเศษผลลัพธ์ให้เป็นจำนวนหลักของสัญลักษณ์ คุณยังต้องแปลงขนาดราคา Depth เป็นหน่วยโดยหารด้วย 100
เพื่อยกเลิกการสมัครรับเหตุการณ์ Depth คุณสามารถใช้ ข้อความ ProtoOAUnsubscribeDepthQuotesReq โดยระบุ symbolId และ ctidTraderAccountId ได้ตลอดเวลา คุณควรได้รับข้อความประเภท ProtoOAUnsubscribeDepthQuotesRes; หลังจากนั้น คุณควรหยุดรับเหตุการณ์ Depth