Hata yönetimi¶
Hata yönetimi, herhangi bir güvenilir ve kullanıcı dostu Open API uygulaması için çok önemli bir parçadır. Çeşitli hataları yakalayıp işlemezseniz, kullanıcılarınız hatalı bir kullanıcı arayüzüyle karşılaşabilir veya belirli temel eylemleri tamamen gerçekleştiremeyebilir.
Genel olarak, bir hatanın meydana geldiği katmana bağlı olarak farklı hata yönetimi süreçleri uygulanabilir.
- Veri ve etki alanı katmanında. Bazı durumlarda, cTrader arka ucu isteklerinizden birine yanıt olarak
ProtoErrorResmesajını gönderebilir. Emirler, işlemler veya pozisyonlarla ilgili operasyonlar için ayrıcaProtoOAOrderErrorEventmesajını alabilirsiniz. - Etki alanı ve uygulama katmanında. Kullanıcılar, kodunuzda hesaba katmadığınız eylemler gerçekleştirebilir ve bu da uygulamanızın beklenmedik şekilde davranmasına neden olabilir.
Bu seviyelerdeki hata yönetimi mekanizmaları farklılık gösterir ve aşağıda açıklanmıştır.
Veri ve etki alanı katmanında hata yönetimi ¶
Aşağıdaki durumlarda ProtoErrorRes veya ProtoOAOrderErrorEvent alabilirsiniz (listenin kapsamlı olmadığını unutmayın):
- Piyasası kapalı olan bir sembol için emir vermeye çalışmak.
- Yanlış veya desteklenmeyen bir mesaj göndermek.
- Yürütülmekte olan bir emri değiştirmeye çalışmak.
- cTrader arka ucuna bağlantınızı kaybettikten sonra mesaj göndermek.
Hataları analiz etme
Hem ProtoErrorRes hem de ProtoOAOrderErrorEvent, meydana gelen hata türü ve açıklaması hakkında kesin bilgiler içeren errorCode ve description alanlarına sahiptir. Desteklenen tüm hata kodlarının tam listesini ProtoErrorCode enum'unda görebilirsiniz.
Uygulamanızın bu tür durumlarda bozulmamasını sağlamak için, bir hata yanıtı aldığınızda tetiklenen geri aramalara genellikle abone olabilirsiniz. Bu geri aramaların kesin mantığı ve bunlara nasıl abone olabileceğiniz, bağlantı kurmak ve mesaj akışını dinlemek için kullandığınız istemciye bağlıdır.
JSON ile çalışma
JSON ile çalışırken, bu eğitimdeki kodu yine de yeniden kullanabilirsiniz; ancak, serileştirme ve seri durumdan çıkarma yaklaşımınıza ve tercih ettiğiniz TCP ve WebSocket istemcisine bağlı olarak kodu biraz değiştirmeniz gerekir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
Asenkron işlemleri yönetmek için twisted kütüphanesini kullanırken, ProtoOAVersionReq için aşağıdaki örnekte gösterildiği gibi her yeni mesaj gönderdiğinizde bir hata geri çağırmasına abone olmanız gerekir.
1 2 3 4 5 6 7 8 | |
Etki alanı ve uygulama katmanında hata yönetimi ¶
Etki alanı ve uygulama katmanlarında hataları ele alma şekliniz, seçtiğiniz programlama diline, kullanıcı arayüzü çerçevesine ve uyguladığınız kullanım durumlarına bağlıdır, bu da belirli kod parçacıkları ve çözümler sağlamayı zorlaştırır.
Ancak, cTrader Open API ile nasıl entegre olmayı seçerseniz seçin, aşağıdaki öneriler faydalı olabilir.
- Ana kullanıcı arayüzü öğeleri için her zaman özel bir hata durumu uygulayın. Bu, uygulamanızın tamamen bozulmasını önleyecek ve yarı bozuk durumda çalışmasına olanak tanıyacaktır.
- Hataları uygun bir konuma (örneğin, yerel depolama) kaydedecek güvenli ve güvenilir bir günlük kaydı mekanizması uygulayın. Tekrarlanan hatalar meydana gelirse, günlük kaydı bunların nedenini belirlemeyi ve gidermeyi basitleştirmelidir.
- Kullanıcıların sizi hatalardan haberdar etmesi için bir mekanizma oluşturun. Bu, uygulama içinde iletişim bilgilerinizi sağlamak kadar basit veya yeni hatalarda tetiklenen otomatik bir geri bildirim gönderme hizmeti eklemek kadar karmaşık olabilir.
- Hatalar meydana geldiğinde kullanılan tüm kaynakların düzgün bir şekilde temizlendiğinden emin olun. Çoğu dil çöp toplayıcı hizmetleri sunsa da, özel kaynak imha mantığı belirtmek isteyebilirsiniz.