Jedną z wielu zalet programu do analizy technicznej Amibroker jest możliwość wykorzystania przy tworzeniu systemów transakcyjnych różnych interwałów.Na stronie: http://www.amibroker.com/guide_pl/h_timeframe.html można znaleźć szczegółowy opis funkcji wykorzystujących wiele interwałów wewnątrz jednej formuły AFL.
W celu zilustrowania powyższej funkcjonalności programu Amibroker stworzyliśmy prosty system transakcyjny wykorzystujący wskaźnik MACD na danych tygodniowych oraz wskaźnik Ultimate bazujący na danych dziennych. Dodatkowo w systemie tym zamieszczona została formuła pozwalająca wyświetlać na dziennym wykresie tygodniowy wskaźnik MACD, co znacznie ułatwia weryfikację generowanych sygnałów.
Formuła w języku AFL:
TimeFrameSet(inWeekly); // przełączenie na interwał tygodniowy
m = MACD(12,26); // definiowanie zmiennej „m” określającej MACD z danych tygodniowych
TimeFrameRestore(); // przywrócenie interwału do początkowego
//poniższa formuła pozwala na wyświetlenie na dziennym wykresie tygodniowego MACD
m1 = TimeFrameExpand( m, inWeekly );
Plot( m1, „Weekly MACD”, colorRed );
PlotShapes( Cross( m1, 0 ) * shapeUpArrow, colorGreen );
PlotShapes( Cross( 0, m1 ) * shapeDownArrow, colorGreen );
//formuła odpowiedzialna za generowanie poszczególnych sygnałów
Buy = (m1 > Ref(m1,-1)) // określenie rosnącego MACD
AND
Ultimate()<50;
Sell = (m1 < Ref(m1,-1)) //określenie malejącego MACD
AND
Ultimate()>50;
Powyższy system generuje sygnał kupna w przypadku gdy tygodniowy MACD jest rosnący i jednocześnie wartość oscylatora Ultimate bazującego na danych dziennych jest niższa niż 50, a sygnał sprzedaży gdy tygodniowy MACD jest malejący i jednocześnie wartość dziennego oscylatora Ultimate jest wyższa niż 50.
Bardziej rozbudowanym przykładem wykorzystania różnych interwałów w ramach jednego systemu jest „3 ekranowy system Eldera”. Twórca trzyekranowego systemu transakcyjnego opiera się na założeniu, iż rama czasowa, w której inwestor przeprowadza transakcje jest powiązana zarówno z szerszą, jak i z węższą od niej ramą czasową. Głównym celem jaki przyświecał twórcy systemu było stworzenie formuły pozwalającej na odszukanie optymalnego momentu do zajęcia pozycji. W pierwszej kolejności należy zidentyfikować długookresowy trend, a następnie dzięki obserwacji sygnałów generowanych przez wskaźniki bazujące na danych dziennych wykorzystać odpowiednio dzienne spadki do kupna w tygodniowy trendzie wzrostowym oraz dzienne wzrosty do sprzedaży w tygodniowym trendzie spadkowym. Co więcej przy tak wygenerowanym sygnale moment wejścia określany jest przez zastosowanie techniki ?wędrującego kupna – stop” w trendach wzrostowych i techniki ?wędrującej sprzedaży – stop” w trendach spadkowych. Szerszy opis systemu można znaleźć w książce Alexandra Eldera ?Zawód inwestor giełdowy”, natomiast uproszczona wersja systemu w języku AFL wygląda następująco:
TimeFrameSet( inWeekly ); // przełączenie na interwał tygodniowy
// definiowanie zmiennej „whist” określającej MACD z danych tygodniowych
whist = MACD( 12, 26 ) – Signal( 12, 26, 9 );
/*określenie rosnącego MACD przy zastosowaniu wskaźnika ROC*/
wtrend = ROC( whist, 1 );
TimeFrameRestore(); // przywrócenie interwału do początkowego
/* rozciągnięcie obliczonego MACD do interwału dziennego, aby można było go użyć z sygnałami z danych dziennych */
wtrend = TimeFrameExpand( wtrend, inWeekly );
// określenie wskaźnika „elder ray”
bullpower= High – EMA(Close,13);
bearpower= Low – EMA(Close,13);
//formuła odpowiedzialna za generowanie poszczególnych sygnałów
Buy = wtrend > 0 /* określenie wzrostowego trendu tygodniowego w oparciu o tygodniowe MACD*/
AND
bearpower < 0 AND bearpower > Ref( bearpower, -1 ) /* „bear power” ujemny ale rosnący */
AND
H > Ref( H, -1 ); // weryfikacja czy cena ustanowiła nowe maksimum;
Przedstawiona powyżej uproszczona formuła pozwala na dokonywanie transakcji na przestrzeni kilku dni przy równoczesnym uwzględnieniu tygodniowej ramy czasowej (wyższej o jeden rząd wielkości). W ten sposób inwestor zawsze zajmuje pozycje zgodnie z trendem wyższego rzędu.
Sygnał kupna zostanie wygenerowany w przypadku gdy zostaną spełnione następujące warunki:
– tygodniowy MACD jest rosnący,
– bear power jest ujemny ale rosnący (wykorzystanie wskaźnika Elder ray),
– dzienna cena analizowanego waloru ustanawia nowe maksimum.
P.S. Proszę pamiętać, iż zaprezentowane w tym tekście systemy zostały stworzone jedynie w celu pokazania szerokiej funkcjonalności programu Amibroker i nie mogą być traktowane jako bezpieczne narzędzie do zarabiania na giełdzie.
Zbigniew Jabłoński
2 Komentarzy
Dodaj komentarz
Niezależnie, DM BOŚ S.A. zwraca uwagę, że inwestowanie w instrumenty finansowe wiąże się z ryzykiem utraty części lub całości zainwestowanych środków. Podjęcie decyzji inwestycyjnej powinno nastąpić po pełnym zrozumieniu potencjalnych ryzyk i korzyści związanych z danym instrumentem finansowym oraz rodzajem transakcji. Indywidualna stopa zwrotu klienta nie jest tożsama z wynikiem inwestycyjnym danego instrumentu finansowego i jest uzależniona od dnia nabycia i sprzedaży konkretnego instrumentu finansowego oraz od poziomu pobranych opłat i poniesionych kosztów. Opodatkowanie dochodów z inwestycji zależy od indywidualnej sytuacji każdego klienta i może ulec zmianie w przyszłości. W przypadku gdy materiał zawiera wyniki osiągnięte w przeszłości, to nie należy ich traktować jako pewnego wskaźnika na przyszłość. W przypadku gdy materiał zawiera wzmiankę lub odniesienie do symulacji wyników osiągniętych w przeszłości, to nie należy ich traktować jako pewnego wskaźnika przyszłych wyników. Więcej informacji o instrumentach finansowych i ryzyku z nimi związanym znajduje się w serwisie bossa.pl w części MIFID: Materiały informacyjne MiFID -> Ogólny opis istoty instrumentów finansowych oraz ryzyka związanego z inwestowaniem w instrumenty finansowe.
Coś małe zainteresowanie tematem.
Przykład własny zainspirowany tekstem:
http://www.walory.com/edukacja/strategie/4h-tunell.html
wykonany w Ami:
http://4click.eu/PLIKI/ej.png
Chciałbym przetestować pewien sytem oparty na zmienności, niestety nie potrafię tego zrobić.
Z indykatorem poszło bez problemu i pokazuje on pewną wartość X po zakończeniu każdego słupka.
Chodzi o zapisanie wyrażenia „Odwróć pozycję na długą/krótką gdy kurs wzrośnie/spadnie o wartość X z indykatora od kursu otwarcia następnego słupka”.