AmiBroker w wersji 3.58 dostarczył nową funkcję w oknie Automatic Analysis nazwaną "Exploration". Ogólnie mówiąc, eksploracja (Exploration) działa w podobny sposób jak scan ale zamiast wyszukiwania i raportowania wyłącznie sygnałów kupuj/sprzedaj, pozwala generować indywidualnie skonstruowane raporty, które mogą dostarczyć dużo więcej informacji niż zwykły scan.
Powyższa idea eksploracji jest prosta - jedna zmienna zwana filter kontroluje które akcje/notowania są wyświetlane. Jeżeli do zmiennej dla danej akcji/notowania zostanie przypisana to wartość "prawda" (lub "1") zmienna ta zostanie wyświetlona w raporcie.
Przykładowo następująca formuła zaakceptuje tylko akcje z ceną zamknięcia większą niż 50:
filter = close > 50;
Zwróć uwagę na to, że Exploracja używa wszystkich
ustawień zakresu i filrta używanych przez tester historyczny,
zatem może pojawić się wiele sygnałów dla danego waloru jeśli
wybrane zostanie ustawienie "Wszystkie notowania (all quotations)".
Aby sprawdzić jedynie ostatni dostępny dzień, należy wybrać: "
n last quotations" gdzie "n=1"
tak jak pokazano tutaj: A co z własnymi raportami? Tak, tryb exploracja pozwala tworzyć i eksportować raporty, w których zawartość poszczególnych kolumn można dowolnie definiować a co najważniejsze - jest to bardzo rposte do osiągnięcia. Po pierwsze - musisz zdefiniować ile kolumn ma być w raporcie. Zwróć uwagę, iż pierwsze dwie kolumny (ticker i data) są predefiniowane i nie mogą być zmienione. Zatem aby dodac jedną własnę kolumnę należy napisać np.
|
Jak można zauważyć jedyne co należy zrobic to zdefiniować zmienną numcolumns - to powininna być ilość dodatkowych kolumn (nie wliczając dwóch predefiniowanych kolumn). Następnie wystarczy przypisać wartości które ma zawiera kolumna do zmiennej columnN (gdzie N=0,1,..... to numer kolumny (liczony od 0)
Po wciśnięciu przycisku"Explore" w oknie Automatic Analysis otrzymasz rezultat podobny do tego na poniższym rysunku:
Zwróć uwagę na to, iż tak naprwdę są to trzy kolumny - predefiniowane 'Ticker', 'Data' oraz własna kolumna 0 zawierająca ceny zamknięcia. Tylko walory z ceną zamknięcia wyższą niż 50 będą uwzględnione w raporcie.
Teraz po wciśnięciu przycusku "Export" wyniki ekspploracji zostaną zapisane do pliku CSV (comma separated values) który może być z łatwością użyty do dalszych analiz w innych programach (wliczając Excel)
Oprócz wymaganych zmiennych filter, numcolumns, columnN można jeszcze zdefiniować następujące dodatkowe zmienne:
Zmienna ColumnNname (gdzie N to numer danej kolumny) pozwala zdefiniować nagłówek kolumny. Zatem, w poprzednim przykładzie, zdefiniowanie
column0name = "Close";
Zmieni domyślny nagłówek pierwszej (samodzielnie definiowanej) kolumny "Column 0" na bardziej czytelny "Close".
Zmienna ColumnNformat (gdzie N to numer kolumny) pozwala na zdefiniowanie formatowania wartości w kolumnie. Domyślnie wszystkie zmienne wyświetlane są do drugiego miejsca po przecinku, ale można zmienić to ustwienie przez przypisanie innej wartości do tej zmiennej, np.: 1.5 da w rezultacie 5 cyfr po przecinku, 1.0 nie wyświetli miejsc po przecinku. Zatem użycie:
column0format = 1.4;
yświetli ceny zamknięcia z dokładnością do 4 miejsc po przecinku.
(Dla zaawansowanych użytkowników: część całkowita tej zmiennej może być użyta aby upewnić się, że wyświetlana liczba ma minimalną ilość znaków, a gdy liczba ma mniej znaków, zostają dodane spacje - 6.0 nie wyświetli cyfr po przecinku, ale liczba będzie mieć co najmniej 6 znaków (wliczając dodane spacje).)
Przykłady
Tryb exploracji jest niezwyle elastyczny, można np. wyeksportować zawartość całej bazy danych do plików CSV używając poniższej formuły:
filter = 1; /* all stocks and quotes accepted */
numcolumns = 5;
column0 = open;
column1 = high;
column2 = low;
column3 = close;
column4 = volume;
column0name = "open";
column1name = "high";
column2name = "low";
column3name = "close";
column4name = "volume";
column0format = 1.4;
column1format = 1.4;
column2format = 1.4;
column3format = 1.4;
column4format = 1.0;
Ten przykład wyświetli tylko walory o dużym wolumenie obrotu:
filter = volume > 5000000; /* adjust this threshold for your own needs */
numcolumns = 2;
column0 = close;
column1 = volume;
albo... wyświetli walory, gdzie wolumen obrotów jest 30% powyżej 40-dniowej średniej wykładniczej wolumenu.
filter = volume > 1.3 * ema( volume, 40 );
numcolumns = 2;
column0 = close;
column1 = volume;
Ta formuła pozwala eksportować wartości wielu wskaźników do dalszych analiz.
filter = close > ma( close, 20 ); /* only stocks trading above its 20 day MA*/
numcolumns = 10;
column0 = macd();
column1 = signal();
column2 = adx();
column3 = rsi();
column4 = roc( close, 15 );
column5 = mfi();
column6 = obv();
column7 = cci();
column8 = ultimate();
column9 = trix();
Nowe funkcjie w AFL
AFL zawiera teraz wiele funkcji ułatwiających tworzenie eksploracji. Są one opisane w AFL function reference. Tutaj zaprezentwany będzie jedynie krótki przegląd wybranych funkcji.
Nowe funkcji to:
Przykład 1:
AddColumn( Close, "Closing price", 1.4 )
zastępuje 4 komendy:
numcolumns = 1;
column0 = Close;
column0name = "Closing price";
column0format = 1.4;
Przykład 2:
Lista wszytkich cen (OHLCV):
Filter = 1;
AddColumn(Open,"Open");
AddColumn(High,"High");
AddColumn(Low,"Low");
AddColumn(Close,"Close");
AddColumn(Volume,"Volume");
Kiedy użwywana jest funkcja AddColumn() NIE MA POTRZEBY definiowania zmiennych NumColumns, ColumnN.
Dodatkowa porada:
Klikając na nagłówku kulumny można sortować listę rezultatów wg danej zmiennej.