Część 11: Uczymy inwestycyjnego robota ustawiać początkowe ryzyko procentowe i dostosowywać do niego wielkość otwieranej pozycji.

Wielu giełdowych guru podpowiada, by przed otwarciem każdej pozycji zadać sobie pytanie – ile mogę w tej transakcji stracić?

Aktualizacja: 06.02.2017 14:31 Publikacja: 31.10.2016 14:04

Część 11: Uczymy inwestycyjnego robota ustawiać początkowe ryzyko procentowe i dostosowywać do niego wielkość otwieranej pozycji.

Foto: Archiwum

Jest to bardzo słuszna sugestia, gdyż po pierwsze oswaja nas z możliwością popełnienia błędu i po drugie – pozwala ten błąd mieć pod kontrolą. Jeśli chodzi o odpowiedź na pytanie, to zdania są podzielone. Jedni uważają, że można ryzykować tylko 0,5 proc., a inni zgadzają się ryzykować 10 razy więcej. Wybór dokładnej liczby z przedziału 0,5-5 proc. zależy od indywidualnych preferencji i zasobności portfela. Programując nasz algorytm przyjęliśmy założenie, że nie chcemy stracić w jednej transakcji więcej niż 1 proc. posiadanego na koncie kapitału.

Do trzymania się zasad dotyczących ryzyka nie potrzebujemy oczywiście inwestycyjnego robota, ale praktyka pokazuje, że większość inwestorów największy problem ma właśnie z dyscypliną. Robot nie zna takiego pojęcia – wykonuje instrukcje, które zostały mu zaprogramowane. Jak zatem nauczyć go obliczać wielkość dopuszczalnej straty?

Na początku robot musi wiedzieć, jaka jest aktualna wartość wolnych środków na naszym koncie. Aby uzyskać taką informację wykorzystujemy jedną z tzw. funkcji informacyjnych konta, a mianowicie: "AccountFreeMargin()". Podaje ona wartość aktualnych środków w walucie konta bieżącego (w naszym przypadku PLN), które są dostępne do otwierania nowych pozycji. Jest to podejście bardziej konserwatywne, bo przy kalkulacji nie uwzględnimy tych środków, które już są na rynku zainwestowane w otwarte pozycje. Gdybyśmy chcieli je uwzględnić, można wywołać inną funkcję – "AccountEquity()". Pełny spis wraz z wyjaśnieniem znaczenia funkcji informacyjnych konta znajduje się pod linkiem (http://bossa.pl/fx/narzedzia/automatyzacja/slownik/funkcje/informacyjne/).

W celu obliczenia wielkości ryzykowanej kwoty wystarczy sumę wolnych środków pomnożyć przez 0,01 (obrazek obok; zmienne nazywane są w języku polskim, by całość była bardziej czytelna). Otrzymana kwota to nasz limit straty. Od niego oraz od przyjętego poziomu stop loss zależeć będzie to, jakiej wielkości pozycję możemy otworzyć. Jak zbudować mechanizm zarządzania jej wielkością?

Podczas tworzenia reguł otwierania pozycji przyjęliśmy założenie, że początkowy stop loss ma być zawsze oddalony od ceny wejścia o 50 pipsów, a take profit ma być trzy razy większy. Ponieważ zlecenia są zbyt odległe zawęziliśmy je na potrzeby tego materiału odpowiednio do 15 i 30 pipsów. Aby robot obliczył właściwą wielkość pozycji, musi podzielić wielkość dopuszczalnej straty przez odległość stop lossa, liczoną w pipsach. Zanim jednak tego dokona musimy pamiętać, że gramy na parze EUR/USD, dlatego rozliczenia muszą być dokonywane w dolarze. Aby złotówki zamienić na amerykańską walutę wystarczy kwotę w złotówkach podzielić przez aktualny kurs USD/PLN. Aby go uzyskać należy skorzystać z funkcji "MarketInfo()", która zwraca określone informację na temat danego instrumentu. Funkcja ma dwa parametry – pierwszy to symbol instrumentu (u nas "USDPLN"), a drugi to zwracana informacja (u nas cena ASK, czyli MODE_ASK). Dzieląc Limit_Straty przez kurs dolara otrzymujemy poziom ryzyka wyrażony w amerykańskiej walucie. Otrzymaną kwotę dzielimy przez 15 (odległość stop lossa) i otrzymujemy ilość ryzykowanych dolarów na jeden pips. Ile to oznacza lotów? Skoro przy jednym locie jeden pips to 10 dolarów, to wystarczy otrzymaną kwotę podzielić przez 10 i otrzymamy dopuszczalną wielkość pozycji. Aby lepiej zrozumieć tę kwestię posłużmy się przykładem. Załóżmy, że mamy na koncie 100 000 PLN, a kurs USD/PLN wynosi 4 PLN. Ryzyko na poziomie 1 proc. daje nam dopuszczalną stratę 1000 PLN, co w przeliczeniu na dolary daje 250 USD. Dzieląc te kwotę prze liczbę 15 pipsów (odległość stop lossa) otrzymujemy 16,7 USD/pips. Skoro przy jednym locie relacja ta wynosi 10 USD/pips, to z prostej, matematycznej proporcji wynika, że w naszym przypadku otworzyć możemy 1,7 lota.

Wnikliwi czytelnicy zauważą, że w kodzie zaprezentowanym na obrazku dotyczącym obliczania wielkości pozycji jest dodatkową funkcja "NormalizedDouble()". Jest to polecenie, które zaokrągli wynik do jednego miejsca po przecinku, bo taką formę liczby lotów akceptuje MetaTrader.

Aby naszą metodę doboru wielkości pozycji uruchomić w robocie, należy zmienną Ilosc_Lotów umieścić w funkcji "OrderSend", która wysyła zlecenia na rynek. Za wielkość pozycji odpowiada trzeci parametr i to właśnie tam powinniśmy wstawić stworzoną przez nas zmienną.

Zaprezentowany tutaj sposób dobierania wielkości pozycji to tzw. metoda ryzyka procentowego, zalecena m. in. przez Van Tharp'a w książce "Giełda, wolność i pieniądze". Jest to jej uproszczona wersja, bowiem przyjmujemy stałą odległość stop lossa. Nic nie stoi jednak na przeszkodzie, by wykorzystać tutaj inne metody. MQL jest na tyle elastyczny, że ogranicza nas własna wyobraźna i umiejętność kodowania. Możemy chociażby uzależnić wielkość stop lossa od zmienności (funkcja "iATR()", albo ekstremum z ostatnich kilku świec (funkcje "iLowest" i "iHighest"). Ten drugi pomysł proponuje Jim Dandy, amerykański vloger, do którego filmów już nie raz odsyłaliśmy w tym dodatku (link do filmu: https://www.youtube.com/watch?v=SVofW9hN4gc).

Nasz robot jest już wyposażony w niezbędne elementy, więc można sprawdzić jego skuteczność. W tym celu wykorzystamy moduł testujący MetaTrader. Przy tej okazji pokażemy, jak działa tester strategii i jak wiele błędów można dzięki niemu zidentyfikować.

Inwestycje
Piotr Kaźmierkiewicz, BM Pekao: Na Wall Street może się jeszcze trochę złego wydarzyć. Za to na GPW...
Materiał Promocyjny
Tech trendy to zmiana rynku pracy
Inwestycje
100 tys. pkt to mało. 200 tys. pkt by się chciało. Tylko kiedy?
Inwestycje
Wiceprezes OPTI TFI: WIG sięgnie 200 tys. pkt. Prognoza dla GPW
Inwestycje
WIG zdobył 100 tys. pkt. Co dalej? Analityk: przestrzeń do wzrostów się zawęża
Materiał Promocyjny
Lenovo i Motorola dalej rosną na polskim rynku
Inwestycje
ESRS G1 Postępowanie w biznesie