W zestawie wskaźników platformy Meta Trader, przynajmniej tej udostępnionej przez serwis bossa.pl, nie znaleźliśmy interesującego nas kanału cenowego. Dlatego, korzystając z języka MQL, musimy napisać go sami. Jak? O tym dzisiejszy odcinek „Profesjonalnego inwestora".
Funkcje wyglądu obiektów
W cyklu artykułów o podstawach programowania pokazaliśmy, jak kodować automatyczną strategię, dlatego, otwierając Meta Editora, wybieraliśmy EA. Teraz wybieramy Custom Indicator, który służy do pisania wskaźników. Zakładamy, że czytelnicy zapoznali się ze wspomnianym cyklem o kodowaniu, dlatego nie będziemy tłumaczyć wszystkich terminów. Jeśli ktoś będzie miał problemy, odsyłamy do naszych poprzednich artykułów oraz wskazanych tam źródeł.
Większość wskaźników to pochodna ceny, dlatego tworzą je liczby obliczone według pewnego wzoru. Nasz kanał cenowy to po prostu najwyższa cena zamknięcia z dziesięciu ostatnich świec oraz najniższa cena zamknięcia z ostatnich dziesięciu świec. Wskaźnik składać się będzie z dwóch obiektów – linii górnej i dolnej. Aby program rozróżniał obie linie, musimy nadać im inne numery, zwane indeksami. W tym celu używamy funkcji SetIndexBuffer, która posiada dwa parametry. Pierwszy to właśnie numer indeksu. W MQL można programować wskaźniki mające maksymalnie osiem obiektów (linii, strzałek itp.), więc wartość indeksu może przyjmować wielkości od 0 do 7. Nasza górna linia dostanie indeks 0, a dolna 1. Drugi parametr to tablica z wartościami wskaźnika – dla górnej będą to wartości maksimum (double High_array[]), a dla dolnej minimum (double Low_array[]).
Następnym krokiem jest zaprogramowanie ustawień dotyczących wyglądu wskaźnika. W tym celu używamy funkcji SetIndexStyle, która posiada pięć parametrów. Pierwszy to indeks obiektu (u nas linii), którego styl określamy. Drugi odpowiada za wygląd owego obiektu – czy ma to być linia, histogram, czy chociażby zestaw strzałek. Jeżeli wybierzemy linię o grubości 1, to wówczas możemy ustawić w trzecim parametrze wygląd owej linii (czy ma być przerywana, czy ma być zestawem kropek itp.). Przy większych grubościach tej modyfikacji nie możemy wprowadzić. Czwarty parametr określa właśnie grubość obiektu (od 1 do 5), a piąty kolor (na przykład Red, czyli czerwony).
Kolejny krok to określenie, od którego momentu na wykresie wskaźnik ma być rysowany. Ponieważ bazujemy na ekstremach z ostatnich dziesięciu sesji, to chcemy, by zaczynał od 11. świecy, licząc od lewej strony wykresu. W celu zaprogramowania tych ustawień używamy funkcji SetIndexDrawBegin, która ma dwa parametry. Pierwszy to indeks obiektu, a drugi numer świecy, od której zaczynamy rysowanie.