Cara menggunakan akses rangkaian
Mengakses internet adalah kes penggunaan biasa untuk plugin, cBot dan indikator. Sebelum ini, algo perlu meminta keizinan khas untuk melaksanakan sebarang operasi berkaitan rangkaian, yang boleh menimbulkan beberapa kebimbangan daripada pengguna, terutamanya jika algo ini diedarkan tanpa sebarang kod sumber. Nasib baik, cTrader kini membenarkan semua algo untuk mengakses sumber web tanpa memerlukan hak akses yang lebih tinggi.
Dalam artikel ini dan video yang berkaitan, kita akan menunjukkan cara mendapatkan berita daripada API percuma yang menggunakan JSON untuk penyerialan dan penyahserialan.
Guna titik akhir API
Dalam contoh kita, kita akan menggunakan cBot kita untuk membaca maklumat berita daripada sumber luar dan mencetaknya ke log. Untuk tujuan ini, kita akan menggunakan API percuma yang ditawarkan oleh NewsData.
Untuk melihat bagaimana API kelihatan dalam pelayar, kita boleh mengakses pautan ini.
https://newsdata.io/api/1/news?apikey=pub_32606381862bbdf07962c72ae7bc6135d6332&&language=en
Seperti yang kita lihat, titik akhir menyediakan urutan pasangan kunci-nilai yang boleh kita gunakan dengan mudah menggunakan cBot. Kita akan bermula dengan menambah ruang nama yang mengandungi beberapa kelas dan kaedah untuk menyahserialkan dan membaca data berformat JSON.
1 2 3 4 5 6 7 8 9 10 11 12 | |
Kemudian kita boleh mengisytiharkan HttpClient() ringkas yang akan mengakses Internet.
1 | |
Selepas itu, kita akan dapat membaca data dalam kaedah OnStart().
1 2 3 4 | |
Permintaan akan mengembalikan respons mentah dalam format JSON. Kita boleh melihat bagaimana ia kelihatan menggunakan MessageBox.
1 2 3 | |
Nyahserialkan data JSON
Untuk menyahserialkan data JSON kita, kita akan menggunakan kelas JsonSerialiser. Walau bagaimanapun, sebelum kita boleh melakukan ini, kita perlu menentukan kelas yang diperlukan untuk penyahserialan.
NewsItem- kelas ini mewakili satu artikel berita.News- kelas ini mengandungi koleksi objekNewsItem.
1 2 3 4 5 6 7 8 9 | |
Jika anda mahu mengelakkan menulis kod boilerplate ini, anda juga boleh menggunakan penukar dalam talian daripada JSON kepada C#.
Menggunakan penukar, kita telah menentukan kelas kita seperti berikut:
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 | |
Kita kini boleh menulis kod penyahserialan kita.
1 | |
Selain itu, kita boleh menambah kod berikut untuk mencetak tajuk berita dalam log.
1 2 3 4 5 6 7 | |
Jika kita membina dan menjalankan cBot kita, kita akan melihat pengecualian muncul dalam log. Walau bagaimanapun, jika kita menukar hak akses cBot kepada AccessRights.FullAccess, kita akan melihat bahawa cBot kita berfungsi seperti yang dimaksudkan.
Akses internet tanpa hak akses yang lebih tinggi
Untuk mengelakkan situasi di mana cBot kita perlu meminta hak akses yang lebih tinggi, kita boleh mengubah suai kaedah OnStart() kita seperti berikut.
1 2 3 4 | |
Jika kita menetapkan hak akses kepada AccessRights.None dan membina semula cBot kita, kita sepatutnya melihat tajuk berita dicetak dalam log tanpa sebarang masalah. Dengan sedikit usaha lagi, cBot kita boleh diubah menjadi pembaca berita menarik yang tersedia terus di dalam mana-mana carta cTrader!