Podstawy MetaQuotes Language 4-Funkcje-Wywoływanie funkcji w Forex-Słownik poleceń MQL4 - bossa.pl
2017.12.17, godz. 03:28

Wywoływanie funkcji

Wywołanie funkcji, czyli uruchomienie bloku wykonywalnego funkcji jest możliwe wówczas, gdy wcześniej zadeklarujemy oraz zdefiniujemy funkcję. Funkcja jest tak zwanym operatorem złożonym.

Deklaracja funkcji polega na określeniu nazwy funkcji, ilości oraz typu przekazywanych parametrów do funkcji oddzielonych średnikami (,), które zamknięte są w nawiasach zwykłych (()) oraz typu wartości zwracanej przez funkcję. Definicja funkcji polega na umieszczeniu w bloku wykonywalnym funkcji ograniczonym nawiasami klamrowymi ({}) instrukcji, operatorów, obliczeń, które ma wykonać funkcja.

W języku MQL4 tworząc EA, wskaźniki, skrypty możemy jednocześnie deklarować i definiować funkcję, ale istnieje też możliwość rozdzielenia tego poprzez specjalnie do tego opracowane, tak zwane pliki nagłówkowe mające rozszerzenie (mqh) wówczas w plikach nagłówkowych umieszczamy tylko deklaracje funkcji, a w plikach EA, wskaźników, skryptów, bibliotek dokonujemy definicji funkcji.
Parametry mogą być przekazywane do funkcji przez wartość lub przez referencje. Przekazanie przez wartość oznacza, że funkcja nie ma możliwości modyfikacji tych parametrów w bloku wykonywalnym funkcji, w rzeczywistości funkcja pobiera kopie parametrów, natomiast przekazują parametr przez referencje funkcja może zmodyfikować ten parametr inaczej mówiąc funkcja operuje na rzeczywistej zmiennej, a nie na jej kopi. Aby przekazać parametry przez referencje wystarczy poprzedzić je znakiem ampersand (&). Maksymalna ilość parametrów, które mogę być przekazywane do funkcji wynosi 64.

 

 

Przykład:

// Deklaracja funkcji pobierającej parametry przez wartość i nie zwracającej żadnej wartości void nazwa_funkcj(int x1, int x2, int x3);


// Deklaracja i definicja funkcji pobierającej parametry przez wartość i nie zwracającej żadnej wartości void nazwa_funkcj(int x1, int x2, int x3)
{
Print(„Jestem funkcją”);
}


// Deklaracja i definicja funkcja zwracającej wartość integer, parametry przekazywane przez wartość

int suma(int x1, int x2, int x3)
{
return(x1+x3+x3);
}


// Deklaracja i definicja funkcja zwracającej wartość void, parametry przekazywane przez wartość oraz parametr x4 przez referencje, w którym będzie wynik sumowania
void suma(int x1, int x2, int x3, int & x4)
{
x4 = x1+x3+x3;
}


// Deklaracja i definicja funkcji parametry przekazywane przez wartość typu double oraz wartość zwracana typu double double mnozenie(double x1, double x2, double x3, double & x4[])
{
x4[1] = x1*x2*x3; // wyniku umieszczamy w pierwszym elemencie tablicy
return( x1*x2*x3 );
}

 


Funkcje możemy opcjonalnie wywoływać z parametrami domyślnymi, co daje nam możliwość wywoływania funkcji z różną liczbą parametrów, przy czym parametry nieokreślone będą przyjmowały wartości domyślne. Ważne jest, aby parametry funkcji, które mają być domyślne były umieszczone na końcu definicji parametru wywołania funkcji i nie były oddzielone parametrami niedomyślnymi.

 

Przykład:

// Deklaracja funkcji z parametrami domyślnymi
void funkcjaPI(double init, double s = 0.0001, int level = 10);

// Możliwe kombinacje wywołanie funkcji
funkcjaPI() // błąd, musi być podany parametr init
funkcjaPI(3.14, 10) // błąd, drugi parametr pominięty (uwaga funkcja
zadziała, ale zmienna s przyjmie wartość 10)
funkcjaPI(3.14, 0.0002) // prawidłowe wywołanie z dwoma parametrami
funkcjaPI(3.14, 0.0002, 10); // prawidłowe wywołanie z trzema parametrami
funkcjaPI(3.14, 0.0002, 10); // prawidłowe wywołanie z trzema parametrami

 

bos bank logo
Grupa kapitałowa
Nagroda specjalna i tytuł BROKERA ROKU 2015
Nagroda specjalna i tytuł BROKERA
ROKU 2015, przyznane przez GPW.

logo_FMR2017aktualny.jpg Finansowa Marka Roku: wyrazista marka promująca edukację, umocnienie pozycji lidera rynku kontraktów terminowych.

nagroda najlepszy dom maklerski 2015
Najwyższa ocena dla DM BOŚ w ankiecie czytelników Gazety Giełdy Parkiet 2015r.