Ağ erişimi nasıl kullanılır
İnternete erişim, eklentiler, cBot'lar ve göstergeler için yaygın bir kullanım durumudur. Daha önce, algoritmaların herhangi bir ağla ilgili işlem gerçekleştirmek için özel izinler istemesi gerekiyordu; bu da özellikle bu algoritmalar herhangi bir kaynak kodu olmadan dağıtıldıysa kullanıcılardan bazı endişeler doğurabilirdi. Neyse ki cTrader, artık tüm algoritmaların yükseltilmiş erişim haklarına sahip olmadan web kaynaklarına erişmesine izin veriyor.
Bu makalede ve ilgili videosunda, serileştirme ve seri durumdan çıkarma için JSON kullanan ücretsiz bir API'den haberleri nasıl alacağımızı göstereceğiz.
Bir API uç noktasını kullanma
Örneğimizde, cBot'umuzu harici bir kaynaktan haber bilgilerini okumak ve günlüğe yazdırmak için kullanacağız. Bu amaçla NewsData tarafından sunulan ücretsiz bir API kullanacağız.
API'nin bir tarayıcıda nasıl göründüğünü görmek için bu bağlantıya erişebiliriz.
https://newsdata.io/api/1/news?apikey=pub_32606381862bbdf07962c72ae7bc6135d6332&&language=en
Gördüğümüz gibi uç nokta, cBot kullanarak kolayca tüketebileceğimiz bir dizi anahtar-değer çifti sağlar. JSON biçimli verileri seri durumdan çıkarmak ve okumak için çeşitli sınıflar ve yöntemler içeren ad alanlarını ekleyerek başlayacağız.
1 2 3 4 5 6 7 8 9 10 11 12 | |
Daha sonra İnternet'e erişecek basit bir HttpClient() tanımlayabiliriz.
1 | |
Daha sonra OnStart() yönteminde veri okuyabileceğiz.
1 2 3 4 | |
İstek, JSON biçiminde ham bir yanıt döndürecektir. Bir MessageBox kullanarak nasıl göründüğünü görebiliriz.
1 2 3 | |
JSON verilerini seri durumdan çıkarma
JSON verilerimizi seri durumdan çıkarmak için JsonSerialiser sınıfını kullanacağız. Ancak, bunu yapmadan önce seri durumdan çıkarma için gerekli sınıfları tanımlamamız gerekecek.
NewsItem- bu sınıf tek bir haber makalesini temsil eder.News- bu sınıf birNewsItemnesneleri koleksiyonu içerir.
1 2 3 4 5 6 7 8 9 | |
Bu şablon kodu yazmaktan kaçınmak isterseniz JSON'dan C#'a çevrimiçi bir dönüştürücü de kullanabilirsiniz.
Dönüştürücüyü kullanarak sınıflarımızı aşağıdaki gibi tanımladık:
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 | |
Şimdi seri durumdan çıkarma kodumuzu yazabiliriz.
1 | |
Ek olarak, haber başlıklarını günlüğe yazdırmak için aşağıdaki kodu ekleyebiliriz.
1 2 3 4 5 6 7 | |
cBot'umuzu derleyip çalıştırırsak günlükte bir istisna göründüğünü göreceğiz. Ancak, cBot'un erişim haklarını AccessRights.FullAccess olarak değiştirirsek cBot'umuzun amaçlandığı gibi çalıştığını göreceğiz.
Yükseltilmiş erişim hakları olmadan İnternet'e erişim
cBot'umuzun yükseltilmiş erişim hakları istemesi gereken bir durumdan kaçınmak için OnStart() yöntemimizi aşağıdaki gibi değiştirebiliriz.
1 2 3 4 | |
Erişim haklarını AccessRights.None olarak ayarlarsak ve cBot'umuzu yeniden oluşturursak haber başlıklarının günlükte sorunsuz bir şekilde yazdırıldığını görmeliyiz. Biraz daha çabayla cBot'umuz, herhangi bir cTrader grafiğinin hemen içinde kullanılabilen şık bir haber okuyucuya dönüştürülebilir!