Czym jest kompilacja
Co dokładnie robi klawisz F7, czym różni się plik .mq5 od .ex5 i jak czytać komunikaty kompilatora.
Sprawdzone 2026-08-02.
Kod, który piszesz, to tekst. Terminal tekstu nie rozumie — potrzebuje wersji przetłumaczonej na postać, którą potrafi wykonać. Tym tłumaczeniem jest kompilacja.
Dwa pliki
| Plik | Co to jest |
|---|---|
.mq5 | twój kod źródłowy, zwykły tekst, można otworzyć w notatniku |
.ex5 | wynik kompilacji, plik wykonywalny, nieczytelny dla człowieka |
.mqh | plik nagłówkowy, kod dołączany do innych plików, sam się nie kompiluje |
W Nawigatorze terminala widzisz programy, dla których istnieje .ex5. Sam plik .mq5 bez skompilowanej wersji jest dla platformy niewidoczny — i to odpowiada na pytanie „napisałem kod, dlaczego go nie ma na liście".
Jak skompilować
W MetaEditorze: klawisz F7 albo przycisk Kompiluj. Wynik pojawia się na dole okna, w zakładce Błędy.
'PierwszyKrok.mq5' PierwszyKrok.mq5 1 1
Result: 0 errors, 0 warnings, 132 msec elapsedZero błędów znaczy, że powstał plik .ex5 i program jest gotowy do uruchomienia. Nie znaczy, że robi to, co chciałeś — kompilator sprawdza poprawność językową, nie sens.
Błędy i ostrzeżenia
Błąd (error) zatrzymuje kompilację. Plik .ex5 nie powstaje albo zostaje stara wersja, co bywa mylące: uruchamiasz program i widzisz zachowanie sprzed poprawki, bo nowa się nie zbudowała.
Ostrzeżenie (warning) nie zatrzymuje niczego, ale prawie zawsze wskazuje prawdziwy problem. Najczęstsze w MQL5:
possible loss of data due to type conversion— przypisujeszlongdointalbodoubledoint. W kodzie handlowym to potrafi uciąć część wartości. Rzutuj jawnie:(int)SymbolInfoInteger(...).declaration of 'x' hides global declaration— zmienna lokalna nazywa się tak samo jak globalna. Kod użyje lokalnej, co rzadko jest zamiarem.return value of 'CopyBuffer' should be checked— wywołujesz funkcję i ignorujesz to, co zwróciła. W MQL5 ignorowanie wyniku funkcji handlowej jest jednym z najkosztowniejszych nawyków.
Ustaw sobie zasadę: zero ostrzeżeń tak samo jak zero błędów. Kod z dwudziestoma ostrzeżeniami to kod, w którym dwudziesta pierwsza, ta ważna, przepadnie.
Gdzie ląduje wynik
Plik .ex5 powstaje obok źródła. Skrypt z MQL5\Scripts\ daje .ex5 w MQL5\Scripts\, ekspert w MQL5\Experts\. Nie trzeba niczego przenosić ani kopiować.
Skąd biorą się błędy, których nie rozumiesz
Kompilator MQL5 podaje numer linii, ale przyczyna często siedzi wyżej. Typowe:
unexpected tokenw losowym miejscu — zwykle brakuje średnika albo klamry kilka linii wcześniej.'X' - undeclared identifier— literówka w nazwie zmiennej lub funkcji albo użycie czegoś, co istnieje tylko w MQL4, jakAskczyPoint.wrong parameters count— funkcja przyjmuje inną liczbę argumentów, niż podałeś. Częste przy kodzie przepisywanym z MQL4, gdzie na przykładiMAmiało jeden argument więcej.
Nasz przegląd kodu wyłapuje część z tych rzeczy zanim odpalisz kompilator, ale ostatnie słowo zawsze ma MetaEditor.
Kod, który nie skompiluje się starszym edytorem
Funkcje dodane w nowszych wersjach platformy nie istnieją w starszych, a preprocesor MQL5 nie pozwala tego obejść warunkowo. Objawia się to komunikatem o nieznanym identyfikatorze u kogoś, kto ma starszy terminal — opisaliśmy to przy buildach i zgodności.
Debugger
MetaEditor ma debugger uruchamiany klawiszem F5: możesz zatrzymać program w wybranej linii i podejrzeć wartości zmiennych. Działa zarówno na danych historycznych, jak i na bieżących. To narzędzie, po które warto sięgnąć, zanim zaczniesz obstawiać przyczynę przez wstawianie kolejnych Print.
Następny krok: pierwszy skrypt.