Wykorzystanie wielu interwałów w Amibrokerze

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

[Głosów:0    Średnia:0/5]

2 Komentarzy

  1. Mike

    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

  2. Dirk

    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”.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Proszę podać wartość CAPTCHA: *