EN
Artykuły / 13.3 Programowanie MQL5 i AI
Programowanie MQL5 i AIszkic

Pułapka w cudzym kodzie: bufor SL jako 5 * _Point

14.11.20263 min czytania

W skrócie: opis strategii z internetu mówił o buforze stop lossa równym 5 punktom ceny, a kod, który faktycznie działa, liczył go jako 5 * _Point. Na indeksie z dwiema cyframi po przecinku to ok. 0,05 punktu, czyli praktycznie zero. Wynik z cudzego backtestu dotyczy kodu, nie opisu, i dlatego czytam kod.

Jak na to trafiłem

Odtwarzałem backtest strategii z cudzego filmu i strony (art. Jak odtworzyć cudzy backtest). Opis mówił o buforze SL w punktach indeksu. W wersji kodu, której wynik pokazywała strona, bufor był zapisany jako 5 * _Point. Na symbolu, który u mojego brokera ma dwie cyfry po przecinku, _Point to 0,01, więc bufor wynosi 0,05. Nikt tego nie ukrywał: autor pewnie pomyślał o “pięciu punktach”, a kod zrobił pięć setnych.

Czym jest _Point

_Point to najmniejszy krok ceny symbolu, wynikający z liczby cyfr po przecinku. Nie jest ani pipsem, ani ticiem w sensie giełdowym (ten bywa większy i mówi o nim osobna specyfikacja symbolu). Typowe wartości, zależne od brokera:

Symbol (typowo) Cyfry _Point 5 * _Point
EURUSD 5 0,00001 0,00005 (pół pipsa)
USDJPY 3 0,001 0,005 (pół pipsa)
XAUUSD 2 0,01 0,05 USD
indeks z 2 cyframi 2 0,01 0,05 punktu

Pięć “punktów” w rozumieniu człowieka i pięć _Point różnią się więc od dziesięciu do tysiąca razy, zależnie od symbolu. Ten sam kod daje inne zachowanie u brokera z 4 i 5 cyframi, a w ogóle inne na złocie niż na EURUSD.

Co taka pomyłka robi z wynikiem

Bufor SL ma chronić przed wybiciem o szum. Zbyt mały bufor znaczy stopy wybijane przez ruch o kilka groszy, więcej małych strat i inny rozkład transakcji. Wynik, który widziałem na stronie, powstał z tego mikroskopijnego bufora. Jeśli poprawiam kod “zgodnie z opisem”, odtwarzam inną strategię niż ta, która dała wynik z internetu. Moja zasada: najpierw odtwarzam kod taki, jaki jest, a poprawianie dopiero jako osobny test.

Jak czytam cudzy kod

  • Każda wartość w punktach: skąd pochodzi _Point, ile to wychodzi na moim symbolu (wypisuję w logu).
  • Przeliczanie pipsów typu * 10 bez sprawdzenia cyfr: działa tylko na 3 i 5 cyfrach.
  • Wartości zapisane na stałe obok inputów: czy opis nie sugeruje innego sensu.
  • Czy odległości liczone od ceny w chwili sygnału, czy od zamknięcia świecy.
  • Czy lot liczony z odległości SL zmienia się razem z buforem (ryzyko w USD czyni to szczególnie widocznym).

Jak piszę własny kod

Odległości trzymam w inputach z jednostką w nazwie (cena, punkty albo wielokrotność ATR), a przeliczenia robię w jednym miejscu. Wartość przeliczoną na cenę wypisuję raz przy starcie bota. Dzięki temu pomyłka “pięć punktów, a wyszło pięć setnych” wychodzi w pierwszym logu, nie po miesiącu testów.

Checklista

  • Dla każdej odległości w kodzie: policz ją w cenie na moim symbolu.
  • Porównaj z opisem strategii i z wykresem pozycji w Testerze.
  • Odtwórz najpierw kod taki, jaki jest; zmiany jako osobne testy.
  • Nigdy nie zakładaj, że _Point to pips.

[DO UZUPEŁNIENIA: czy znalazłeś podobny przypadek w kodzie gotowego bota z rynku albo w kodzie wygenerowanym przez AI]

Powiązane

Źródła

Brak źródeł zewnętrznych - przykład z odtwarzania cudzego backtestu (listopad 2026). Wartości _Point w tabeli są typowe i zależą od brokera.

Ostrzeżenie: artykuł ma charakter edukacyjny i nie jest poradą inwestycyjną. Wyniki z przeszłości nie gwarantują przyszłych. Handel na rynkach finansowych wiąże się z ryzykiem utraty kapitału.