EN
Artykuły / 10.4 Ochrona konta
Ochrona kontaszkic

Dzienny limit straty w bocie MT5 - jak go liczyć i wdrożyć

14.11.20265 min czytania

W skrócie: dzienny limit straty to próg, np. 5% salda, czyli 500 USD na koncie 10 000 USD. Po jego przekroczeniu bot zamyka swoje pozycje i do końca dnia nic nie otwiera. Sam próg to za mało. Trzeba wiedzieć, od jakiej kwoty bot liczy stratę (saldo czy equity na początku dnia), o której zaczyna się dzień (o północy serwera brokera, nie Twojej) i czy blokada zostaje po restarcie terminala. Jeśli któraś z tych rzeczy jest źle ustawiona, konto prop jest stracone, nawet gdy strategia jest dobra.

Dzienny limit straty - przebieg dnia

Po co limit dzienny, skoro każda transakcja ma SL?

Stop loss (SL) chroni jedną pozycję. Limit dzienny chroni całe konto w sytuacjach, których SL nie obejmuje:

  • seria strat w jednym dniu: bot wchodzi 4 razy i 4 razy trafia w SL,
  • kilka botów na jednym koncie, każdy z osobnym ryzykiem, które razem przekraczają próg,
  • poślizg na SL przy newsach albo luce cenowej, czyli strata 1,5-2R zamiast 1R (przy ryzyku 100 USD to 150-200 USD),
  • błąd w kodzie, przez który bot otwiera pozycje w pętli.

Na koncie prop firmy przekroczenie dziennego limitu oznacza utratę konta od razu. Wystarczy 1 dolar ponad limit, nawet przez chwilę, bo firma liczy equity, czyli wynik razem z otwartymi pozycjami.

Od czego liczyć: saldo czy equity?

W tym prop firmy różnią się najbardziej. Typowe warianty bazy dnia:

Baza dnia Jak liczona Pułapka
Saldo na początek dnia zamknięte transakcje do północy otwarta pozycja z zyskiem nie podnosi bazy
Equity na początek dnia saldo + otwarte pozycje o północy zysk z nocnej pozycji podnosi bazę, a jego oddanie liczy się jako strata
Wyższe z dwóch max(saldo, equity) najsurowsze, częste u firm z challenge dwuetapowym
Saldo początkowe konta stała kwota (np. 5% z 10 000) najprostsze, nie zmienia się w czasie

W bocie liczę bazę tak samo jak firma, u której jest konto. Jeśli nie wiem, jak liczy firma, biorę wariant najsurowszy i zostawiam zapas, np. bot blokuje się przy 80% limitu firmy.

Kiedy zaczyna się dzień?

Dzień w regułach prop firmy to prawie zawsze dzień serwera brokera, a nie czas w Polsce. Przy serwerze GMT+2 albo GMT+3 północ serwera wypada o 23:00 albo 22:00 w Polsce. Część firm, np. z serwerem w czasie NY-close, zaczyna nowy dzień o 17:00 czasu Nowego Jorku.

W kodzie bota oznacza to jedno: nowy dzień wykrywam z TimeCurrent() (czas serwera), a nie z TimeLocal() (czas komputera). Dwa razy w roku USA i Europa zmieniają czas w różnych terminach i przez 2-3 tygodnie różnica godzin jest inna. W tym okresie sprawdź, czy bot nie zaczyna dnia w złym momencie.

Jak to działa w moich botach

Wszystkie moje boty używają tego samego, wspólnego kodu limitu dziennego, więc każdy robi to samo:

  1. Na początku dnia serwera zapisuje bazę dnia (saldo albo equity).
  2. Co tik albo co minutę liczy wynik dnia: transakcje zamknięte dziś plus otwarte pozycje.
  3. Po przekroczeniu progu zamyka swoje pozycje (po swoim numerze magic) i ustawia blokadę do końca dnia.
  4. Blokada jest zapisana w zmiennej globalnej terminala, więc restart bota w ciągu dnia nie odblokowuje handlu.
  5. W Testerze odtwarzanie blokady jest wyłączone, każdy backtest startuje od zera.

Limit całego konta czy limit bota?

To wyszło w praktyce na koncie z kilkoma botami. Pierwsza wersja liczyła wynik całego konta. Jeden bot na minusie blokował wtedy wszystkie pozostałe, także te, które tego dnia zarabiały. Dziś blokada bota liczy tylko jego własne transakcje (jego numer magic), a limitu całego konta pilnuje osobny mechanizm. Więcej o liczeniu ryzyka kilku botów: Ryzyko łączne kilku pozycji i kilku botów.

Przykład progu z mojego konta demo 100 000 USD: dzienny limit bota 0,3% był za ciasny i blokował po jednej stracie. Podnieśliśmy go do 3% salda początkowego.

Błędy, które widziałem na żywo

Saldo początkowe ustawione na 0. Bot liczy procent od salda początkowego z inputu. Jeśli w inputie zostaje 0, to 5% z zera daje zero i bot blokuje się od razu albo nie blokuje się nigdy, zależnie od kodu. Przed wdrożeniem zawsze sprawdzam na każdym wykresie, czy saldo początkowe w ustawieniach bota jest większe od zera.

Awaria zasilania kasuje stan. MT5 zapisuje zmienne globalne na dysk dopiero przy zamknięciu terminala. Po awarii prądu terminal wstał bez blokady i bez bazy dnia. Bot “zapomniał”, że tego dnia już stracił. Teraz wynik dnia odtwarzam z historii transakcji (transakcje od północy serwera), a zmienna globalna jest tylko pomocnicza.

Limit sprawdzany tylko po zamkniętych transakcjach. Bot sprawdzał wynik dopiero po zamknięciu pozycji, a firma liczyła equity na żywo. Otwarta pozycja na -4,8% plus szeroki spread przy newsach i konto było stracone, zanim bot cokolwiek zrobił. Limit musi liczyć także otwarte pozycje.

Jak ustawić próg - przykład liczbowy

Konto 10 000 USD, limit firmy 5% dziennie, czyli 500 USD. Ryzyko na transakcję 100 USD, czyli 1R.

  • Próg bota: 80% limitu firmy, czyli 400 USD (4R). Zostaje 100 USD zapasu na poślizg i spread przy zamykaniu.
  • Jeśli na koncie są 3 boty po 100 USD ryzyka i wszystkie mają naraz otwarte pozycje, to razem 300 USD. Do progu zostaje 100 USD. Wtedy limit pojedynczego bota ustaw np. na 2R, a limit konta na 4R.
  • Sprawdź w backteście, ile dni w roku bot doszedłby do limitu. Jeśli więcej niż kilka, ryzyko na transakcję jest za wysokie.

Checklista wdrożenia

  • baza dnia liczona tak samo jak u firmy (saldo, equity albo wyższe z nich),
  • dzień liczony wg czasu serwera,
  • wynik dnia obejmuje otwarte pozycje,
  • próg z zapasem (70-80% limitu firmy),
  • blokada zostaje po restarcie i po awarii zasilania (odtworzenie z historii),
  • saldo początkowe na wykresie większe od zera,
  • po blokadzie przychodzi mail albo powiadomienie push,
  • test w Testerze na dniu z serią strat: czy bot naprawdę się zatrzymał.

Powiązane

Ostrzeżenie: handel CFD i forex wiąże się z wysokim ryzykiem utraty kapitału. Artykuł ma charakter edukacyjny i nie jest rekomendacją inwestycyjną.

Dalej w rozdziale

234

Dzienny cel zysku w bocie - czy zatrzymywać handel po zysku?

Kiedy dzienny cel zysku pomaga (reguła konsekwencji prop firm, ochrona przed oddaniem zysku), a kiedy obcina najlepsze dni. Wersje: stop po celu, blokada po powrocie do zera, zamknięcie o godzinie.

235

Blokada handlu zamiast usuwania bota z wykresu - dlaczego nigdy ExpertRemove()

Dlaczego bot nie powinien sam się usuwać z wykresu po przekroczeniu limitu. Jak zrobić blokadę nowych pozycji: flaga w bocie, blokada zdalna z panelu, pułapki (Algo Trading OFF, restart).

236

Maksymalny drawdown konta - automatyczne zatrzymanie bota

Statyczny i trailing drawdown, jak liczy go prop firma i jak bot ma reagować: zmniejszanie ryzyka przy spadku, blokada nowych wejść przed granicą, odblokowanie tylko ręczne.