Przejdź do treści
MQL5 · MetaTrader 5 · po polsku
kod odczarowany

MQL5 / Kurs / Lekcja 1 z 7

Pierwszy skrypt w MetaEditorze

Gdzie MetaTrader trzyma pliki, czym różni się skrypt od eksperta i dlaczego twój kod nie pojawia się w Nawigatorze.

1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.

Ta lekcja zakłada, że masz zainstalowanego MetaTradera 5 i wiesz, czym jest kompilacja. Jeśli nie — zacznij od czym jest MQL5 i reszty działu Od zera — zajmie kwadrans.

Trzy rodzaje programów

MQL5 zna trzy typy programów wykonywalnych i mylenie ich to pierwsza rzecz, która blokuje początkujących.

TypKiedy się uruchamiaDo czego
Skryptraz, po przeciągnięciu na wykresjednorazowa operacja
Wskaźnikprzy każdym przeliczeniu wykresurysowanie na wykresie
Ekspertprzy każdym ticku i zdarzeniupodejmowanie decyzji, handel

Skrypt kończy się sam, kiedy jego funkcja OnStart dobiegnie końca. Ekspert siedzi na wykresie i czeka na kolejne zdarzenia. Zaczniemy od skryptu, bo nie wymaga zrozumienia cyklu życia — po prostu robi jedną rzecz i znika.

Gdzie mieszkają pliki

To jest miejsce, w którym gubi się najwięcej ludzi. MetaTrader nie widzi plików leżących gdziekolwiek na dysku — widzi tylko to, co jest w jego katalogu danych.

Katalog danych otwierasz z terminala: Plik → Otwórz katalog danych. W środku jest folder MQL5, a w nim:

MQL5\
  Experts\      eksperci (.mq5)
  Indicators\   wskaźniki
  Scripts\      skrypty
  Include\      pliki nagłówkowe (.mqh)
  Libraries\    biblioteki
  Files\        pliki danych, do których kod ma dostęp
  Logs\         dzienniki

Kod

Nowy plik tworzysz przez Plik → Nowy → Skrypt. Kreator dopisze szkielet; poniżej jest to samo, tylko obrane z tego, czego na razie nie potrzebujesz.

MQL5\Scripts\PierwszyKrok.mq5
//+------------------------------------------------------------------+
//| Wypisuje aktualną cenę symbolu, na którego wykresie go uruchomiono |
//+------------------------------------------------------------------+
#property script_show_inputs

input int LiczbaPowtorzen = 3;   // ile razy wypisać cenę

void OnStart()
  {
   MqlTick tick;

   for(int i = 0; i < LiczbaPowtorzen; i++)
     {
      if(!SymbolInfoTick(_Symbol, tick))
        {
         Print("Nie udało się pobrać ceny. Kod błędu: ", GetLastError());
         return;
        }

      PrintFormat("%s  bid=%.*f  ask=%.*f  spread=%d pkt",
                  _Symbol, _Digits, tick.bid, _Digits, tick.ask,
                  (int)MathRound((tick.ask - tick.bid) / _Point));

      Sleep(1000);
     }
  }

Kompilujesz klawiszem F7. Na dole, w zakładce Błędy, powinno pojawić się 0 errors, 0 warnings. Potem przeciągasz skrypt z Nawigatora na wykres.

Gdzie zobaczyć wynik

Print i PrintFormat nie piszą na wykresie. Ich wynik ląduje w terminalu, w oknie Skrzynka narzędziowa (Ctrl+T), w zakładce Eksperci. Zakładka Dziennik obok zawiera komunikaty samego terminala — połączenie z serwerem, autoryzacja — i tam twoich wpisów nie będzie.

2026-08-02 11:04:18.221  PierwszyKrok (EURUSD,H1)  EURUSD  bid=1.09312  ask=1.09325  spread=13 pkt

Zadanie

Zmień skrypt tak, żeby przed pętlą wypisał trzy właściwości symbolu: minimalny wolumen zlecenia, krok wolumenu i rozmiar kontraktu. Wszystkie trzy pobierzesz przez SymbolInfoDouble ze stałymi SYMBOL_VOLUME_MIN, SYMBOL_VOLUME_STEP i SYMBOL_TRADE_CONTRACT_SIZE. Uruchom skrypt na wykresie pary walutowej, a potem na wykresie indeksu albo akcji i porównaj wyniki — to te różnice sprawiają, że kod z internetu działa u autora, a u ciebie nie.