Wersja narzędzia: O!kurra Capital Defense EA 2.05
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
22.1 Jak diagnozować — uniwersalne zasady 22.2 Instalacja i uruchomienie 22.3 Licencja (klucz + weryfikacja online) 22.4 Brak sygnałów 22.5 Pendingi się nie realizują 22.6 Zarządzanie pozycją (BE / Trailing) 22.7 BEa zachowuje się nieoczekiwanie 22.8 Strażnicy konta (DPL / EG / Basket Max Loss / PT) 22.9 Trading Hours 22.10 Cross-button Triggers 22.11 Panel EA 22.12 Wydajność 22.13 Po restarcie EA „nie widzi” swoich pozycji (albo wyciął zlecenia oczekujące) 22.14 Time Setups
22.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ł 20) 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.
22.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 podfolderMQL5\Experts\OKU\), wskaźniki wMQL5\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
.ex5tego 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).
Alert „This .set predates a parameter change…” albo „…generated for a NEWER Okurra release…” — stempel schematu
To ostrzeżenie, nie błąd — robot działa dalej. Przy wczytaniu .set z Kreatora — a od 2.05 także z panelu OkurraGlobal — robot porównuje zapisany w pliku numer schematu wejść (SetSchemaRev) ze swoim (rozdział 7.6).
- „…predates a parameter change…” — plik powstał przed ostatnią zmianą listy wejść. Parametrów dodanych później w nim nie ma: sprawdź je w oknie F7 (listę daje changelog wydania, sekcja „Zmiany parametrów”) albo wygeneruj set w Kreatorze na nowo.
- „…generated for a NEWER Okurra release…” — plik pochodzi z nowszego wydania niż zainstalowany robot, więc ustawień, których robot nie zna, MetaTrader nie wczyta. Zaktualizuj EA kompletem plików (rozdział 3).
W dzienniku Experts linia [OKU SchemaStamp] Set stamped N; this EA: schema S, build B - … podaje wszystkie trzy numery.
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(parametrUI_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. Od 2.05 robot sprawdza to przed wysyłką i zamiast błędu MT5 pisze, czego brakuje (sekcja niżej).
- Konto nie zezwala na auto-handel. Część kont (niektóre prop/demo) blokuje algo. Sprawdź u brokera. Od 2.05 robot nazywa i ten brak (sekcja niżej).
- 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.
W dzienniku „terminal AutoTrading is OFF” albo inny brak uprawnienia (od 2.05)
Objaw: robot nie otwiera pozycji, a w dzienniku Experts stoi jeden z czterech komunikatów z tabeli.
Od wydania 2.05 robot, zanim wyśle zlecenie otwarcia albo zamknięcia, sprawdza cztery uprawnienia do handlu i nazywa to, którego brakuje. Do 2.04 sprawdzał tylko dwa pierwsze i tylko przed zamknięciem albo przesunięciem stopa — otwarcia szły bez sprawdzenia.
| uprawnienie | komunikat w dzienniku | co zrobić |
|---|---|---|
| przycisk Algo Trading (AutoTrading) na pasku MT5 | terminal AutoTrading is OFF | włącz przycisk (Ctrl+E) |
| zgoda tego robota Allow Algo Trading (okno F7, zakładka Common) | this EA's Allow Algo Trading (F7) is OFF | zaznacz zgodę w oknie F7 |
| zgoda brokera na roboty na tym koncie | the BROKER does not allow Expert Advisors on this account (ACCOUNT_TRADE_EXPERT) | zapytaj brokera |
| prawo konta do handlu | the account is not allowed to trade at all (ACCOUNT_TRADE_ALLOWED - investor login?) | zaloguj się hasłem handlowym, nie hasłem inwestora |
To samo słowami: robot sprawdza przycisk AutoTrading terminala, zgodę tego robota w oknie F7, zgodę brokera na roboty na tym koncie i to, czy konto w ogóle może handlować — a gdy któregoś brakuje, pisze w dzienniku, którego.
Co się dzieje, gdy uprawnienia brakuje:
- Zlecenie oczekujące czeka. Sygnały powstają jak zwykle, ale pending nie wysyła zlecenia i zostaje w kolejce:
[Permission@Realize] B1: pending level reached but terminal AutoTrading is OFF - realization held, the pending stays in the queue, a w dzienniku decyzji (sekcja 22.6) stoi wierszREALIZE_BLOCKz bramkąNoTradePermission. Przy wyłączonymVirtualize Pending Orderspending nie trafia do brokera:[Permission@Place] B1: pending not placed at the broker - …; it stays in the queue and is placed when trading is permitted. Gdy uprawnienie wróci, pending działa dalej. - Otwarcie po rynku nie idzie. Czujnik Price Movement, ponowne wejście, pierwsze zlecenie setupu minutki i pierwszy hedge tarczy piszą jedną linię z powodem, np.
[PM 1 open] B2 skipped: terminal AutoTrading is OFF. Pierwsze zlecenie setupu czeka potem i ponawia próbę co minutę (rozdział 19.8). - Ochrona stoi, ale nic nie przepada. Zamknięcia i przesunięcia stopów też nie idą — alarm „PROTECTION OFFLINE” nazywa brakujące uprawnienie (sekcja 22.6). Od 2.05 robot przy tym niczego nie kasuje: strażnicy, tarcza BEa i linie celu czekają, zatwierdzone zamknięcia wychodzą, gdy uprawnienie wróci, a przyciski Close … mówią, że nic nie wysłały (sekcja 22.6).
- Zmiana uprawnień konta ma linię w dzienniku:
[OKU-DIAG][TRADE] ACCOUNT TRADE_BLOCKED: expert_advisors_allowed=0 trade_allowed=1 positionsTotal=2, a po powrocie… ACCOUNT TRADE_OK …(przy włączonym poluLog virtual SL/TP orphan/desync diagnostics (live only), fabrycznie włączonym). Niezależnie od tego pola robot od 2.05 pisze jedną linię, gdy handel przestaje być dozwolony z któregokolwiek z czterech powodów (także zaraz po starcie robota bez uprawnienia), i jedną, gdy znów jest dozwolony:[OKU] trading is not allowed (terminal AutoTrading is OFF) - nothing is sent: …i[OKU] trading is allowed again - …(sekcja 22.6).
22.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.
- 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). - Sprawdź klucz. Czy wpisany dokładnie (format
OKUR-...), bez spacji, ważny. - 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.
- Sprawdź połączenie internetowe. Weryfikacja wymaga dostępu do okurra.com.
- 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.
- 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.
22.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):
- 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.
- Algo Trading aktywny? (sekcja 22.2).
- 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.
- 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.
- 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.
- 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).
- 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).
- Zone Reach (od 2.05). Jeśli button ma włączone
Zone Reach Enabled (far edge of the zone), za poziomem z polaZone Reach (OKUR level; no signals beyond it)sygnałów nie ma — także przy otwartym oknie Signal Band. To zamierzone: tak działa drugi brzeg strefy (rozdział 9.4). Reach po złej stronie progu robot przy starcie wyłącza i pisze[OKUR Reach] B1: ZoneReach=300 invalid for zone BELOW / threshold 250 - it must lie below the threshold; reach disabled— button pracuje wtedy bez drugiego brzegu. Panel OkurraButton mówi to samo po Apply czerwonym napisem na pasku statusu, np.B1: Zone Reach wrong side - ignored. - Logi. Włączone logowanie pokaże powód odrzucenia każdego sygnału — to zwykle rozwiewa wszystkie wątpliwości. Gdy robot w ogóle nie liczył sygnału, od 2.05 mówi o tym wiersz
GATE_CLOSED(niżej).
Button milczy cały dzień — wiersz GATE_CLOSED w dzienniku decyzji (od 2.05)
Cztery bramki zatrzymują włączony button, zanim robot w ogóle policzy jego sygnał. Od 2.05 każda zostawia ślad: wiersz GATE_CLOSED w dzienniku decyzji (kolumna gate mówi, która bramka) i linię signals paused: … w dzienniku aktywności (sekcja 22.6).
bramka (kolumna gate) | kiedy zatrzymuje sygnały | linia w dzienniku aktywności |
|---|---|---|
Access | tryb tylko zarządzania — licencja albo wydanie nieważne (sekcja 22.3) | signals paused: manage-only (access) 2026.10.11 |
TradingHours | poza oknem Trading Hours (rozdział 16) | signals paused: outside trading hours 2026.10.11 |
RolloverPause | pauza po zmianie dnia (rozdział 14) | signals paused: post-rollover pause 2026.10.11 |
NakedSL | wirtualny SL jest włączony, a button ma Stop Loss (points, 0 = off) = 0 | signals paused: no stop at all under Virtual SL 2026.10.11 |
To samo słowami: button nie liczy sygnałów w trybie tylko zarządzania, poza godzinami handlu, w pauzie po zmianie dnia i wtedy, gdy przy wirtualnym SL nie ma żadnego stopu. Robot pisze wiersz raz, gdy bramka zatrzyma button, i powtarza go dopiero następnego dnia, po zmianie stanu albo po restarcie robota — dziennik nie puchnie. Wyłączone buttony takich wierszy nie dostają.
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.
- Restart terminala i zmiana interwału (do 2.04). Do wydania 2.04 restart terminala cofał button do „Initial Enabled”, a pierwsza zmiana interwału po restarcie potrafiła bez słowa przywrócić stan sprzed restartu — także włączyć button. Od 2.05 button ma po restarcie ten sam stan co przed nim, a każde przywrócenie stanu innego niż „Initial Enabled” z ustawień ma linię w dzienniku:
[Init] Button 3 restored ON from its last state - Initial Enabled (OFF) unchanged(rozdział 8.4). Pierwszy start po aktualizacji do 2.05 może raz przywrócić ostatni stan sprzed aktualizacji — z tą samą linią.
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.
22.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. Odmowa z tego powodu jest w logu (
Spread … > MaxSpread …, skipping realization), a od EA 2.03 rev 0266 także w dzienniku decyzji jako wierszREALIZE_BLOCKz bramkąSpread— czyli da się policzyć, ile wejść zabrał spread. - Poza godzinami handlu. Od EA 2.03 rev 0265 poziom dotknięty poza oknem Trading Hours nie otwiera pozycji — pending czeka na otwarcie okna (log
[Hours@Realize], w dzienniku bramkaTradingHours). Szczegóły: rozdział 16.6. - Brak uprawnień do handlu (od 2.05). Poziom dotknięty bez jednego z czterech uprawnień (sekcja 22.2) nie otwiera pozycji — pending zostaje w kolejce i czeka, aż uprawnienie wróci (log
[Permission@Realize], w dzienniku bramkaNoTradePermission).
Wirtualny pending nie ma ticketu u brokera — i nie jest to usterka. W trybie wirtualnym (domyślnym) zlecenie oczekujące żyje wyłącznie w pamięci robota: nie ma go w zakładce Trade MetaTradera, nie ma numeru zlecenia i nie zobaczysz go w historii jako zlecenia. Robot pilnuje poziomu sam i w momencie dotknięcia wysyła zlecenie rynkowe. Dlatego ticket — i wpis w rejestrze własnym — dostaje dopiero pozycja powstała z realizacji, nigdy pending. W logu cykl wygląda tak:
Pending registered: btn=… ACTIVEprzy rejestracji, a po dotknięciu poziomu wierszOPEN_OKzdetail=realizew dzienniku decyzji. Jeśli szukasz pendingu w oknie brokera i go nie widzisz, sprawdź, czy nie masz włączonej wirtualizacji (rozdział 7.9) — przy wyłączonej pendingi idą do brokera i mają normalne numery.
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.
22.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” — brak uprawnienia do handlu
Objaw: w dzienniku Experts linia zaczynająca się od [O!kurra …] PROTECTION OFFLINE, powtarzana najwyżej raz na minutę, mówiąca, że EA nie może zamykać pozycji ani przesuwać stopów. Jako okienko pojawia się przy włączonej komórce Protection Offline Popup (rozdział 5.5).
To nie broker odrzuca zlecenia — robotowi brakuje uprawnienia do handlu. Zanim EA zamknie pozycję albo przesunie stop przez Break Even lub Trailing, sprawdza przycisk AutoTrading na pasku MT5 i zgodę „Allow Algo Trading” w ustawieniach tego EA, a od 2.05 także zgodę brokera na roboty na tym koncie i prawo konta do handlu (sekcja 22.2). Gdy któregokolwiek brakuje, 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. Od 2.05 alarm nazywa brakujące uprawnienie, np. PROTECTION OFFLINE: trading is DISABLED before send (terminal AutoTrading is OFF).
Nic nie wysłane, nic nie zapomniane (od 2.05). Brak uprawnienia robot traktuje tak jak przerwę handlową (rozdział 15.10): niczego nie wysyła, ale też niczego nie kasuje. Zmianę stanu zapisuje w dzienniku Experts jedną linią — przy utracie uprawnienia [OKU] trading is not allowed (terminal AutoTrading is OFF) - nothing is sent: the guards, the BEa shield, target lines, the Close buttons, Timed Exit and setup settlements keep their decision and wait, po jego powrocie [OKU] trading is allowed again - waiting closes and guards are judged afresh from the live price. W nawiasie stoi brakujące uprawnienie w brzmieniu z tabeli w sekcji 22.2. Między tymi liniami:
- Strażnicy — dzienny limit z twardym zatrzymaniem, Basket Max Loss, Equity Guard (cel i trailing), Profit Target (oba tryby) i strażnik zera tarczy BEa — przy otwartych pozycjach niczego nie zamykają i nie zmieniają swojego stanu: nie wyłączają buttonów, nie przestawiają punktu odniesienia koszyka, nie rozbrajają tarczy. Każdy pisze raz linię, np.
[DPL LOSS] Daily loss limit hit (delta=-0.43 <= -0.05) - trading is not allowed (terminal AutoTrading is OFF), no close is sent; the condition is checked again once trading is allowed. Po powrocie uprawnienia ocenia warunek od nowa, z bieżącej ceny (rozdział 15.10). - Tarcza BEa zostaje uzbrojona; realizacja koszyka i domknięcie osieroconej tarczy czekają i są oceniane od nowa:
[BEa BUY] realize level reached - trading is not allowed (…), nothing is sent; the basket stays ARMED and this is checked again once trading is allowed(rozdział 12.6). - Linia celu dotknięta przy otwartych pozycjach zostaje na wykresie i jest sprawdzana od nowa:
[Target BUY] 1 line(s) reached at bid=… - trading is not allowed (…), nothing is sent; the lines stay and are checked again once trading is allowed(rozdział 11.7). - Przyciski Close All, Close Profit, Close SELL i Close BUY nic nie wysyłają i niczego nie zmieniają — po przywróceniu uprawnienia kliknij jeszcze raz (rozdział 8.5). Gdy uprawnienie zniknie dopiero między kliknięciem a wysyłką:
[O!kurra] Close All: trading is not allowed (terminal AutoTrading is OFF) - positions were NOT closed and stay open (the click is not repeated automatically; pending orders, an armed BEa and the basket counter are kept). - Zamknięcia, które już zapadły, czekają i wychodzą, gdy handel znów jest dozwolony: reakcja na sygnał przeciwny (rozdział 13.2), rozliczenie setupu minutowego i Timed Exit (rozdział 19.10, 19.15) oraz wirtualny SL/TP. Ten ostatni pisze raz
[VirtualSLTP] trading is not allowed (…) - close of ticket … (…) waits; it is sent once trading is allowedi nie podnosi alarmu „Broker is NOT honoring the close”, bo to nie broker odmawia. - Okna dosprzątania resztek po zamknięciu zbiorczym i po realizacji tarczy w tym czasie nic nie wysyłają; ich 60 sekund liczy się jednak dalej, więc po dłuższej blokadzie wygasają bez ponawiania.
Break Even i Trailing Stop działają jak dotąd: przesunięcie stopa nie wychodzi, a alarm mówi dlaczego. Do wydania 2.04 strażnik albo Close All bez uprawnienia nic nie zamykał, a mimo to rozbrajał tarczę i przestawiał punkt odniesienia koszyka, dzienny limit wyłączał buttony do resetu dnia przy otwartych pozycjach, a wirtualny SL/TP przy 1., 3. i co 10. próbie obwiniał brokera.
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. Gdy brakuje tylko uprawnienia po stronie konta, robot podpowiada Ask the broker / log in with the trading password. — zapytaj brokera albo zaloguj się hasłem handlowym.
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).
Alert „broker REFUSED close (ASYNC+SYNC failed)” w przerwie handlowej
Od wydania 2.04 przy zamkniętym rynku go nie zobaczysz. Przy zamykaniu asynchronicznym (Async Close All, rozdział 5.5) zamknięcie wysłane w przerwie handlowej, w której są notowania (np. XAUUSD 01:00–01:02, BTCUSD w sobotę 00:00–01:00), terminal przyjmuje, a serwer odrzuca chwilę później. Do wydania 2.03 EA ponawiał je wtedy co sekundę (wirtualny SL/TP), przy każdym ticku (rozliczenie minutki) albo do sześciu razy na pozycję (dosprzątanie po wyjściu masowym i po koszyku BEa), za każdym razem z okienkiem NOT closed by broker after ASYNC send. Retrying SYNC. i alertem broker REFUSED close (ASYNC+SYNC failed). Position REMAINS OPEN - monitor manually. Od 2.04 (rev 0291) odmowę z kodem 10018 rozpoznaje synchroniczne ponowienie: w logu stoi Retry SYNC FAILED … retCode=10018 (market closed), a zaraz po nim [MarketClosed] market closed (…) - close deferred until <czas>. Okienek nie ma, a zamknięcie idzie z pierwszym tickiem po otwarciu sesji (rozdział 9.10). Tak samo od 2.04 zachowują się trzej strażnicy koszyka (Equity Guard w trybie celu, Basket Max Loss, Profit Target w trybie „zamknij tylko stratne”): po odmowie w przerwie nie strzelają do końca pauzy, a potem sprawdzają swój warunek od nowa. Od 2.05 tak samo czekają Equity Guard z trailingiem i Profit Target w trybie „zamknij wszystko”, a zamknięcie strażnika odrzucone w przerwie niczego nie kasuje: Basket Max Loss zachowuje punkt odniesienia koszyka, a Equity Guard swój cel albo poziom trailingu (rozdział 15.10). Do 2.04 decyzja strażnika w przerwie mogła przepaść. Od 2.05 tak samo przy Close All / Close BUY / Close SELL, linii celu i realizacji tarczy: zamknięcie odrzucone dopiero przy wysyłce — także odmowa, która przyszła chwilę po wysyłce asynchronicznej — zostawia zlecenia oczekujące (u brokera i wirtualne), a kliknięcie kończy się komunikatem [O!kurra] Close All: market closed - positions were NOT closed and stay open (the click is not repeated automatically; pending orders, an armed BEa and the basket counter are kept). Market opens at 2026.10.12 01:00:00. Zlecenie u brokera, którego robot nie zdołał skasować (np. w przerwie), jest dalej śledzone: gdy broker je później wypełni, pozycja przechodzi bramki realizacji i dostaje wirtualny SL/TP. Do 2.04 taka pozycja wchodziła bez nich.
Jeśli ten alert pojawia się przy otwartym rynku, broker naprawdę odmawia zamknięcia. Sprawdź pozycję ręcznie i kod odmowy w logu.
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” — nie ma go od 2.05
Ten komunikat istniał tylko w kodzie paneli OkurraButton i OkurraGlobal do wydania 2.04 i nie mógł się pokazać: panel sprawdzał plik stanu, który sam zapisał, a ten nigdy nie niesie numeru budowy robota — od 2.05 (OkurraButton 2.16, OkurraGlobal 2.29) nie ma go wcale. Pomieszane wydania wychodzą na jaw inaczej: robot porównuje stempel SetSchemaRev wczytywanego setu ze swoim schematem wejść (rozdział 7.6) — set z nowszego wydania wywoła okienko „This .set was generated for a NEWER Okurra release…” (sekcja 22.2) — a numery wszystkich narzędzi wydania podaje rozdział 23. Paczkę podmieniaj zawsze kompletem (rozdział 3).
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_<SYMBOL>_mb<BAZA>.log (od 2.05 osobny dla każdego robota — niżej). 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_<SYMBOL>_mb<BAZA>.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. Od 2.05 dziennik decyzji ma też wiersze GATE_CLOSED — gdy button w ogóle nie liczył sygnału (sekcja 22.4).
Od wydania 2.03 każdy wiersz dziennika decyzji niesie instrument — kolumna symbol jest drugą kolumną, zaraz po czasie serwera, a każda linia dziennika aktywności ma symbol tuż po znaczniku czasu. Do wydania 2.04 na żywo oba pliki były wspólne dla wszystkich wykresów w terminalu (jeden ea_decisions.csv, jeden ea_activity.log), więc bez tej kolumny wiersze z XAUUSD i BTCUSD były nie do rozróżnienia — linia # META pod nagłówkiem mówi tylko, który wykres założył plik, a kolumna magic nie wskazuje instrumentu (ta sama baza Magic na dwóch wykresach daje te same numery). Pliki zapisane przed 2.03 mają 18 kolumn — ich instrument zna wyłącznie linia # META.
Od wydania 2.05 każdy robot prowadzi własną parę plików. Nazwa niesie symbol wykresu i bazę Magic z pola Magic Number (next instance: +5 minimum): ea_decisions_<SYMBOL>_mb<BAZA>.csv i ea_activity_<SYMBOL>_mb<BAZA>.log, np. ea_decisions_XAUUSD_mb1.csv dla robota na XAUUSD z bazą 1 (baza mniejsza niż 1 liczy się jako 1). Ten sam wzór nazwy ma dziennik setupów Time Setups (rozdział 19.14). Który plik jest Twój: ten z symbolem wykresu i bazą wpisaną w F7. Do 2.04 wszystkie roboty terminala pisały do jednej pary — pięć robotów na jednym symbolu mieszało wpisy w jednym pliku. Pierwszy robot 2.05, który wystartuje po aktualizacji, odkłada starą wspólną parę na bok z datą i godziną w nazwie (np. ea_decisions_20261011-101500.csv) i pisze w dzienniku Experts [OKU-DIAG] the shared decision journal of builds before 0324 - each robot instance now writes its own (…) - rolled aside to "…". A fresh journal starts now; no row was deleted. — nic nie ginie. Tych kopii dotyczy to samo pole retencji co każdej odłożonej kopii (niżej, akapit o rolowaniu) — fabrycznie nic nie jest kasowane. W Strategy Testerze nazwy się nie zmieniły.
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.
Od wydania 2.03 plik dziennika jest rolowany. Gdy strumień przekroczy 5 MB, EA odkłada dotychczasowy plik na bok jako osobny plik i zaczyna nowy — żaden wpis nie ginie, a bieżący plik pozostaje lekki do przeglądania i przesyłania. Ile dni trzymać odłożone kopie, ustawia pole Diagnostic journal: delete rolled-aside copies older than N days (0 = keep every copy) w grupie Global okna Inputs — fabrycznie 0, czyli trzymaj wszystkie. To ustawienie tej maszyny, nie strategii: celowo nie jest zapisywane do .set (panel OkurraGlobal, Kreator i set fabryczny je pomijają), żeby plik ustawień nie przenosił cudzej polityki kasowania. W Strategy Testerze rolowanie i kasowanie są wyłączone — tam pliki i tak mają nazwy per przebieg.
Osobny znacznik [OwnReg] w logach dotyczy rejestru „tylko moje” (adopcja/śledzenie własnych ticketów przy trybie Monitor Own Only — sekcja 22.8) — to inny mechanizm niż dziennik aktywności.
22.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.
Tarcza nie dokłada, choć jej button ma sygnały (od 2.05)
Przyczyna: sufit brutto koszyka. Przy ustawionym Basket gross lots cap (both sides; 0 = off): no add past it robot nie dokłada ponad tę sumę lotów obu stron — w każdym trybie doboru lota. W dzienniku: [BEa] basket gross cap reached (1.00 of 1.00 lots in the SELL basket) - B2 adds nothing; the basket waits for its target, the floor or the operator (said once until B2 adds again) — raz na pobyt batonu pod sufitem; linia wraca, gdy pod sufitem znów zrobi się miejsce dla tego batonu, a sufit potem znów się zapełni. Dopóki miejsca nie ma, robot nie rejestruje nowego zlecenia ([Lot] B2: no pending registered - the lot is 0 (basket gross cap reached), ta linia też raz na pobyt pod sufitem), a zlecenie, które już czekało, przepada przy realizacji ([BEa TargetPull] B2 realization dropped - no room under the basket gross cap, w dzienniku decyzji bramka GrossCap). Co sprawdzić: sumę lotów koszyka i wartość sufitu. Koszyk czeka na swój cel, na podłogę albo na Twoją rękę (rozdział 12.6).
Alert przy starcie: „Target pull … is not above Auto BE Gain”
Przyczyna: Target pull: keep the basket target this many points from price (0 = off) nie jest większe niż Auto BE Gain (points), a wzór dzieli przez ich różnicę. Robot wyłącza wtedy Target pull i dobiera dokładki fabrycznie: [BEa TargetPull] configuration error: Target pull 20 pts is not above Auto BE Gain 30 pts (the lot formula divides by N - Gain) - the function is OFF, adds are sized by Adapted + Multisize. Rozwiązanie: ustaw N większe niż Gain i wczytaj ustawienia ponownie (rozdział 12.6). Przy N = 0 robot też wyłącza funkcję, ale bez okienka — tylko linią w dzienniku.
Dokładka mniejsza, niż wynika ze wzoru Target pull
To zamierzone — dokładkę ściął sufit. Linia dokładki mówi który i podaje lot, który naprawdę wchodzi: [BEa TargetPull] B2 hedge needs 1.53 lot for the target at 100 pts (SELL basket 100.00 under water, net -0.10 its way, capped to 0.50) - opening 0.50, target lands 280 pts from price. Dopisek capped to oznacza maksymalny lot jednej dokładki (Target pull: max lot per add (0 = booster's Multisize cap)), a free margin allows — wolny depozyt (robot nie otworzy więcej, niż pozwala 95 % wolnego depozytu). Gdy depozyt nie pozwala nawet na najmniejszy lot, dokładka dostaje minimalny lot brokera (dopisek , raised to the broker minimum 0.01), a o depozycie rozstrzyga broker. Sufit brutto koszyka ma własną linię [BEa] basket gross cap: B2 add trimmed 0.50 -> 0.30 lots (…), a przycięcie stoi też w nawiasie linii dokładki (…, basket gross cap trims 0.50 -> 0.30) - opening 0.30, …); gdy pod sufitem nie ma miejsca, linia dokładki kończy się słowami - nothing opened. Każda następna dokładka liczy od nowa, więc cel przyciąga się etapami (rozdział 12.6).
Zamknąłem wszystko przez Close All, a pomocnik tarczy dalej otwiera pozycje
Przyczyna: pomocnik nie ma włączonego Deactivate when BEa is realized. Close All zamyka koszyk i rozbraja tarczę, a robot traktuje to jak realizację: pomocnik z tą flagą wyłącza się razem z tarczą (w dzienniku [BEa] Obligatory BUY disarm - basket settled externally (manual Close All)). Bez flagi pomocnik zostaje włączony i przy włączonym robocie handluje dalej ze zwykłych sygnałów, już bez tarczy. Rozwiązanie: włącz pomocnikowi Deactivate when BEa is realized (rozdział 12.9) albo wyłącz go ręcznie po Close All.
Wyłączyłem robota, zamknąłem wszystko, a po chwili otworzył pozycję
Od 2.05 tak się nie dzieje. Do 2.04 Close All kasował tylko zlecenia u brokera — wirtualne zlecenie pomocnika tarczy zostawało i mogło się zrealizować przy wyłączonym robocie, już bez tarczy. Od 2.05 Close All i Close BUY/SELL kasują też zlecenia wirtualne ([ActionCloseAll] Closed positions: …, cancelled pendings: …, killed virtual pendings: …), a zlecenie buttona, który przy wyłączonym robocie wyszedł z trybu BEa, przepada w chwili realizacji ([EA OFF] Virtual pending DEAD at realization: B… is no longer in BEa mode and the EA is switched off). Co sprawdzić, jeśli zdarzy się na 2.05: który button otworzył pozycję i czy tarcza była wtedy uzbrojona — button w trybie BEa przy wyłączonym robocie nadal zbiera dla tarczy (rozdział 8.3).
Wyłączyłem robota w trybie „Arm the shield now”, a po chwili zamknął wszystko
Do 2.04 tak bywało, od 2.05 robot temu zapobiega. Do 2.04 pozycja hedgująca, którą otworzyła pierwsza tarcza, robiła z drugiej strony „stronę z pozycjami” — nad tym samym koszykiem uzbrajała się druga tarcza z przeciwnym znakiem, a strażnik zera zamykał cały koszyk ułamek sekundy po wyłączeniu. Od 2.05 robot ustala strony z pozycjami raz, w chwili kliknięcia. Hedge otwarty przez tarczę należy do jej koszyka. Przy pozycjach po obu stronach i Hedge on both sides pierwsza uzbraja się strona z większą sumą lotów, a strona, której wszystkie pozycje są już w uzbrojonym koszyku, drugiej tarczy nie dostaje (rozdział 8.3). Co sprawdzić: linie [EA OFF] … w dzienniku — mówią, którą stronę robot uzbroił i dlaczego drugiej nie. Jeśli koszyk mimo to się zamknął, powód poda linia strażnika zera [BEa Adapted] … zero-level guard … - closing setup (rozdział 12.6).
22.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 pisze przy starcie ostrzeżenie w dzienniku Experts (
[O!kurra] WARNING: another instance on XAUUSD …), a okienko pokazuje przy włączonej komórce Instance Conflict Popup (rozdział 5.5). Od 2.05 ostrzeżenie działa dla każdego wykresu tego terminala — do 2.04 dwa wykresy otwarte jeden po drugim były dla robota w 15 przypadkach na 16 jednym wykresem i ostrzeżenia nie było. Ostrzeżenie tylko informuje — robot niczego nie blokuje. Po przeniesieniu robota na inny wykres bez zdejmowania go (Remove), np. przez zamknięcie starego wykresu, przy pierwszym starcie na nowym wykresie może pojawić się jedno fałszywe ostrzeżenie: rezerwacja bazy starego wykresu zostaje do tej chwili.
Priorytet. Gdy zbiega się kilka warunków, Daily P/L Limits mają pierwszeństwo nad EG/PT/Basket Max Loss (rozdział 14).
22.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 '…' - skippingw 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.
22.10 Cross-button Triggers
Trigger się nie wyzwala
- 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).
- Zły slot do zdarzenia. Ręczny klik wystrzela tylko OnManualOn, nie OnAnyAutoOn. Dobierz slot do zdarzenia.
- 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.
22.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 22.3).
22.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ł 20.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).
22.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:
- Sprawdź dziennik Experts — od EA 1.26 szukaj wpisów
[OwnReg] reconcile ... ORPHAN(fabrycznie dostaniesz też popup). Wpis wymienia numer pozycji i przyczynę. - Przywróć opiekę: ustaw
Global_OwnOnly_Reconcile = Adopt(przygarnianie z dowodem własności) albo jednorazowoGlobal_OwnOnly_AdoptExisting = true(przygarnia wszystkie pozycje pasujące po MN — użyj świadomie i cofnij nafalse). - 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.
- 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).
22.14 Time Setups
Setup minutki długo nie ma pozycji
Objaw: setup żyje (na wykresie widać jego poziom i cel), a pozycji nie ma przez wiele minut.
- Pierwsze zlecenie czeka na warunki (od 2.05). Przy
Open the first position at activation?=Yes - first ENABLED opt-in button opens at marketpierwsze zlecenie, które nie może wejść, czeka i ponawia próbę, dopóki setup żyje i nie ma pozycji. Powód stoi w dzienniku Experts, np.[TSet] setup #12 BUY 14:18 first order waits: spread 41 pts above Max spread 30 - market entries wait. Linia przychodzi najwyżej raz na minutę dla jednego rodzaju powodu — sama zmiana liczby, np. spreadu, nie daje nowej linii. Gdy zlecenie odrzucą bramki samego buttona, pod ich linią stoi[TSet] first order of setup #12 NOT opened - refused by B2's own gates (see the line above); it waits - next attempt in 60 s …. Pełna lista powodów czekania: rozdział 19.8. - Żaden button tego kierunku nie jest włączony. Robot mówi to raz, przy aktywacji (
[TSet] first-order at market: no ENABLED opt-in BUY button - setup #12 waits without a position), i nie ponawia próby — button włączony później wejdzie ze swojego sygnału. - Pierwsze zlecenie jest wyłączone. Przy
No - wait for the buttons' own signals(fabrycznie) setup dostaje pozycję tylko z sygnału buttona w swojej strefie zbierania (rozdziały 19.6 i 19.8). Sprawdź wtedy przyczyny z sekcji 22.4.
Minuta z listy nie utworzyła setupu w przerwie handlowej
To zamierzone (od 2.05). Minuta, która wypada w przerwie handlowej brokera (są notowania, nie ma handlu — np. XAUUSD 01:00–01:02, BTCUSD w sobotę 00:00–01:00) albo w pauzie po odmowie brokera „market closed”, nie tworzy setupu. W dzienniku Experts: [TSet] BUY 01:01 SKIPPED: the trade session of XAUUSD is shut at this minute, a w pauzie po odmowie z dopiskiem (pause after MARKET_CLOSED). Do 2.04 setup powstawał, a jego pierwsze zlecenie wracało z odmową. Wszystkie powody, dla których minuta nie tworzy setupu: rozdział 19.11a.
Cel BUY minutki leży o jeden spread bliżej niż w 2.04
To zamierzone (od 2.05). Robot liczy cel minutki tak jak TimeR PRO — od ceny otwarcia (open) świecy M1 minuty, a nie od ceny Ask pierwszego ticka. Świeca notuje cenę Bid, więc cel BUY wypada o jeden spread bliżej niż w 2.04 — tam, gdzie zmierzyło go badanie listy minut. Cel SELL dostaje dodatek spreadu z pola SELL target and stop: spread allowance added to the minute's TP and SL (points; 5 = TimeR Used Spread, 0 = the spread at the activation). Przy każdej aktywacji robot pisze, od jakiej ceny liczy cel: [TSet] setup #12 target from the M1 candle open … (candle 14:18). W 2.05 celu nie da się liczyć po staremu. Szczegóły: rozdział 19.7.
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.