Samouczek: Używanie alarmów definiowanych formułami

Wprowadzenie

Program AmiBroker pozwala definiować własne alarmy. O wyzwolenia alarmu użytkownik może zostać poinformowany na kilka sposobów: informacja tekstowa na ekranie monitora, sygnał dźwiękowy zdefiniowany przez użytkownika, powiadomienie wysłane za pomocą poczty e-mail lub poprzez uruchomionie innych zewnętrznych aplikacji. Wszystkie te możliwości są obsługiwane pojedynczą funkcją AlertIF.

Domyślnie alarmy generują informację tekstową, która wyświela sie w oknie Alerty (Alert Output).

Aby zobaczyć to okno należy wybrać z menu Widok->Alerty (View->Alert Output).

Ustawienia

Ustawienia związane z alarmem znajdują się w zakładce "Alerts" w oknie Narzędzia->Właściwości (Tools->Preferences).

Można definiować ustawienia konta e-mail, testować odtwarzany dźwięk lub też definiować, które części programu AmiBroker mogą generować alarmy przy wykorzystaniu funkcji AlertIF.

Obecnie strona ustawień e-mail pozwala wybierać spośród najbardziej popularnych schematów uprawnień, takich jak: AUTH LOGIN (najbardziej popularny), POP3-before-SMPT (popularny), CRAM-MD5, LOGIN PLAIN.

Pola kontrolne "Enable alerts from" pozwalają w sposób wybiórczy uaktywniać/blokować poszczególne alarmy, generowane przy użyciu funkcji Analiza Automatyczna (Automatic Analysis), Komentarz/Intepretacja (Commentary/Interpretation) czy też innych indywidualnych wskażników.

Obecnie okno alarmu posiada dodatkową kolumnę, która pokazuje zródło alarmu (w przypadku gdy jest on generowany przez funkcję Automatic Analysis, Commentary lub jeden z indywidualnych wskaźników). W ten sposób można łatwiej znaleźć, w której części programu AmiBroker generowany jest alarm.

Funkcja AlertIF

Funkcja AlertIF jest zbliżona do funkcji WriteIF, jednakże zamiast wpisywać tekst do okna zewnętrznego (commentary/interpretation) pozwala na:

Składnia jest następująca:

AlertIf( BOOLEAN_EXPRESSION, command, text, type = 0, flags = 1+2+4+8, lookback = 1 );

1. BOOLEAN_EXPRESSION jest wyrażeniem, które w przypadku przyjęcia wartości Prawda (wartość niezerowa) odpowiada za wyzwolenie alarmu. W przeciwnym razie - gdy wyrażenie przyjmuje wartość Fałsz (zerowa wartość) alarm nie jest uruchamiany. Należy zwrócić uwagę na fakt, że tylko parametr lookback najnowszych notowań jest brany pod uwagę.

2. Ciąg znaków command definiuje działanie, podejmowane w przypadku wyzwolenia alarmu. Jeżeli jest on pusty tekst alarmu (text) wyświetla się w oknie alarmu Widok->Alerty / (View->Alert Output). Inne wartości które mogą być zawarte w ciągu comand to command to:

SOUND ścieżka-do-pliku-WAV
EMAIL
EXEC ścieżka-do-pliku-lub strony-internetowej <argumenty do wyboru>

Komenda SOUND uruchamia jednorazowo plik WAV.

Komenda EMAIL wysyła powiadomienie via e-mail na konto zdefiniowane w ustawieniach (Tools->Preferences->E-mail). Format tego powiadomienia jest następujący:

Temat: rodzaj alarmu_nazwa (type) Walor Data/Czas
Treść: text

Komenda EXEC uruchamia zewnętrzną aplikację, plik lub adres URL. Jeden z tych argumentów jest dołączany po nazwie pliku, natomiast na końcu dołączany jest text.

3. Text definiuje tekst, który będzie się ukazywał w oknie lub zostanie wysłany za pomocą poczty e-mail, czy też dołączony jako argument do aplikacji, uruchamianej za pomocą komendy EXEC.

4. Type definiuje rodzaj alarmu. W programie zdefiniowane zostały następujące typy: 0 - domyślny, 1 - kupno, 2 - sprzedaż, 3 - short (pozycja krótka), 4 - cover (zamknięcie krótkeij pozycji). Można zdefiniować dodatkowe rodzaje alarmów, przyjmujące wyższe wartości, które będą istniały pod nazwą "inne" ("other").

5. Flags kontroluje zachowanie się funkcji AlertIF. To pole jest kombinacją (sumą) następujących wartości:
(1 - wyświetla tekst w oknie, 2 - wydaje sygnał dżwiękowy (przez głośnik komputera), 4 - nie wyświetla ponownie alarmów tego samego rodzaju, 8 - nie wyświetla ponownie alarmów posiadających tę samą datę/czas). Domyślnie wszystkie te opcje są włączone.

6. Parametr lookback kontroluje ile ostatnich słupków zostało sprawdzone.

Przykłady:

Buy = Cross( MACD(), Signal() );
Sell = Cross( Signal(), MACD() );
Short = Sell;
Cover = Buy;

AlertIF( Buy, "EMAIL", "A sample alert on "+FullName(), 1 );

AlertIF( Sell, "SOUND C:\\Windows\\Media\\Ding.wav", "Audio alert", 2 );

AlertIF( Short, "EXEC Calc.exe", "Launching external application", 3 );

AlertIF( Cover, "", "Simple text alert", 4 );

Należy zwrócić uwagę na fakt, że komenda EXEC wykorzystuje funkcję ShellExecute, pozwalając uruchomić nie tylko pliki EXE, ale również adresy URL.

Uwaga

Proszę zwrócić uwagę, że podczas wielokrotnego uruchomienia tego samego przeszukiwania, domyślnie ustawiona funkcja AlertIF nie generuje powtórzonych sygnałów. Jeżeli w czasie eksperymentowania pragniesz uzyskać powtarzane sygnały w kolejnych przeszukiwaniach zmień flagi z domyślnych na 1 + 2:

AlertIF( condition, "", "Text", 1, 1+2 );