วิธีใช้การเข้าถึงเครือข่าย
การเข้าถึงอินเทอร์เน็ตเป็นกรณีการใช้งานทั่วไปสำหรับปลั๊กอิน cBot และอินดิเคเตอร์ ก่อนหน้านี้ อัลกอริทึมต้องขอสิทธิ์พิเศษเพื่อดำเนินการเกี่ยวกับเครือข่ายใดๆ ซึ่งอาจทำให้เกิดความกังวลบางอย่างจากผู้ใช้ โดยเฉพาะอย่างยิ่งหากอัลกอริทึมเหล่านี้ถูกเผยแพร่โดยไม่มีซอร์สโค้ด โชคดีที่ตอนนี้ cTrader อนุญาตให้อัลกอริทึมทั้งหมดเข้าถึงทรัพยากรเว็บได้โดยไม่ต้องมีสิทธิ์การเข้าถึงที่สูงขึ้น
ในบทความนี้และวิดีโอที่เกี่ยวข้อง เราจะแสดงวิธีการดึงข่าวจาก API ฟรีที่ใช้ JSON สำหรับการแปลงข้อมูลเป็นอ็อบเจ็กต์และกลับกัน
บริโภค API endpoint
ในตัวอย่างของเรา เราจะใช้ cBot ของเราเพื่ออ่านข้อมูลข่าวจากแหล่งภายนอกและพิมพ์ลงในบันทึก เพื่อจุดประสงค์นี้ เราจะใช้ API ฟรีที่เสนอโดย NewsData
เพื่อดูว่า API มีหน้าตาอย่างไรในเบราว์เซอร์ เราสามารถเข้าถึงลิงก์นี้ได้อย่างง่ายดาย
https://newsdata.io/api/1/news?apikey=pub_32606381862bbdf07962c72ae7bc6135d6332&&language=en
ดังที่เราเห็น endpoint ให้ลำดับของคู่คีย์-ค่าที่เราสามารถบริโภคได้อย่างง่ายดายโดยใช้ cBot เราจะเริ่มต้นด้วยการเพิ่ม namespace ที่มีคลาสและเมธอดหลายอย่างสำหรับการแปลงข้อมูล JSON เป็นอ็อบเจ็กต์และการอ่านข้อมูล
1 2 3 4 5 6 7 8 9 10 11 12 | |
จากนั้นเราสามารถประกาศ HttpClient() อย่างง่ายที่จะเข้าถึงอินเทอร์เน็ต
1 | |
หลังจากนั้นเราจะสามารถอ่านข้อมูลในเมธอด OnStart() ได้
1 2 3 4 | |
คำขอจะส่งคืนการตอบสนองดิบในรูปแบบ JSON เราสามารถดูว่ามันมีหน้าตาอย่างไรโดยใช้ MessageBox
1 2 3 | |
แปลงข้อมูล JSON เป็นอ็อบเจ็กต์
เพื่อแปลงข้อมูล JSON ของเราเป็นอ็อบเจ็กต์ เราจะใช้คลาส JsonSerialiser อย่างไรก็ตาม ก่อนที่เราจะสามารถทำเช่นนี้ได้ เราจะต้องกำหนดคลาสที่จำเป็นสำหรับการแปลงข้อมูลเป็นอ็อบเจ็กต์
NewsItem- คลาสนี้แทนบทความข่าวเดียวNews- คลาสนี้มีคอลเลกชันของอ็อบเจ็กต์NewsItem
1 2 3 4 5 6 7 8 9 | |
หากคุณต้องการหลีกเลี่ยงการเขียนโค้ดพื้นฐานนี้ คุณยังสามารถใช้ ตัวแปลงออนไลน์จาก JSON เป็น C#
โดยใช้ตัวแปลง เราได้กำหนดคลาสของเราดังนี้:
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 | |
ตอนนี้เราสามารถเขียนโค้ดการแปลงข้อมูลเป็นอ็อบเจ็กต์ของเราได้
1 | |
นอกจากนี้ เราสามารถเพิ่มโค้ดต่อไปนี้เพื่อพิมพ์หัวข้อข่าวในบันทึก
1 2 3 4 5 6 7 | |
หากเราสร้างและรัน cBot ของเรา เราจะเห็นข้อยกเว้นปรากฏในบันทึก อย่างไรก็ตาม หากเราเปลี่ยนสิทธิ์การเข้าถึงของ cBot เป็น AccessRights.FullAccess เราจะเห็นว่า cBot ของเราทำงานตามที่ตั้งใจ
เข้าถึงอินเทอร์เน็ตโดยไม่ต้องมีสิทธิ์การเข้าถึงที่สูงขึ้น
เพื่อหลีกเลี่ยงสถานการณ์ที่ cBot ของเราต้องขอสิทธิ์การเข้าถึงที่สูงขึ้น เราสามารถแก้ไขเมธอด OnStart() ของเราเป็นดังนี้
1 2 3 4 | |
หากเราตั้งค่าสิทธิ์การเข้าถึงเป็น AccessRights.None และสร้าง cBot ของเราใหม่ เราควรจะเห็นหัวข้อข่าวถูกพิมพ์ในบันทึกโดยไม่มีปัญหาใดๆ ด้วยความพยายามเพิ่มเติม cBot ของเราสามารถเปลี่ยนเป็นตัวอ่านข่าวที่สวยงามซึ่งพร้อมใช้งานภายในกราฟ cTrader ใดๆ!