Mowa więc będzie o przesunięciu do poziomu równowagi, w literaturze określanego najczęściej angielską nazwą „breakeven". Przy tej okazji wyjaśnimy czytelnikom, jak działa funkcja „OrderModify()" oraz pokażemy kilka kolejnych istotnych narzędzi do zarządzania otwartymi pozycjami.
Ochrona zysku
Zacznijmy od praktyki. W strategiach inwestycyjnych często stosuje się rozwiązania, których zadaniem jest ochrona wypracowanego dotychczas zysku. Nie chcemy stracić tego, co dotychczas zostało zarobione, więc modyfikujemy nasze zlecenie obronne. Rozwiązaniem minimum jest zastosowanie właśnie metody „breakeven", czyli przesunięcie stop lossa do poziomu otwarcia pozycji. To gwarantuje nam, że w razie niekorzystnej zmiany kursu przynajmniej wyjdziemy na zero. Do takich rozwiązań nie jest potrzebny robot – można to robić ręcznie, tylko trzeba obserwować wykres i saldo rachunku. W naszym technicznym portfelu „Parkietu" założenia dotyczące przesunięć stop lossa często stosuje Przemysław Smoliński, analityk DM PKO BP.
Aby zastosować metodę „breakeven", należy na początku określić zakres korzystnej zmiany notowań, po której zlecenie obronne powinno zostać przesunięte. Dla pozycji długich będziemy więc podnosić stop lossa do poziomu wejścia, jeśli notowania wzrosną o przyjętą przez nas liczbę pipsów. Dla pozycji krótkich będziemy go obniżać, jeżeli notowania spadną o taką samą wartość.
Na potrzeby tego dodatku przyjęliśmy założenia, że zmiana uprawniająca do zastosowania „breakeven" wynosi 15 pipsów. Dlatego też w edytorze kodu stworzyliśmy dodatkową zmienną BE, która ma typ double i przypisaną wartość 15 pipsów: „double BE=0.0015". Jest to zmienna globalna, więc umieszczamy ją w górnej przestrzeni pod zmiennymi określającymi stop loss i take profit.
Warunki do „breakeven"
Przejdźmy teraz do zaprogramowania samego procesu przesunięcia zlecenia. W tym celu stworzymy własną funkcję, którą nazwiemy „Breakeven()". Jest to, podobnie jak prezentowana w poprzednim materiale funkcja do zamykania pozycji „ClosePosition()", procedura, czyli zbiór instrukcji do wykonania. Dlatego typ funkcji „Breakeven" to „void". Na ilustracji powyżej prezentujemy jej kod, a w dalszej części tekstu dokładnie go omawiamy.