O!kurra
Rozdział 21
● Otwarte

Troubleshooting

Wersja narzędzia: O!kurra Capital Defense EA 2.00

Filozofia tego rozdziału. Większość „problemów” z O!kurra to nie błędy narzędzia, lecz konfiguracja działająca dokładnie tak, jak ją ustawiono — tyle że inaczej, niż się spodziewałeś. Dlatego przy każdym objawie najpierw pytamy: czy to na pewno awaria, czy zaprojektowane zachowanie? Zaskakująco często to drugie.

Rozbieżność instrukcji z rzeczywistością? Jeśli w trakcie diagnozy zauważysz, że instrukcja, odpowiedź chatbota i faktyczne zachowanie EA mówią różne rzeczy — zgłoś to na [email protected] (rozdział 1.9). Narzędzia rozwijają się dynamicznie i takie zgłoszenia pomagają nam trzymać dokumentację w zgodzie z kodem.


Spis treści

21.1 Jak diagnozować — uniwersalne zasady 21.2 Instalacja i uruchomienie 21.3 Licencja (klucz + weryfikacja online) 21.4 Brak sygnałów 21.5 Pendingi się nie realizują 21.6 Zarządzanie pozycją (BE / Trailing) 21.7 BEa zachowuje się nieoczekiwanie 21.8 Strażnicy konta (DPL / EG / Basket Max Loss / PT) 21.9 Trading Hours 21.10 Cross-button Triggers 21.11 Panel EA 21.12 Wydajność


21.1 Jak diagnozować — uniwersalne zasady

Zanim sięgniesz do konkretnego objawu — kilka zasad, które rozwiązują większość przypadków.

Zacznij od logów. Zakładka Experts w MetaTraderze (Ctrl+T → zakładka Experts) pokazuje komunikaty EA — od inicjalizacji, przez powody odrzucania sygnałów, po błędy handlowe. Większość problemów zostawia ślad w logach. Czerwone linie, alerty, ostrzeżenia o blokujących filtrach — to pierwsze miejsce.

Sprawdź panel. Status Block pokazuje bieżący stan; tryby info [B/G/S/T/C/H] (rozdział 8) dają wgląd „pod spód” — stan filtrów (G), godziny handlu (T), mapę triggerów (C). Problem często widać natychmiast w odpowiednim trybie.

Włącz T. Levels i T. History. Wizualizacja (rozdział 19) pokazuje, gdzie i w jakim kontekście EA otwierał i zamykał pozycje. Nieintuicyjne zachowanie często staje się oczywiste na wykresie.

Eliminuj zmienne pojedynczo. Gdy coś nie działa — zredukuj do minimum (jeden button, defaulty), zobacz, czy problem znika, i dodawaj składniki po jednym. Klasyczna bisekcja — sprawdza się zawsze.

Restartuj EA, potem MT5. Część problemów to stan, który znika po przeładowaniu. Najpierw usuń EA z wykresu i wrzuć ponownie; jeśli nie pomaga — restart całej platformy.

Trzymaj stabilne .set. Każdą działającą konfigurację zapisz (rozdział 7). Gdy bieżąca zaczyna się dziwnie zachowywać, porównaj z ostatnią stabilną, by znaleźć różnicę.

Wszystko na demie. Pierwsze testy zawsze na koncie demonstracyjnym — część zachowań zależy od brokera i typu konta.

Gdy nic nie pomaga — kontakt. Wejdź na okurra.com. W zgłoszeniu podaj: instrument i interwał, opis problemu, zrzut zakładki Experts z momentu problemu, screenshot panelu i wykresu. Im więcej kontekstu, tym szybsza diagnoza.


21.2 Instalacja i uruchomienie

Narzędzie nie pojawia się w Navigatorze

Objaw: wgrałeś plik, otworzyłeś MT5, w Navigator (Ctrl+N) brak O!kurra (pod Expert Advisors dla EA albo Indicators dla paneli/wskaźników).

  • Zła lokalizacja pliku. EA musi leżeć w MQL5\Experts\ (zalecany podfolder MQL5\Experts\OKU\), wskaźniki w MQL5\Indicators\OKU\. Otwórz folder przez File → Open Data Folder i sprawdź ścieżkę (rozdział 3).
  • Brak odświeżenia. Po wklejeniu plików kliknij prawym na Navigator → Refresh, albo zrestartuj MT5.
  • Plik uszkodzony przy transferze. Pobierz ponownie z okurra.com i wklej.

Błąd 560 — “newer unsupported version” (za stary terminal)

Objaw: narzędzie nie ładuje się na wykres (znika zaraz po wrzuceniu albo w ogóle nie startuje), a w zakładce Journal / Experts pojawia się błąd 560 albo komunikat ”‘…ex5’ has newer unsupported version, please update your client terminal”. Typowy moment: zaraz po podmianie plików na nowsze wydanie.

  • Przyczyna: pliki .ex5 tego wydania są skompilowane na nowszym buildzie MetaTradera niż Twój terminal. To ograniczenie platformy — nie uszkodzenie plików ani błąd konfiguracji. Wymagany minimalny build jest podany przy przycisku pobierania na okurra.com; build swojego terminala sprawdzisz w Help → About.
  • Rozwiązanie: zaktualizuj MetaTradera 5 — broker zawsze udostępnia aktualny build; najczęściej wystarczy zamknąć terminal i uruchomić go ponownie przy włączonych aktualizacjach automatycznych. Po aktualizacji zrestartuj platformę i sprawdź Navigator.
  • Jeśli nadpisałeś działającą instalację plikami nowego wydania na zbyt starym terminalu — razem z nowymi plikami przestała działać także dotychczasowa konfiguracja (stare pliki zostały zastąpione). Najszybszy powrót do pracy to aktualizacja platformy. Alternatywnie wgraj ponownie pliki wcześniejszego wydania — wspierane jest bieżące wydanie i jedno wcześniejsze (N-1).

Panel EA nie pojawia się po starcie

Objaw: EA wystartował (uśmiechnięta buźka w rogu wykresu), ale brak panelu.

  • Panel poza obszarem wykresu. Po zmianie rozdzielczości monitora albo wcześniejszym przeciągnięciu panel bywa poza widokiem. Usuń EA i wrzuć ponownie — wróci do pozycji domyślnej.
  • Panel sterowania wyłączony w Inputs. Za widoczność panelu sterowania (buttony, akcje, status) odpowiada pole Show interactive control panel (parametr UI_ShowControlPanel, grupa Interactive Control Panel). Uwaga: to inny przełącznik niż Show info panel (Global_ShowStatsPanel) — tamten steruje tylko rozszerzonym panelem informacyjnym [i], nie panelem sterowania. Sprawdź, czy poprzedni preset nie wyłączył pierwszego z nich.
  • Wszystkie sekcje ukryte. Jeśli ukryłeś wszystkie sekcje panelu, zostaje sama belka. Włącz przynajmniej Strategy Buttons (rozdział 8).

Błędy przy próbie otwarcia pozycji

Objaw: w Experts czerwone błędy z kodami MT5 (reject, invalid price itp.).

  • Algo Trading wyłączony. Zielony przycisk Algo Trading w pasku MT5 musi być włączony; przy wrzucaniu EA w zakładce Common zaznacz Allow Algorithmic Trading.
  • Konto nie zezwala na auto-handel. Część kont (niektóre prop/demo) blokuje algo. Sprawdź u brokera.
  • Za mało środków (margin). Nawet najmniejszy lot wymaga zabezpieczenia. Sprawdź equity konta.
  • Symbol z sufiksem. Złoto bywa jako XAUUSD, XAUUSDm, XAUUSD.r itd. Upewnij się, na jakim dokładnie symbolu pracujesz.

21.3 Licencja (klucz + weryfikacja online)

O!kurra używa klucza licencyjnego w formacie OKUR-XXXX-XXXX-XXXX-XXXX, weryfikowanego online przez połączenie do okurra.com (rozdział 3). Klucz wpisujesz w Inputs EA. Weryfikacja działa w tle (co kilka minut); krótkie przerwy w sieci są tolerowane.

Alert o braku ważnej licencji / EA nie generuje nowych pozycji

Objaw: EA startuje, ale nie wystawia nowych sygnałów; w logach komunikat o licencji.

  1. Sprawdź whitelist WebRequest. Tools → Options → Expert Advisors → Allow WebRequest for listed URL musi zawierać https://okurra.com. Bez tego EA nie może zweryfikować klucza (rozdział 3).
  2. Sprawdź klucz. Czy wpisany dokładnie (format OKUR-...), bez spacji, ważny.
  3. Sprawdź subskrypcję EA na okurra.com — czy aktywna, czy płatność przeszła. Subskrypcja dotyczy wyłącznie EA (rozdział 3); wszystkie wskaźniki — panele (OkurraButton/OkurraGlobal) i towarzyszące — są bezpłatne i licencja ich nie dotyczy.
  4. Sprawdź połączenie internetowe. Weryfikacja wymaga dostępu do okurra.com.
  5. Zegar komputera NIE blokuje weryfikacji. Weryfikacja online nie jest czuła na zegar — źle ustawiona strefa czasowa ani rozjechany czas maszyny nie odrzucają ważnej licencji (bramka czasowa została usunięta z serwera 2026-07-25; wcześniejsze wydania tej instrukcji opisywały ją jako aktywną). Jeśli EA działa na jednym komputerze, a na drugim nie — najczęściej na VPS — sprawdź na tej niedziałającej maszynie kolejno: whitelist WebRequest (punkt 1), czy numer konta MT5 tej maszyny jest przypisany do klucza w panelu okurra.com (punkt 3) i czy maszyna ma połączenie z internetem (punkt 4). Poprawnie ustawiony zegar warto mieć niezależnie (porządek w logach i raportach), ale to nie on decyduje o weryfikacji.
  6. Restartuj EA po poprawkach, by ponowił weryfikację.

Łagodne wygaszenie — to nie awaria. Gdy subskrypcja wygaśnie, EA nie tnie pozycji z dnia na dzień. Blokowane są tylko nowe sygnały; istniejące pozycje dalej są pilnowane — dochodzą do SL/TP, działa Break Even i Trailing, działa zamykanie ręczne i reakcje na przeciwny sygnał. Zlecenia oczekujące (przyszłe wejścia) są usuwane; wyjątkiem jest koszyk pod uzbrojoną obroną BEa — obrona może dalej dokładać pozycje, aż domknie koszyk do zera (rozdział 12). EA staje się stopniowo bezczynny po domknięciu koszyka. To celowy, łagodny mechanizm (rozdział 3).

Uwaga o demie. W trybie nauki/demo licencja bywa wyłączona — wtedy ten rozdział Cię nie dotyczy. Opisujemy stan produktowy.

Wydanie ma też własną datę ważności. Niezależnie od subskrypcji każda dystrybuowana wersja narzędzi ma wbudowany termin ważności. EA sprawdza go raz dziennie w trakcie pracy (nie tylko przy starcie); po terminie przechodzi w ten sam łagodny tryb opieki co przy wygaśnięciu subskrypcji — nie otwiera nowych pozycji, kasuje zlecenia oczekujące, ale dalej prowadzi otwarte do ich zaplanowanego zamknięcia (obrona BEa może domknąć koszyk). Wskaźniki i panele po terminie pokazują alert i same schodzą z wykresu. Rozwiązanie: pobierz aktualne wydanie z okurra.com.


21.4 Brak sygnałów

Button jest włączony (kolorowy), ale nie powstają żadne pendingi

To najczęstsze zgłoszenie — i prawie zawsze przyczyną jest jakiś warunek blokujący, nie awaria. Przejdź kolejno (graf decyzyjny niżej):

  1. Czy EA jest w ogóle włączony? Od wydania 1.27 panel ma własny wyłącznik (rozdział 8). Przy OFF przycisk w górnym rzędzie jest czerwony, a tytuł panelu brzmi „O!kurra - EA OFF” — nic nowego nie wystartuje, choć otwarte pozycje są nadal pilnowane.
  2. Algo Trading aktywny? (sekcja 21.2).
  3. Trading Hours. Jeśli godziny handlu są włączone, button może być poza oknem. Tryb [T] pokazuje aktualne okno albo „no trading” (rozdział 16). Pamiętaj: czas brokera, nie lokalny.
  4. Filtry. Tryb [G] pokazuje stan filtrów globalnych. Jeśli MMD jest bearish, a button to BUY z włączonym filtrem MMD — wszystkie sygnały BUY blokowane (rozdział 10). To samo dla SAR / SR / OKUR Filter.
  5. Activation Zone. Jeśli button ma „Active only inside Activation Zone”, a strefy nie ma albo cena jest poza nią — nie wejdzie (rozdział 11). Sprawdź, czy strefa istnieje i nie wygasła.
  6. Próg OKUR. Threshold 180 to bardzo głęboko — w spokojnym rynku oscylator może nie dotrzeć godzinami. Zmniejsz (np. do 100) i zobacz, czy ruszają sygnały (rozdział 9).
  7. Signal Band. Jeśli okno ważności (Signal Band) zamknęło się, button czeka na nowe uzbrojenie w strefie. Tymczasowo wyłącz Signal Band, by sprawdzić (rozdział 9).
  8. Logi. Włączone logowanie pokaże powód odrzucenia każdego sygnału — to zwykle rozwiewa wszystkie wątpliwości.
drzewo decyzyjne „button włączony, ale brak sygnałów”. Pionowy przepływ pytań tak/nie, każdy węzeł = jedno sprawdzenie, gałąź „nie/blokuje” prowadzi do rozwiązania, gałąź „ok” do następnego pytania. Kolejność węzłów: (1) Algo Trading włączony? → nie: włącz w pasku MT5 + Common; (2) W oknie Trading Hours? (tryb T) → nie: czekaj na okno / sprawdź czas brokera; (3) Filtry przepuszczają? (tryb G) → nie: filtr blokuje (np. MMD bearish vs BUY) — czekaj na zgodność lub poluzuj; (4) Cena w Activation Zone? → nie: strefa nieaktywna/cena poza — popraw strefę; (5) Próg OKUR osiągalny? → nie: Threshold za głęboki — zmniejsz; (6) Signal Band otwarte? → nie: okno ważności zamknięte — wyłącz Band do testu; na końcu zielony węzeł „sygnały powinny się pojawić — sprawdź logi Experts dla pewności”. Podpis: większość „braków sygnału” to warunek blokujący, nie awaria — przejdź gałęzie po kolei
Rys. 21.1 — drzewo decyzyjne „button włączony, ale brak sygnałów”. Pionowy przepływ pytań ta

Button sam się wyłączył albo włączył, choć nikt nie klikał

Od wydania 1.27 stan buttona zmienia nie tylko Twoja ręka i wyzwalacze między buttonami. Sprawdź po kolei:

  • Czujnik ruchu ceny (rozdział 18). Button mógł zostać wyłączony przez czujnik, do którego jest zapisany w polu „wyłącza mnie”, albo włączony przez ten w polu „włącza mnie”. W dzienniku szukaj linii [PM N] fired: — obok jest wypisane, na które buttony czujnik zadziałał. Fabrycznie wszystkie czujniki są wyłączone, więc dotyczy to tylko konfiguracji, w której ktoś je świadomie ustawił.
  • Cykl jednorazowy (§9.13). Jeśli button ma włączone „wyłącz mnie, gdy moje pozycje się zamkną”, to po domknięciu ostatniej pozycji wygasza się sam — i to jest zachowanie zamierzone, nie awaria.
  • Rolowanie dzienne. O godzinie resetu dnia EA przywraca buttonom stan „Initial Enabled” — button włączony wieczorem ręcznie może rano wrócić do wyłączonego (i odwrotnie). Rozdział 14. Wyjątek: przy wyłączonym EA przywracanie nie następuje (rozdział 8).
  • Strażnicy konta. Dzienny limit, Equity Guard i Profit Target przy zadziałaniu wyłączają buttony — to najczęstsza przyczyna „rano wszystko było wyłączone”. Rozdziały 14 i 15.

Sygnały powstają, ale prawie wszystkie w stratę

  • Próg za płytki — sygnały na „byle jakim” cofnięciu, nie na realnych ekstremach. Zwiększ głębokość (np. 100 → 150).
  • Zły kierunek względem rynku — instrument w mocnym trendzie, a button mean-reversion „łapie spadający nóż”. Sprawdź MMD/SAR na M15+; jeśli przeciwne — wyłącz tę stronę.
  • Trigger za czuły — Movement Correction 5 odpala na pierwszym mikro-cofnięciu. Zwiększ do 10–15.
  • Brak filtra — każdy sygnał jest „ślepy”. Włącz filtr globalny MMD (rozdział 10), by ograniczyć wejścia do trendu.

21.5 Pendingi się nie realizują

Widać linie pendingów, ale nigdy nie powstają pozycje

  • Odległość pendingu za duża. Pending stoi za daleko od ceny i nie zostaje dotknięty w sensownym czasie. Zmniejsz „Pending Stop/Limit Distance” (rozdział 9).
  • Spread brokera. W określonych godzinach (otwarcie sesji, publikacje, weekend) spread rośnie; pending realizuje się dopiero, gdy odpowiednia strona ceny go dotknie. Sprawdź bieżący spread.

Pending zniknął, ale pozycja nie powstała

  • Za mało środków (margin). Log zwykle pokazuje „Not enough money”. Zmniejsz lot albo dolicz środki.
  • Spread za szeroki w chwili realizacji — broker odrzuca zlecenie (invalid price). Typowe wokół publikacji danych.
  • Limit pozycji u brokera (max jednoczesnych pozycji per konto/symbol). Sprawdź u brokera.

Pozycja powstała z innym SL/TP, niż ustawiono

  • Minimalny stop level brokera. SL/TP nie może być bliżej ceny niż próg brokera. Jeśli Twój SL jest za blisko, broker go odrzuca/modyfikuje. Sprawdź: prawym na symbol → Specification → Stops level.

Pendingi u brokera zniknęły po restarcie EA

  • To zaprojektowane zachowanie, nie awaria (od EA 1.11). Przy realnych pendingach (wyłączona wirtualizacja) EA na starcie kasuje swoje zlecenia oczekujące pozostałe po poprzednim uruchomieniu — pending „osierocony” przez restart mógłby zrealizować się dni później w innym rynku i otworzyć pozycję bez ważnego kontekstu. W logu szukaj znacznika [StalePendings]. Świeże pendingi z bieżącej sesji nie są ruszane; nowe powstaną z bieżących sygnałów buttonów. Szczegóły: rozdział 9.7.

21.6 Zarządzanie pozycją (BE / Trailing)

Uwaga na dwa poziomy. Break Even i Trailing z rozdziału 9 działają per pojedyncza pozycja. BEa z rozdziału 12 działa na cały koszyk kierunku. To różne mechanizmy — nie myl ich.

Break Even (per pozycja) nie przesuwa SL

  • Pozycja nie osiągnęła progu startu BE. BE uzbraja się dopiero, gdy pozycja jest w plusie o „Break Even Start”. Sprawdź wartość (rozdział 9).
  • Brak SL do modyfikacji. Jeśli pozycja powstała bez SL, nie ma czego przesuwać — ustaw sensowny Stop Loss per button.
  • Limit brokera (stops / freeze level). U niektórych brokerów modyfikacja SL zbyt blisko ceny była odrzucana i BE „nie działał” — niespójnie między kontami. EA dociska teraz SL do minimalnego dystansu brokera, a gdy i to nie przejdzie (cena w strefie zamrożenia) — zamyka pozycję awaryjnie po rynku i podnosi alert (popup + log). Jeśli widujesz takie alerty, sprawdź stops/freeze level instrumentu (rozdział 9).

Trailing Stop nie podąża za ceną

  • Cena nie osiągnęła progu startu Trailing. Trailing rusza dopiero po przekroczeniu „Trailing Start” (rozdział 9).
  • BEa zamknął koszyk wcześniej. BEa zarządza całym kierunkiem niezależnie; jeśli domknie koszyk, zanim Trailing się uzbroi — to naturalne, nie błąd.

Pozycja nie zamyka się na wirtualnym (stealth) SL

  • Dawny problem — już naprawiony. Wirtualny SL/TP jest teraz pilnowany niezawodnie na każdym typie konta (rozpoznawanie pozycji po trwałym ID). Jeśli na starszej wersji „cena dochodziła do SL, a pozycja się nie zamykała” — zaktualizuj EA (rozdział 9).
  • EA musi być online. Wirtualny SL działa tylko przy uruchomionym, połączonym EA — przy zamkniętym terminalu nie zadziała (nie ma go u brokera). Chcesz ochrony offline → użyj realnego SL (wyłącz tryb wirtualny w OkurraGlobal).
  • Alert osierocenia. Popup „pozycja zniknęła bez zamknięcia / ochrona utracona” oznacza anomalię po stronie brokera — sprawdź konto ręcznie (rozdział 9).

Alert „PROTECTION OFFLINE” — handel wyłączony po stronie terminala

Objaw: popup zaczynający się od „PROTECTION OFFLINE”, powtarzany co ok. minutę, mówiący że EA nie może zamykać pozycji ani przesuwać stopów.

To nie broker odrzuca zlecenia — to Twój terminal ma wyłączony handel. Zanim EA wyśle jakiekolwiek zamknięcie lub modyfikację stopa, sprawdza dwa przełączniki: przycisk AutoTrading na pasku MT5 oraz zgodę „Allow Algo Trading” w ustawieniach tego EA. Gdy którykolwiek jest wyłączony, wszystkie mechanizmy ochronne stoją: wirtualny SL nie zamknie pozycji, Break Even nie przesunie stopa, Equity Guard i Close All nic nie wyślą. Pozycje zostają bez opieki, mimo że EA „działa” i rysuje panel.

Rozwiązanie: włącz AutoTrading (Ctrl+E lub przycisk na pasku) i sprawdź „Allow Algo Trading” we właściwościach EA. Alert zniknie, a mechanizmy natychmiast podejmą pracę. Jeśli AutoTrading wyłączył się „sam” — najczęściej to skrót klawiszowy naciśnięty przypadkiem albo restart terminala z innym profilem.

Ten alert celowo zastępuje dawną „burzę” komunikatów „Broker refused SL move… keep retrying” — jeden czytelny popup na minutę zamiast setek wpisów, i jednoznaczna diagnoza (terminal, nie broker).

Log „[CloseModel] ADAPTIVE: … switching to SYNC-first”

To nie błąd — to informacja. Przy modelu zamykania Adaptive (opcjonalnym — od EA 1.23 domyślny jest Auto z wyłączonym async, czyli zamknięcia synchroniczne; rozdział 5.5) EA wysyła zamknięcia asynchronicznie; jeśli broker nie domknie części pozycji za pierwszym razem, EA i tak dobija je synchronicznie (siatka bezpieczeństwa), a dodatkowo przełącza kolejne zamknięcia na tryb synchroniczny na czas cooldownu (domyślnie 30 min), po czym sam wraca do asynchronicznego. Ten wpis w logu dokumentuje właśnie to przełączenie. Jeśli pojawia się często, Twój broker słabo znosi zamknięcia asynchroniczne — rozważ „Close Model = 1 (Sync)” na stałe.

Alert „EA build … is older than this panel expects” — pomieszane wersje pakietu

Panel (OkurraButton lub OkurraGlobal) wykrył, że stan na dysku zapisał EA ze starszego wydania niż to, z którym panel został wydany — najczęściej dlatego, że przy aktualizacji podmieniono tylko część plików. Okurra jest wydawana zawsze kompletem (EA + oba panele + wskaźniki towarzyszące); mieszanie wydań może powodować ciche niezgodności w wymianie danych.

Rozwiązanie: podmień wszystkie pliki z jednej paczki wydania (rozdział 3), odśwież Navigator lub zrestartuj terminal. Komunikat pojawia się raz na sesję panelu i nie blokuje pracy — ale traktuj go jak czerwoną lampkę, nie ozdobę.

Dziennik aktywności i dziennik decyzji EA — „dlaczego (nie) wszedł?”

Do pytań typu „czemu EA nie otworzył pozycji?” albo „co dokładnie działo się o 14:32?” służy dziennik aktywności: przy włączonym polu Log EA activity + decision/execution CSV (off during optimization) (parametr Global_DiagActivity, grupa Global w Inputs, domyślnie włączony) EA dopisuje jedną linię na zdarzenie do pliku MQL5\Files\OKU\diag\ea_activity.log. Każdy wpis ma kategorię:

  • ENTRY — los sygnału wejścia (przepuszczony / którą bramką zablokowany; ten sam powód blokady logowany jest raz, do zmiany wyniku — plik nie puchnie),
  • TRADE — operacje na pozycjach (otwarcia, przesunięcia SL przez BE/Trailing itd.),
  • BASKET — okresowe migawki koszyka (liczby pozycji, PnL, stan EG/PT),
  • SAFETY — zdarzenia strażników (limity DPL, Equity Guard, Profit Target, kolizje Magic itd.),
  • EXEC — odmowy wykonania po stronie brokera, z kodem i słownym opisem przyczyny (od 1.28 — wcześniej surowe kody odmów były widoczne tylko w dzienniku Experts, a część odmów w ogóle nie zostawiała śladu).

Te same wpisy trafiają lustrzanie do zakładki Experts ze znacznikiem [OKU-ACT] — plik jest wygodny do przesłania/przejrzenia w całości, dziennik MT5 do podglądu na żywo.

Od wydania 1.28 ten sam przełącznik prowadzi też dziennik decyzji — maszynowy plik ea_decisions.csv w tym samym folderze: jedna linia = jedno zdarzenie w stałych kolumnach. Zapisywana jest każda decyzja wejściowa (sygnał, nazwa blokującej bramki, rejestracja wejścia) i każdy kontakt z brokerem — otwarcie, pending, zamknięcie, przesunięcie stopa — z kodem i opisem ewentualnej odmowy, ceną żądaną i wykonaną (czyli poślizgiem) oraz czasem odpowiedzi serwera w milisekundach. Plik celowo nie zawiera loginu ani salda. To jest materiał dowodowy w pytaniach „czy to EA podjęło złą decyzję, czy broker przytrzymał zlecenie?” — a w panelu klienta na okurra.com są narzędzia analityczne, które z wgranego pliku budują czytelny raport: rozkład czasów reakcji brokera po godzinach, poślizgi wykonania, mapę odmów i historię blokad bramek.

Dziennik działa również w Strategy Testerze (od 1.28) — wyłącza się wyłącznie podczas optymalizacji, żeby tysiące równoległych przebiegów nie produkowały plików bez czytelnika. Pliki z testera lądują we wspólnym folderze danych terminala (…\MetaQuotes\Terminal\Common\Files\OKU\diag\), z symbolem i numerem przebiegu w nazwie — każdy przebieg ma własną parę plików, nic się nie nadpisuje. Dzięki temu analizę backtestu i pracy na żywo robi się tym samym narzędziem i w tym samym formacie.

Osobny znacznik [OwnReg] w logach dotyczy rejestru „tylko moje” (adopcja/śledzenie własnych ticketów przy trybie Monitor Own Only — sekcja 21.8) — to inny mechanizm niż dziennik aktywności.


21.7 BEa zachowuje się nieoczekiwanie

BEa zamyka koszyk natychmiast po uzbrojeniu

Objaw: klikasz BEa BUY, koszyk od razu się zamyka.

To zaprojektowane zachowanie. W chwili uzbrojenia cena była już powyżej ważony break-even + BEa Gain. BEa działa natychmiast, gdy warunek jest spełniony. Rozwiązanie: uzbrajaj BEa wcześniej (zanim cena dojdzie do progu), albo zmniejsz BEa Gain (np. 30 → 10), by domykać bliżej zera.

Linia BEa „ucieka” gdy dochodzą nowe pozycje

To nie błąd. Ważony break-even zależy od wszystkich pozycji w koszyku; każda nowa pozycja zmienia średnią ważoną, a linia BEa = ważony BE + Gain, więc się przesuwa. Co więcej — to dobra wiadomość: im więcej pozycji w gorszych miejscach, tym niżej (BUY) ważony break-even, czyli próg realizacji jest coraz bliżej bieżącej ceny (rozdział 12).

Auto-Arm nie uzbroił BEa

  • EA był wyłączony w tym momencie. Auto-Arm działa tylko przy pracującym EA; przegapiony moment przepada.
  • Brak otwartych pozycji. Auto-Arm wstrzymuje uzbrojenie, gdy w kierunku wyzwalacza nie ma żadnej pozycji — nie ma czego chronić, więc BEa pozostaje rozbrojony (w logu: arming suppressed). Wyzwalacz zadziała przy kolejnym wystąpieniu, gdy koszyk będzie istniał.
  • Latch „raz dziennie” (Auto-Arm po czasie). Uzbrojenie po godzinie działa raz na dzień; jeśli wcześniej tego dnia rozbroiłeś BEa ręcznie, nie spróbuje ponownie (rozdział 12).
  • Czas brokera ≠ lokalny. Godzina Auto-Arm jest w czasie brokera. Sprawdź offset.

Tryb hedge BEa — koszyk netto „nie chce” się domknąć

W trybie hedge (BUY i SELL liczone razem netto) realizacja następuje, gdy całość wyjdzie na plus. Przy zrównoważonych lotach po obu stronach netto bywa „zamrożone” blisko zera i nie domyka się, dopóki nie pojawi się przewaga jednej strony. To wynika z geometrii (rozdział 12.5), nie z błędu.


21.8 Strażnicy konta (DPL / EG / Basket Max Loss / PT)

Najważniejsza korekta względem intuicji. Equity Guard pilnuje strony ZYSKU (cel/trailing zysku), a stratę koszyka pilnuje Basket Max Loss (rozdział 15). To częste źródło nieporozumień — patrz niżej.

Daily Loss aktywuje się natychmiast po starcie

  • Pozycje z wcześniej. Jeśli są otwarte pozycje (np. z poprzedniego dnia) i w bieżącej cenie dają stratę przekraczającą limit — Daily Loss odpala od razu. Dzienny wynik liczy się jako bieżące equity − equity z resetu (rozdział 14).
  • Equity z resetu rozsynchronizowane (po długim offline / zmianie wykresu). Rozwiązanie: ustaw Daily Loss na 0 (off), poczekaj na najbliższy reset dnia — wartość odniesienia odświeży się na świeżo.

Equity Guard odpala „nie tam, gdzie się spodziewałem”

  • EG to strona zysku. Dodatnia wartość „Start” EG = próg zysku (przy Distance 0 zamyka na +Start; przy Distance > 0 — trailing zysku z blokadą narastającą). EG nie jest strażnikiem straty. Jeśli chcesz limitować stratę koszyka — to Basket Max Loss (rozdział 15).
  • Tryb procentowy. Jeśli EG jest w trybie procentu, „Start” liczy się jako % equity — łatwo pomylić z kwotą. Sprawdź tryb.
  • EG patrzy na Total PnL (floating + realized), nie tylko floating.

Basket Max Loss zamknął koszyk, a handel trwa dalej

To zaprojektowane. Basket Max Loss to „siatka bezpieczeństwa planowanej straty”: gdy strata koszyka przekroczy limit (np. 3% equity), EA zamyka cały koszyk, resetuje koszyk i gra dalej (rozdział 15). To różnica wobec Daily Loss, który robi twardy stop dnia.

Profit Target nie odpala mimo zysku

PT patrzy tylko na zysk zrealizowany, nie floating. +300 „na ekranie” to jeszcze nie zysk dla PT — musisz faktycznie zamknąć pozycje (TP/BEa/ręcznie). Po realizacji suma dolicza się do progu i PT odpala (rozdział 15).

Liczniki / Equity Guard pokazują pozycje, których ten EA nie otwierał

Dwie typowe przyczyny:

  • Wyłączony tryb „tylko moje”. Domyślnie komórka „Monitor Own Only” (rozdział 5.5) jest włączona i każda instancja EA zarządza wyłącznie pozycjami, które sama otworzyła — nawet gdy druga instancja pracuje na tym samym symbolu z tym samym Magic Numberem. Jeśli ktoś ją wyłączył, instancje o nakładających się Magic „przenikają się”: wliczają sobie nawzajem pozycje do koszyka, a liczniki i Equity Guard pokazują zafałszowane wartości. Włącz „Monitor Own Only” z powrotem.
  • Nakładający się zakres Magic Number (bazy różnią się o mniej niż 5). Nawet w trybie „tylko moje” wspólny Magic oznacza współdzielony zrealizowany wynik dnia (Daily P/L liczy per Magic), więc strażnicy dzienni mogą reagować na transakcje drugiej instancji. Rozsuń Global Magic Number tak, by bazy różniły się co najmniej o 5 (w praktyce co 10). Przy wykryciu nakładania EA podnosi alert startowy (rozdział 9).

Priorytet. Gdy zbiega się kilka warunków, Daily P/L Limits mają pierwszeństwo nad EG/PT/Basket Max Loss (rozdział 14).


21.9 Trading Hours

Buttony włączone, ale milczą cały dzień

  • Master włączony, a okna puste. Jeśli wszystkie dni mają „no trading”, EA nie handluje. Sprawdź wpisy (rozdział 16).
  • Czas brokera vs lokalny. Wpisałeś „08:00-22:00” myśląc lokalnie, a EA czyta to jako czas brokera. Skoryguj o offset.
  • Błędny format. Literówka w oknie (np. „08:0-22:00”) → EA pomija ten segment i loguje ostrzeżenie [TH] …: invalid range '…' - skipping w Experts; pozostałe poprawne okna tego dnia działają. Gdy dzień miał tylko jedno (błędne) okno — cały dzień wychodzi „no trading”. Sprawdź format „HH:MM-HH:MM” (rozdział 16.2).

Włączyłem button poza godzinami i nic się nie dzieje

To celowe — button jest „uśpiony”. Ręczne włączenie poza oknem handlu jest przyjmowane (przycisk włączony), ale sygnały nie powstają, dopóki nie otworzy się najbliższe okno Trading Hours — wtedy button rusza sam. Chcesz handlu natychmiast — poszerz okno albo wyłącz Trading Hours (rozdział 16).

Button wciąż zbiera po końcu okna

Jeśli ma uzbrojony BEa — to celowe: przy włączonym „Exclude BEa mode from Trading Hours” button w trybie BEa dalej działa, by domknąć koszyk do zera. Reszta buttonów milczy (rozdział 16). Koniec okna nie zamyka otwartych pozycji.


21.10 Cross-button Triggers

Trigger się nie wyzwala

  1. Tryb [C] — czy mapa pokazuje połączenie? Jeśli nie, EA nie wczytał konfiguracji. Sprawdź, czy target to 1…7 (nie 0) i czy nie wskazuje na samego siebie (self-target jest odrzucany — rozdział 17).
  2. Zły slot do zdarzenia. Ręczny klik wystrzela tylko OnManualOn, nie OnAnyAutoOn. Dobierz slot do zdarzenia.
  3. Logi. Przy włączonym logowaniu każda akcja triggera jest zapisana; brak wpisu = trigger nie wystrzelił.

Loop detection aktywuje się przy normalnej pracy

Masz cykl w grafie triggerów. Najczęściej B1 → B3 → B1 (bezpośredni) albo B1 → B3 → B5 → B1 (tranzytywny). Narysuj graf na kartce, znajdź cykl, usuń jeden trigger. Nie podnoś progów loop detection — to ukrywanie problemu, nie naprawa (rozdział 17.7).

Triggery nie odpalają przy starcie EA

To celowe. Start z „Initial Enabled” jest zdarzeniem systemowym, które nie propaguje (rozdział 17.6). Chcesz button-cel aktywny od startu — daj mu osobno „Initial Enabled”, albo aktywuj źródłowy button ręcznie po starcie (wtedy OnManualOn wystrzeli). To samo dotyczy rollover DPL i twardego stopu.


21.11 Panel EA

Panel poza obszarem wykresu

Usuń EA i wrzuć ponownie — panel wróci do pozycji domyślnej. (Pozycję i narożnik projektuje się w ustawieniach — rozdział 8.)

Komórki Target Blocks nie reagują na klik

  • Sekcja ukryta. Sprawdź, czy w ogóle widzisz sekcję Target Blocks; jeśli nie — jest wyłączona w ustawieniach sekcji (rozdział 8).
  • Edycja na żywo. Komórki działają w trybie SET → wpisz wartość → OK/X. Upewnij się, że klikasz właściwy przycisk SET (rozdział 8).

Tryb info nic nie pokazuje

Najpewniej przycisk [i] jest wyłączony (szary). Tryb [B/G/S/T/C/H] cykluje kategorię, ale rozszerzony panel jest ukryty, dopóki nie włączysz [i] (zielony) — rozdział 8. Jeśli i to nie pomaga — sprawdź w Inputs pole Show info panel (parametr Global_ShowStatsPanel, podsekcja Info Panel): gdy jest wyłączone, rozszerzony panel [i] nie pokaże się wcale. To osobny przełącznik od Show interactive control panel (UI_ShowControlPanel), który steruje głównym panelem sterowania.

Za dużo wyskakujących okienek alarmowych — albo brakuje powiadomienia

Od EA 1.08 każdą grupę okienek wyciszasz osobno w sekcji Alerts panelu OkurraGlobal (albo w grupie Alerts okna Inputs EA): 8 grup popupów + wspólny wyłącznik push (rozdział 5.5). Dwie rzeczy do zapamiętania przy diagnozie:

  • Wyciszenie gasi tylko okienko/push — wpis do dziennika Experts zostaje zawsze. Jeśli szukasz zdarzenia, którego okienko nie pokazało, zajrzyj do logu.
  • Nie dostajesz push na telefon? Sprawdź kolejno: przełącznik Push Notifications w sekcji Alerts, potem MetaQuotes ID w MT5 (Tools → Options → Notifications). Bez skonfigurowanego ID push nie wychodzi, choć przełącznik jest włączony.

Alerty licencyjne nie mają wyłącznika — jeśli EA nie handluje z powodu licencji, okienko pokaże się zawsze (sekcja 21.3).


21.12 Wydajność

MT5 zwalnia przy aktywnym EA

  • T. History z dużą liczbą dni. Kilkanaście/kilkadziesiąt dni na M1 to tysiące strzałek do rysowania. Zmniejsz liczbę dni historii do 1–3 (rozdział 19.6).
  • Wiele równoległych instancji EA. Każda zużywa zasoby. Wyłącz zbędne lub rozłóż na osobne terminale.
  • Słaby sprzęt. Na bardzo starych maszynach rozważ VPS.

Logi Experts zalewają się komunikatami

Najczęściej włączone „Log Every Trigger Action” przy aktywnych triggerach. Po zakończeniu debugowania wyłącz logowanie każdej akcji — logi staną się czytelne (rozdział 17).

21.13 Po restarcie EA „nie widzi” swoich pozycji (albo wyciął zlecenia oczekujące)

Pozycje z Magic Number robota są otwarte, ale robot ich nie prowadzi

To niemal zawsze pozycja-sierota: brakuje jej w rejestrze własności trybu „tylko moje” (rozdział 7.9). Typowe scenariusze: zlecenie oczekujące zrealizowało się przy wyłączonej platformie, pozycje otwarto na wbudowanym MetaTrader VPS (pliki robota nie migrują — rejestr lokalny ich nie zna), rzadziej konto netting.

Kroki:

  1. Sprawdź dziennik Experts — od EA 1.26 szukaj wpisów [OwnReg] reconcile ... ORPHAN (fabrycznie dostaniesz też popup). Wpis wymienia numer pozycji i przyczynę.
  2. Przywróć opiekę: ustaw Global_OwnOnly_Reconcile = Adopt (przygarnianie z dowodem własności) albo jednorazowo Global_OwnOnly_AdoptExisting = true (przygarnia wszystkie pozycje pasujące po MN — użyj świadomie i cofnij na false).
  3. Uwaga na wirtualny SL: dopóki sierota nie wróci pod opiekę, przy włączonym Virtual SL nie ma żadnego stopa — w razie potrzeby zabezpiecz ją ręcznie u brokera.
  4. Jeśli alert mówi o drugiej instancji na tej samej bazie MN — najpierw uporządkuj bazy (odstęp ≥ 5), dopiero potem adoptuj.

Po restarcie zniknęły zlecenia oczekujące

To zamierzona polityka, nie awaria: lista pilnowanych zleceń żyje w pamięci robota, więc po restarcie osierocone zlecenia u brokera są sprzątane, zanim nieaktualny setup zdąży odpalić (od 1.26 z komunikatem). Jeśli chcesz, by sprzątanie kasowało wyłącznie zlecenia z własnego rejestru (ochrona drugiej instancji przy nachodzących zakresach MN), włącz Global_OwnReg_TrackPendingOrders + Global_StalePendings_OwnListOnly (rozdział 7.9).

Alert „[Migration] … retired B6/B7 magics” po aktualizacji do 2.00

Objaw: po podmianie plików na wydanie 2.00 EA przy starcie pokazuje okienko i wpis w dzienniku zaczynający się od [Migration], z liczbą pozycji i dwoma konkretnymi magikami.

Przyczyna: na koncie wciąż są otwarte pozycje dawnych batonów B6/B7 z wydania 7-batonowego (magiki baza+5 i baza+6). Wydanie 2.00 ma pięć batonów i tych pozycji nie zarządza: nie prowadzi im Break Even ani Trailingu, nie pilnuje wirtualnych SL/TP (przy włączonym Virtual SL taka pozycja jest naga — stopa nie ma też u brokera!), nie liczy ich do koszyków BEa, limitów dziennych ani Close All. Alert jest czysto informacyjny — EA niczego z tymi pozycjami nie robi.

Rozwiązanie: zamknij te pozycje ręcznie w terminalu (zakładka Trade — pozycje rozpoznasz po magiku z komunikatu), albo — jeśli masz jeszcze dostęp do instalacji ze starym wydaniem — pozwól staremu EA doprowadzić je do zaplanowanego zamknięcia, zanim zaktualizujesz. Najlepiej jednak uniknąć sytuacji w ogóle: domknij pozycje B6/B7 przed podmianą plików (rozdział 3.5). Alert powtarza się przy każdym starcie EA, dopóki pozycje istnieją.

Kolumna Magic Number w raporcie jest pusta

Deal bez MN to deal spoza robota: pozycja otwarta lub zamknięta ręcznie (terminal, telefon) ma MN = 0. Platforma nie pozwala nadać MN po otwarciu — żaden EA nie „dopisze” numeru ręcznej pozycji. Jeśli jednak puste MN mają pozycje otwierane przez robota — sprawdź, czy Global_MagicBase nie jest ustawione na 0 (baton B1 handluje wtedy z MN = 0; od 1.26 EA o tym ostrzega).


W kolejnym rozdziale — FAQ: najczęstsze pytania i krótkie odpowiedzi z różnych obszarów, w tym te, które nie mieszczą się w żadnym rozdziale wprost. Format pytanie–odpowiedź, zwięźle i konkretnie.