Hata toleransı
“Hata toleransı” terimi, otomatik bir sistemin bir arıza ile karşılaştığında çalışmaya devam etme yeteneğini ifade eder. cTrader algoritmaları için hata toleransı, cBot'ları, eklentileri ve göstergeleri barındıran süreçlerin hatalarla karşılaştığında bile çalışmaya devam edebilmesi anlamına gelir.
Bu makale, hata toleransının nasıl çalıştığını açıklamakta ve bu özelliğin algoritmik işlem yapan trader'lara sunduğu temel faydaları anlatmaktadır.
Bir dakikada hata toleransı!
- Hata toleransı kuralları uyarınca, bir istisna ile karşılaşıldığında bir algoritma çalışmaya devam edecektir. Bu özellik, cTrader algoritmalarını daha da kararlı hale getirir ve kodunuzun nasıl yürütüldüğünü iyileştirmek için fırsatlar sunar.
- Algoritmalar artık karşılaştıkları istisnaları otomatik olarak işlem günlüğüne çıkarabilir ve kodunuzu iyileştirmek için kullanabileceğiniz değerli bilgiler sağlayabilir.
- Algoritmalarınızın istisnalara nasıl tepki verdiğini özelleştirmek için
OnException(Exception exception)yöntemini kullanabilirsiniz. Güvenilir ve etkili uzantılar oluşturmak için bu olay işleyicisini kullanın.
Hata toleransı kuralları
Kısaca, hata toleransı tüm algoritmaların aşağıda detaylandırılan kurallara uymasını sağlar:
- Bir istisna ile karşılaşıldığında, bir algoritma çalışmaya devam etmelidir.
- Bir algoritma çalışırken meydana gelen her istisna günlüğe kaydedilmelidir.
- Kullanıcılar, algoritmaların çeşitli istisnaları nasıl ele alacağını belirleyen özel kurallar getirme fırsatına sahip olmalıdır.
Hata toleransı, algoritmaların süreçlerini çökertme tehdidi oluşturmayan tüm hataları esasen yok saymasına olanak tanır. İstisnalar kod yürütmeyi engellemeye devam etse de, hata toleransı bir algoritmanın beklenmedik bir şekilde çökme sayısını büyük ölçüde azaltır.
OnException() yöntemi
Hata toleransı kuralları uyarınca, algoritmalar istisnaları yok saymak zorundadır. Ancak, algoritmalarınızın belirli istisnalara nasıl tepki verdiğini özelleştirebilir veya varsayılan hata toleransı davranışlarını tamamen geçersiz kılabilirsiniz.
Bunu yapmak için OnException() yöntemini kullanın. İşlenmeyen tüm istisnalar için özel işleyici görevi görür. Varsayılan imzası aşağıdaki gibidir:
1 2 3 4 | |
Aşağıdaki örnekte, bir cBot'un NullReferenceException istisnasına nasıl tepki verdiğini değiştirmek için OnException() yönteminin kullanıldığı durumu inceleyin.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
NullReferenceException istisnasını atmak için cBot'umuzun mevcut olmayabilecek bir kısa pozisyonu kapatmasını sağlıyoruz. Belirtilen istisna ile karşılaşıldığında, cBot'umuzun açıklayıcı metin içeren bir MessageBox göstermesi beklenir, böylece bu istisnaya hızlı bir şekilde tepki verebilir ve cBot'umuzun davranışlarını ayarlayabiliriz.
OnException() işleyicisinin, bu yöntem çağrılırken meydana gelen istisnaları ele alması beklenmediğini unutmayın. Yine de, bu tür istisnalar olay günlüğüne kaydedilir.
Hata toleransının faydaları
Hata toleransı, cTrader'da algoritmik işlem yapmanın nasıl çalıştığının önemli bir yönüdür ve aşağıdaki faydaları sağlar.
- Hata toleransı, algoritmaların güvenilirliğini büyük ölçüde artırır ve otomatik işlem yapmaya yaklaşımınızı iyileştirmek için yeni fırsatlar sunar.
- Algoritmalar, karşılaştıkları istisnaları olay günlüğünde gösterebildiği için, bir algoritmanın belirli bir hatayla karşılaştığı koşulları kolayca belirleyebilirsiniz.
- İstisna olaylarının işlenmesine izin vererek,
OnException()yöntemi algoritmalarınızın davranışlarını mükemmelleştirmek ve güvenilirliklerini artırmak için kullanılabilir.
Çökmeleri ele alma
Daha önce belirtildiği gibi, bazı hatalar tüm süreçleri çökertebilir. Bunlar şunlardır:
OutOfMemoryExceptionistisnası.StackOverflowExceptionistisnası.- Ayrı bir iş parçacığında meydana gelen işlenmeyen herhangi bir istisna.
- Bir algoritmanın çalıştığı süreci çökertme tehdidi oluşturabilecek diğer tüm hatalar.
Yukarıdaki hatalardan herhangi biriyle karşılaşıldığında, bir gösterge örneği durdurulacaktır; otomatik olarak yeniden başlatılmayacaktır. Ancak, istisna yine de günlüğe kaydedilecektir.
Buna karşılık, bir cBot örneğini barındıran bir süreç çöktüğünde, otomatik olarak yeniden başlatılacaktır (istisna günlüğe kaydedilerek).
Tek bir süreçte birden çok örnek
Tek bir sürecin birden fazla cBot örneğini barındırabileceği durumlar vardır. Bu örneklerden biri, çökmesine neden olan bir istisna ile karşılaşırsa, tüm süreç de çökecektir. Yeniden başlatıldığında, süreç başlangıçta barındırdığı tüm cBot örneklerini yeniden başlatacaktır.
Özet
Hata toleransı, algoritmaları daha da kararlı ve etkili hale getirmek için çeşitli değerli fırsatlar sunar. OnException() işleyicisi, algoritmalarınızın istisnalara nasıl tepki verdiğine dair ek bir kontrol katmanı sağlar.