Odporność na błędy
Termin „odporność na błędy" odnosi się do zdolności zautomatyzowanego systemu do kontynuowania działania w przypadku wystąpienia awarii. W przypadku algorytmów cTrader odporność na błędy oznacza, że procesy hostujące cBoty, wtyczki i wskaźniki mogą kontynuować działanie nawet w obliczu błędów.
Ten artykuł wyjaśnia, jak działa odporność na błędy, i opisuje kluczowe korzyści, jakie ta funkcja oferuje traderom algorytmicznym.
Odporność na błędy w jedną minutę!
- Zgodnie z zasadami odporności na błędy, w przypadku wystąpienia wyjątku algorytm będzie kontynuować działanie. Ta funkcja sprawia, że algorytmy cTrader są jeszcze bardziej stabilne i zapewnia możliwości udoskonalenia sposobu wykonywania kodu.
- Algorytmy mogą teraz automatycznie wyświetlać napotkane wyjątki w dzienniku operacji, dostarczając cennych informacji, które można wykorzystać do udoskonalenia kodu.
- Możesz użyć metody
OnException(Exception exception), aby dostosować sposób, w jaki Twoje algorytmy reagują na wyjątki. Użyj tego programu obsługi zdarzeń, aby tworzyć niezawodne i skuteczne rozszerzenia.
Zasady odporności na błędy
Krótko mówiąc, odporność na błędy zapewnia, że wszystkie algorytmy przestrzegają zasad wyszczególnionych poniżej:
- W przypadku napotkania wyjątku algorytm musi kontynuować działanie.
- Każdy wyjątek, który wystąpi podczas działania algorytmu, musi zostać zarejestrowany.
- Użytkownicy muszą mieć możliwość wprowadzenia niestandardowych zasad określających, w jaki sposób algorytmy obsługują różne wyjątki.
Odporność na błędy pozwala algorytmom zasadniczo ignorować wszystkie błędy, które nie zagrażają awarią ich procesów. Chociaż wyjątki mogą nadal uniemożliwiać wykonanie kodu, odporność na błędy znacznie zmniejsza liczbę przypadków, w których algorytm może nieoczekiwanie ulec awarii.
Metoda OnException()
Zgodnie z zasadami odporności na błędy algorytmy muszą ignorować wyjątki. Możesz jednak również dostosować sposób, w jaki Twoje algorytmy reagują na określone wyjątki, lub całkowicie nadpisać domyślne zachowania odporności na błędy.
Aby to zrobić, użyj metody OnException(). Działa ona jako dedykowany program obsługi dla wszelkich nieobsłużonych wyjątków. Jej domyślna sygnatura jest następująca:
1 2 3 4 | |
Rozważ poniższy przykład, w którym metoda OnException() jest używana do zmiany sposobu, w jaki cBot reaguje na wyjątek NullReferenceException.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
Aby zgłosić wyjątek NullReferenceException, sprawiamy, że nasz cBot zamyka krótką pozycję, która może nie istnieć. Gdy napotka określony wyjątek, nasz cBot ma wyświetlić MessageBox z tekstem wyjaśniającym, abyśmy mogli szybko zareagować na ten wyjątek i dostosować zachowania naszego cBota.
Należy pamiętać, że program obsługi OnException() nie ma obsługiwać wyjątków, które występują podczas wywoływania tej metody. Niemniej jednak takie wyjątki są nadal rejestrowane w dzienniku zdarzeń.
Korzyści z odporności na błędy
Odporność na błędy jest kluczowym aspektem działania handlu algorytmicznego w cTrader, zapewniając następujące korzyści.
- Odporność na błędy znacznie zwiększa niezawodność algorytmów i zapewnia nowe możliwości udoskonalenia podejścia do handlu automatycznego.
- Ponieważ algorytmy mogą wyświetlać napotkane wyjątki w dzienniku zdarzeń, możesz łatwo określić warunki, w których algorytm napotkał określony błąd.
- Umożliwiając obsługę zdarzeń wyjątków, metoda
OnException()może być używana do udoskonalenia zachowań Twoich algorytmów i poprawy ich niezawodności.
Obsługa awarii
Jak wspomniano wcześniej, kilka błędów może spowodować awarię całych procesów. Są to:
- Wyjątek
OutOfMemoryException. - Wyjątek
StackOverflowException. - Każdy nieobsłużony wyjątek, który występuje w osobnym wątku.
- Wszelkie inne błędy, które mogą zagrozić awarią procesu, w którym działa algorytm.
W przypadku wystąpienia któregokolwiek z powyższych błędów wystąpienie wskaźnika zostanie zatrzymane; nie zostanie automatycznie uruchomione ponownie. Jednak wyjątek zostanie nadal zarejestrowany w dzienniku.
Natomiast gdy proces hostujący wystąpienie cBota ulegnie awarii, zostanie automatycznie uruchomiony ponownie (a wyjątek zostanie zarejestrowany w dzienniku).
Wiele wystąpień w jednym procesie
Zdarzają się przypadki, gdy pojedynczy proces może hostować kilka wystąpień cBota. Jeśli jedno z tych wystąpień napotka wyjątek, który powoduje jego awarię, cały proces również ulegnie awarii. Po ponownym uruchomieniu proces uruchomi ponownie wszystkie wystąpienia cBota, które pierwotnie hostował.
Podsumowanie
Odporność na błędy zapewnia kilka cennych możliwości uczynienia algorytmów jeszcze bardziej stabilnymi i skutecznymi. Program obsługi OnException() zapewnia dodatkową warstwę kontroli nad tym, jak Twoje algorytmy reagują na wyjątki.