Niestandardowe funkcje dopasowania do optymalizacji
Optymalizacja cBota to proces określania najlepszych możliwych wartości parametrów dla cBota przed wdrożeniem go do handlu na żywo. W cTrader możesz optymalizować cBoty względem szerokiego zakresu wbudowanych kryteriów, takich jak maksymalizacja zysków lub minimalizacja obniżenia kapitału. Możesz jednak również napisać własne funkcje dopasowania do optymalizacji, co może być przydatne, jeśli chcesz zastosować niestandardowe kryteria wydajności do cBota. W tym artykule i odpowiadającym mu filmie omawiamy, jak działają niestandardowe funkcje dopasowania.
Należy pamiętać, że ten artykuł nie obejmuje procesu optymalizacji cBota przy użyciu wbudowanych kryteriów.
Zdefiniuj niestandardowe funkcje dopasowania
Niestandardowa funkcja dopasowania to po prostu nadpisanie metody GetFitness().
1 2 3 4 | |
Nadpisanie musi akceptować pojedynczy argument typu GetFitness args, aby mogło zostać uznane za niestandardową funkcję dopasowania.
Napisz niestandardową funkcję dopasowania
Ponieważ metoda GetFitness() musi zwracać double, treść metody powinna zawierać obliczenie, które skutkuje wartością tego typu.
Na przykład możemy napisać prostą niestandardową funkcję dopasowania, która podnosi do kwadratu całkowitą liczbę transakcji zyskownych wykonanych przez cBota, a następnie dzieli tę wartość przez całkowitą wartość transakcji ze stratą. W ten sposób przydzielamy większą wagę transakcjom zyskownym i w pewnym sensie pozwalamy zoptymalizowanemu cBotowi na podejmowanie pewnych ryzykownych zagrań.
Oto jak wyglądałaby nasza funkcja dopasowania.
1 2 3 4 | |
W tym momencie możemy dodać nadpisanie do dowolnego cBota, a następnie zapisać i zbudować go.
Użyj niestandardowej funkcji dopasowania w optymalizacji
Po dodaniu naszej funkcji musimy dodać instancję wybranego cBota, a następnie przełączyć się na zakładkę Backtesting. Aby przeprowadzić optymalizację przy użyciu naszej niestandardowej funkcji, wystarczy otworzyć sekcję Kryteria optymalizacji i wybrać opcję Niestandardowe. Następnie możemy uruchomić optymalizację jak zwykle.
Podczas optymalizacji wyższe wyniki dopasowania zostaną przydzielone przebiegom, podczas których cBot zmaksymalizował stosunek między liczbą transakcji zyskownych do kwadratu a liczbą transakcji stratnych.
Zmodyfikuj niestandardową funkcję dopasowania
Możemy również wrócić do naszej niestandardowej funkcji i zmodyfikować ją w następujący sposób.
1 2 3 4 5 6 7 8 9 10 11 | |
Ta funkcja nadal stosuje poprzedni algorytm, ale stosuje niestandardowe obliczenie tylko wtedy, gdy cBot złożył ponad 20 transakcji. W każdym innym przypadku funkcja zwraca najniższą możliwą wartość double. Teoretycznie powinno to poprawić wyniki poprzez zmniejszenie możliwości wystąpienia błędu statystycznego.
Jeśli przebudujemy bota i ponownie uruchomimy optymalizację, powinniśmy zobaczyć, że kilka przebiegów otrzyma bardzo niski wynik dopasowania ze względu na niską liczbę wszystkich transakcji złożonych przez cBota.
Na koniec chcemy zminimalizować spadek kapitału, jednocześnie zachęcając do aktywnego handlu.
1 2 3 4 5 6 7 8 | |
Jeśli ponownie uruchomimy optymalizację, powinniśmy zobaczyć najlepsze możliwe przebiegi, biorąc pod uwagę naszą strategię handlową.
Niestandardowe funkcje dopasowania stanowią doskonałe narzędzie do określania najlepszych możliwych wartości parametrów dostosowanych do Twojego unikalnego podejścia do handlu.