Jedną z rzeczy, które odróżniają Amibrokera od programów do wyświetlania notowań, niekiedy nawet bardzo zaawansowanych jest możliwość zdefiniowania własnych najbardziej nawet wymyślnych alertów. Do dyspozycji mamy bowiem nie tylko proste warunki takie jak przekroczenie pewnego pułapu cenowego, czy wielkości wolumenu, ale dzięki językowi AFL możemy zdefiniować alert w odpowiedzi na każdą możliwą do opisania w formie skryptu sytuację.
O wyzwoleniu alertu, program może poinformować użytkownika na cztery sposoby, od prostej informacji tekstowej wyświetlanej w oknie Alerty –Alert Output, przez odegranie sygnału dźwiękowego, a na wysłaniu emaila, czy uruchomieniu aplikacji zewnętrznej kończąc. Wszelkie ustawienia związane z alertami znajdziemy w zakładce Alerts w menu konfiguracji Amibrokera (Tools -> Preferences ). Konfiguracja obejmuje między innymi ustawienia konta poczty elektronicznej, które posłuży nam do przesyłania alertów na skrzynkę pocztową, a także przegląd (aktywowanie i blokowanie generowania) alertów z poszczególnych z poszczególnych źródeł.
Funkcja, która służy do definiowania warunków alarmu to AlertIF. Jej składnia jest następująca:
AlertIF( warunek, akcja, text, typ = 0, flagi = 1+2+4+8, lookback = 1 );
Teraz kilka słów o każdej z części składowych tej funkcji.
1. Warunek jest wyrażeniem typu prawda/fałsz. Alarm uruchamiany jest w momencie pojawienia się wartości niezerowej.
2. Na drugim miejscu oznaczonym jako akcja definiujemy styl powiadomienia nas o zaistnieniu alarmu. Do wyboru mamy:
a) SOUND ścieżka-do-pliku-wav
b) EMAIL
c) EXEC ścieżka-do-pliku lub strony-internetowej
Pozostawienie tego pola pustego spowoduje wyświetlenie tekstu w oknie Alert Output.
3. Text służy do definiowania tekstu, który zostanie przesłany w wiadomości email lub wyświetlony na ekranie.
4. Typ określa rodzaj alarmu, 0 – domyślny, 1 – kupno, 2- sprzedaż, 3 – pozycja krótka, 4 – pokrycie pozycji krótkiej.
5. Flagi umożliwiają nam użycie kombinacji kilku różnych akcji w odpowiedzi na pojawienie się alertu, np. komunikat i sygnał dźwiękowy (1+2).
6. Ostatni parametr lookback kontroluje ile słupków wstecz zostaje sprawdzonych.
Skoro już wiemy, jak wygląda składnia funkcji AlertIF, przejdźmy do przykładów:
Przykładowy prosty alert w oparciu o przecięcie linii sygnalnej przez MACD
// definiujemy zmienne, które posłużą nam za „warunki” do
// wykorzystania w alertach
Buy = Cross( MACD(), Signal() );
Sell = Cross( Signal(), MACD() );
Short = Sell;
Cover = Buy;
// pierwszy alert wyśle do nas maila o treści ?Kupuj nazwa_waloru”
AlertIF( Buy, „EMAIL”, „Kupuj „+FullName(), 1 );
// ten alert z kolei poinformuje nas o sygnale sprzedaży przy pomocy dźwięku z pliku wav
AlertIF( Sell, „SOUND C:\\Windows\\Media\\Ding.wav”, „Audio alert”, 2 );
// przy pomocy tego alertu możemy uruchomić program lub WWW
AlertIF( Short, „aplikacja.exe”, „Uruchamiamy aplikacje”, 3 );
// ten chyba nie wymaga komentarza;)
AlertIF( Cover, „”, „Zamknij krótkie pozycje!”, 4 );
Poza MACD możemy wykorzystać oczywiście każdy inny wskaźnik, np. ADX, czy RSI. Oczywiście przy pomocy składni if języka AFL możliwa jest kombinacja kilku warunków, np. przebicie przez RSI poziomu 30, wraz z przebiciem się linii sygnalnych na MACD.
Funkcjonalność alertów z Amibrokera możemy wykorzystać w dość pomysłowy sposób – np. wysłanie komunikatu w formie emaila może mieć jeszcze jedno, dodatkowe zastosowanie. Praktycznie wszyscy dostawcy skrzynek pocztowych za niewielką opłatą udostępniają swoim Klientom możliwość wysyłania powiadomień sms o przychodzącej wiadomości, wraz z początkiem jej treści. Taką usługę możemy wykorzystać do przesyłania na nasz telefon komórkowy/palmtop sygnałów płynących ze stosowanego przez nas systemu transakcyjnego. Przy ?połączeniu” Amibrokera z naszym telefonem istotną rzeczą jest rozsądne ustawienie warunków aktywacji alertów, w przeciwnym razie w szybkim czasie skrzynka odbiorcza może pękać w szwach, a my nie widząc wykresu nie będziemy w stanie podjąć żadnej decyzji w oparciu o takie sygnały
Ciekawe zastosowanie może mieć teoretycznie funkcja EXEC. Przy jej użyciu możemy bowiem uruchomić dowolny skrypt, lub adres URL, które będą w stanie wywołać konkretną akcję na rachunku maklerskim, np. kupić lub sprzedać dany walor. W przypadku udostępnienia przez brokera odpowiedniego interfejsu otrzymujemy prawie gotową receptę na automatyczny system tradingowy. Rozwiązanie takie nie jest jeszcze gotowe w DM BOŚ ale kto wie co przyniesie przyszłość 😉
Bartłomiej Szuba


Dodaj komentarz