Funkcje operujące na oknach (wykresach)

Wykres w MQL4 jest podstawowym elementem na którym uruchamiane są programy i na którego danych najczęściej operujemy podczas obliczeń, dlatego też wprowadzono funkcje ułatwiające posługiwanie się samymi oknami wykresu:

Symbol

Funkcja zwraca ciąg znaków będący nazwą bieżącego symbolu, instrumentu finansowego.

Składnia

string Symbol()
Parametry
brak
Wartość zwracana
nazwa symbolu, instrumentu finansowego

Przykład:

int wszystkie_zlecenia = OrdersTotal();
for(int p=0;p< wszystkie_zlecenia;p++)
{
if(OrderSelect(p, SELECT_BY_POS)==false) continue;
if(OrderType()>OP_SELL || OrderSymbol()!=Symbol()) continue;
// jak zlecenie jest z symbol danego wykresu to kontynuujemy poniższe
obliczenie
...
}

Period

Funkcja zwraca identyfikator zakresu czasowego wykresu, na którym została wywołana. Identifikator zakresu reprezentowany jest przez wartość określoną w minutach np. skala czasowa 1 godzinowa (H1) przyjmuje wartość 60.

Składnia

int Period()
Parametry
brak
Wartość zwracana
zakres czasowy wykresu w minutach

Przykład:

Print("Zakres czasowy aktualnego wykresu to ", Period());

RefreshRates

Funkcja odświeża (aktualizuje) wartości zmiennych predefiniowanych. Należy pamiętać, że EA oraz skrypty działają na własnych kopiach danych historycznych, a dane z wykresu są kopiowane i na tej kopi dokonywane są obliczenia. Może wystąpić taka sytuacja (duża zmienność rynku, skomplikowane algorytmy obliczeniowe), że dane staną się nieaktualne, dlatego należy stosować funkcje RefreshRate(). Jeśli funkcja zakończy się prawidłową aktualizacją danych zwraca wartoś true (prawda), w przeciwnym razie false (fałsz), co oznacza że dane nie zostały zaktualizowane.

Składnia

bool RefreshRates()
Parametry
brak
Wartość zwracana
true – jeśli odświeżanie danych wykresu zakończone powodzeniem
false – jeśli odświeżanie danych wykresu zakończone niepowodzeniem

Przykład:

int ticket;
while(true)
{
ticket =
OrderSend(Symbol(),OP_BUY,0.2,Ask,3,0,0,"komentarz",255,0,CLR_NONE);
if(ticket<=0)
{
int error = GetLastError();
if(error==134) break; // brak środków na koncie
Sleep(10000); // czekaj 10 sekund
RefreshRates(); // odśwież dane
break;
}
else
{
OrderSelect(ticket,SELECT_BY_TICKET);
OrderPrint();
break;
}
}

WindowRedraw

Funkcja wymusza odświeżanie, ponownie przerysowanie aktualnego wykresu. Przeważnie stosowana jest, gdy zmianie uległy jakieś obiekty graficzne na wykresie (zostały usunięte, przesunięte).

Składnia

void WindowRedraw()
Parametry
brak
Wartość zwracana
brak

Przykład:

// ustawia nowe wartości obiektów graficznych i odświeża wykres
ObjectMove(obj_1, 0, Time[index], cena);
ObjectSet(obj_1, OBJPROP_ANGLE, angle*2);
ObjectSet(obj_1, OBJPROP_FONTSIZE, rozmiar_czcionki);
ObjectSet(line_1, OBJPROP_TIME2, cena_2);
ObjectSet(line_1, OBJPROP_ANGLE, angle_2);
// odświeża wykres
WindowRedraw();

WindowExpertName

Funkcja zwraca ciąg znaków określający nazwę EA, skryptu, wskaźnika, biblioteki, programu z którgo poziomu została wywołana.

Składnia

string WindowExpertName()
Parametry
brak
Wartość zwracana
nazwa programu z którego poziomu została wywołana funkcja

Przykład:

string nazwa = WindowExpertName();
GlobalVariablesDeleteAll(nazwa);

WindowsTotal

Funkcja zwraca liczbę podokien znajdujących się w oknie głównym wykresu.

Składnia

int WindowsTotal()
Parametry
brak
Wartość zwracana
liczba podokien na wykresie głównym

Przykład:

Print( "Liczba podokien na wykresie głównym = ", WindowsTotal() );
 

WindowFind

Funkcja szuka okna na podstawie nazwy skróconej okna i zwraca numer, indeks okna lub wartość -1 jeśli nie znaleziono okna o podanej nazwie.

Uwaga! Funkcji WindowFind() nie stosujemy na poziomie funkcji specjalnej init().

Składnia

iint WindowFind( string name )
Parametry
name – nazwa okna
Wartość zwracana
indeks okna

Przykład:

int wix = WindowFind( "MojWskaznikMACD" );

WindowIsVisible

Funkcja sprawdza czy na danym wykresie widoczne jest okno o podanym indeksie.

Uwaga! Podajemy indeks podokna wykresu, a nie uchwyt systemowy okna. Funkcja zwraca wartość true (prawda) jeśli podokno o podanym indeksie jest na wykresie, w przeciwnym razie false (fałsz).

Składnia

bool WindowIsVisible( int index )
Parametry
index – indeks podokna w oknie głównym wykresu
Wartość zwracana
true - jeśli istnieje okno o podanym indeksie
false - jeśli nie istniej ok ono o podanym indeksie

Przykład:

int MojeOkno = WindowFind("WzkazniMACD");
if(MojeOkno>-1 && WindowIsVisible(MojeOkno)==true)
Print("Okno wskaźnika WzkazniMACD jest na wykresie");
else
Print("Nie znaleziono okan wskaźnik WzkazniMACD");

WindowFirstVisibleBar

Funkcja zwraca numer pierwszego widocznego na wykresie słupka. Należy pamiętać, że słupki numerowane są od prawej indeks 0 do lewej, czyli funkcja zwraca indeks pierwszego widocznego słupka od lewej strony wykresu.

Składnia

int WindowFirstVisibleBar()
Parametry
brak
Wartość zwracana
numer pierwszego widocznego słupka na wykresie od lewej strony

Przykład:

// obliczenia tylko na widocznych słupkach
int liczba_slupkow = WindowBarsPerChart();
int pierwszy_widoczny_slupek = WindowFirstVisibleBar();
for(int i=0; i<liczba_slupkow; i++, liczba_slupkow--)
{
// ...
}

WindowBarsPerChart

Funkcja zwraca ilość widocznych słupków na aktualnym wykresie.

Składnia

int WindowBarsPerChart()
Parametry
brak
Wartość zwracana
liczba widocznych słupków z wykresu

Przykład:

// obliczenia tylko na widocznych słupkach
int liczba_slupkow = WindowBarsPerChart();
int pierwszy_widoczny_slupek = WindowFirstVisibleBar();
for(int i=0; i<liczba_slupkow; i++, liczba_slupkow--)
{
// ...
}

WindowPriceMax

Funkcja zwraca maksymalną wartość ze skali pionowej wykresu lub podwykresu, którego indeks podajemy w wywołaniu funkcji. Indeks 0 to okno główne wykresu kolejne indeksy od 1 to podokna wykresu głównego. Jeśli nie został podany indeks okna to zostanie przyjęta wartość domyślna 0 czyli okno głównego wykresu.

Składnia

double WindowPriceMax( int index=0 )
Parametry
index – indeks podokna lub wartość domyślna 0 – okno główne wykresu
Wartość zwracana
maksymalna wartość ze skali pionowej wykresu

Przykład:

double gora = WindowPriceMax();
double dowl = WindowPriceMin();
datetime lewa = Time[WindowFirstVisibleBar()];
int slupkek = WindowFirstVisibleBar()-WindowBarsPerChart();
if(slupkek<0) slupkek=0;
datetime prawa=Time[slupkek]+Period()*60;
ObjectCreate("kwadrat",OBJ_RECTANGLE,0,lewa,gora,prawa,dow);
ObjectSet("kwadrat ",OBJPROP_BACK,true);
ObjectSet("kwadrat ",OBJPROP_COLOR,Blue);
WindowRedraw();

WindowPriceMin

Funkcja zwraca minimalną wartość ze skali pionowej wykresu lub podwykresu, którego indeks podajemy w wywołaniu funkcji. Indeks 0 to okno główne wykresu kolejne indeksy od 1 to podokna wykresu głównego. Jeśli nie został podany indeks okna to zostanie przyjęta wartość domyślna 0 czyli okno główne wykresu.

Składnia

double WindowPriceMin( int index=0 )
Parametry
index – indeks podokna lub wartość domyślna 0 – okno główne wykresu
Wartość zwracana
minimalna wartość ze skali pionowej wykresu

Przykład:

double gora = WindowPriceMax();
double dowl = WindowPriceMin();
datetime lewa = Time[WindowFirstVisibleBar()];
int slupkek = WindowFirstVisibleBar()-WindowBarsPerChart();
if(slupkek<0) slupkek=0;
datetime prawa=Time[slupkek]+Period()*60;
ObjectCreate("kwadrat",OBJ_RECTANGLE,0,lewa,gora,prawa,dow);
ObjectSet("kwadrat ",OBJPROP_BACK,true);
ObjectSet("kwadrat ",OBJPROP_COLOR,Blue);
WindowRedraw();

WindowOnDropped

Funkcja zwraca indeks okna na które został przeciągnięty myszką z Nawigatora EA, wskaźnik, skrypt. Zwracany jest numer okna licząc od 0 (okno główne wykresu), 1 (pierwsze podokno wykresu) do n (liczba podokien na wykresie głównym). Wskaźnik użytkownika mogą tworzyć własne podokna, dlatego indeks okna wskaźnika oraz indeks okna na które przeciągnięto wskaźnik mogą być różne.

Uwaga! Funkcji nie stosuje się podczas inicjalizacji, wykonywania funkcji specjalnej init().

Składnia

int WindowOnDropped()
Parametry
brak
Wartość zwracana
indeks podokna na które został przeciągnięty EA, wskaźnik, skrypt

Przykład:

if( WindowOnDropped() !=0 )
{
Print("Wskaźnik 'MojWskaźnik' nie został uruchomiony w oknie głównym");
return(false);

WindowPriceOnDropped

Funkcja zwraca wartość ceny z miejsca w którym został przeciągnięty myszką i uruchomiony EA lub skrypt. Funkcja nie działa dla wskaźników.

Składnia

double WindowPriceOnDropped()
Parametry
brak
Wartość zwracana
cena z miejsca w którym był kursor myszki podczas uruchomienia EA, skryptu

Przykład:

double dPrice = WindowPriceOnDropped();
datetime dTime = WindowTimeOnDropped();
if(dTime>0)
{
ObjectCreate("Tutaj uruchomiono EA (cena) ", OBJ_HLINE, 0, dPrice);
ObjectCreate("Tutaj uruchomiono EA (czas)", OBJ_VLINE, 0, dTime);
}

WindowTimeOnDropped

Funkcja zwraca wartość czasu z miejsca w którym został przeciągnięty myszką i uruchomiony EA lub skrypt. Funkcja nie działa dla wskaźników.

Składnia

datetime WindowTimeOnDropped()
Parametry
brak
Wartość zwracana
czas z miejsca w którym był kursor myszki podczas uruchomienia EA, skryptu

Przykład:

double dPrice = WindowPriceOnDropped();
datetime dTime = WindowTimeOnDropped();
if(dTime>0)
{
ObjectCreate("Tutaj uruchomiono EA (cena) ", OBJ_HLINE, 0, dPrice);
ObjectCreate("Tutaj uruchomiono EA (czas)", OBJ_VLINE, 0, dTime);
}

WindowXOnDropped

Funkcja zwraca wartość na osi X w pikselach z miejsca w którym został przeciągnięty myszką i uruchomiony EA lub skrypt. Funkcja nie działa dla wskaźników.

Składnia

int WindowXOnDropped()
Parametry
brak
Wartość zwracana
wartość w pikselach z osi X wykresu na który został przeciągnięty myszka
EA, skrypt (miejsca w którym znajdował się kursor myszki)

Przykład:

Print("EA został uruchomiony w miejscu okna wykresu
x=",WindowXOnDropped()," y=",WindowYOnDropped());

WindowYOnDropped

Funkcja zwraca wartość na osi Y w pikselach z miejsca w którym został przeciągnięty myszką i uruchomiony EA lub skrypt. Funkcja nie działa dla wskaźników.

Składnia

int WindowYOnDropped()
Parametry
brak
Wartość zwracana
wartość w pikselach z osi Y wykresu na który został przeciągnięty myszka
EA, skrypt (miejsca w którym znajdował się kursor myszki)

Przykład:

Print("EA został uruchomiony w miejscu okna wykresu
x=",WindowXOnDropped()," y=",WindowYOnDropped());

WindowHandle

Funkcja zwraca numery systemowy uchwytu okna na postawie podanej nazwy symbolu oraz zakresu czasowego okna.

Składnia

iint WindowHandle( string symbol, int timeframe )
Parametry
symbol – nazwa symbolu instrument finansowego
timeframe – zakres czasowy okna
Wartość zwracana
systemowy numer uchwyt okna wykresu lub 0 jeśli nie znaleziono okna

Przykład:

int whandle = WindowHandle("EURUSD",PERIOD_H1);
if( whandle != 0 )
Print("Okno symbol EURUSD,H1 zostało znalezione =",whandle);

WindowScreenShot

Funkcja dokonuje zrzutu okna ekranu i zapisuje do pliku graficznego w formacie gif. Jeśli funkcja powiedzie się zwraca wartość true, w przeciwnym razie false. Aby uzyskać szczegółowe informacje o błędach, korzystamy z funkcji GetLastError(). Zrzut ekranu zostanie zapisany w katalogu terminal_dir\experts\file lub podczas testów strategii w terminal_dir\test\file.

Składnia

bool WindowScreenShot( string filename, int size_x, int size_y, int
start_bar=-1, int chart_scale=-1, int chart_mode=-1 )
Parametry
filename – nazwa zapisywanego pliku gif
size_x – szerokość zrzutu ekranu w pikselach
size_y – wysokość zrzutu ekranu w pikselach
start_bar – indeks pierwszego widocznego słupka od którego ma nastąpić
zrzut ekranu. Jeśli podamy wartość 0 to zrzut ekranu nastąpi od aktualnie
widocznego słupka wykresu. Jeśli nie podamy wartości lub podamy mniejszą od
0 to zrzut ekranu nastąpi od końca wykresu.
chart_scale – skala pozioma wykresu z zakresu od 0 do 5. Jeśli nie podamy
wartości lub podamy mniejszą od 0 to zostanie pobrana aktualna skala
wykresu.
chart_mode – tryb wyświetlania wykresu:
CHART_BAR (0) – wykres typu słupki,
CHART_CANDLE (1) – wykres typu świeczki,
CHART_LINE (2) – wykres typu linie.
Jeśli nie podamy żadnej wartości lub mniejszą od 0 wówczas przyjęty
zostanie aktualny typ wykresu.
Wartość zwracana
true – jeśli funkcja zakończyła się powodzeniem
false – jeśli funkcja zakończyła się niepowodzeniem

Przykład:

int blad=0;
if( IsTesting() && ExtTradesCounter<TradesTotal())
{
if( !WindowScreenShot("shots\\tester"+ExtShotsCounter+".gif",640,480))
blad=GetLastError();
else ExtShotsCounter++;
ExtTradesCounter=TradesTotal();
}

HideTestIndicators

Funkcja ustala widoczność wskaźnika wywoływanego przez EA podczas testów jeśli zakończymy testowanie naszej strategii i wybierzemy „Otwórz wykres” pojawi nam wykres z punktami otwarcia zamknięcia pozycji oraz wykresy wskaźników. Aby ukryć wykresy wskaźników korzystamy z funkcji HideTestIndicators(). Należy pamiętać, że funkcja może być wykorzystywana tylko w EA które korzystają z wyliczeń wskaźników.

Składnia

void HideTestIndicators( bool hide )
Parametry
hide – wartość true jeśli chcemy ukryć wskaźnik na wykresie lub false jeśli
chcemy aby był widoczny na wykresie EA
Wartość zwracana
brak

Przykład:

HideTestIndicators(true);
MaC = iMA(NULL,0,56,0,MODE_EMA,PRICE_CLOSE,0);
MaP = iMA(NULL,0,56,0,MODE_EMA,PRICE_CLOSE,1);
HideTestIndicators(false);__

 

Niniejszy materiał, przygotowany przez DM BOŚ S.A. ma charakter wyłącznie informacyjny, prezentowany jest w celach edukacyjnych i nie stanowi porady prawnej oraz nie jest rekomendacją osobistą w ramach świadczenia usługi doradztwa inwestycyjnego zgodnie z przepisami prawa. DM BOŚ S.A. nie udziela gwarancji dokładności, aktualności, oraz kompletności niniejszych informacji. Zaleca się przeprowadzenie we własnym zakresie niezależnego przeglądu informacji z niniejszego materiału.

1/1