EN
Artykuły / 3.1 Spread
Spreadszkic

Spread w backteście: świece M1 kontra tiki

14.11.20265 min czytania

W skrócie: test na świecach M1 (tryb “1 minuta OHLC”) liczy koszt ze spreadu zapisanego przy każdej świecy. Ta liczba bywa sztuczna. Na Nasdaq u jednego brokera przez trzy lata wynosiła równo 7,0 punktu, a z tików wychodzi 7,7-7,9, w 2026 nawet 10,4 przy 8,1 ze świec. Przed zaufaniem backtestowi sprawdzam spread z tików, i tylko w godzinach, w których bot handluje.

Co zmierzyłem

Pokażę to na indeksie Nasdaq (symbol NDX) na koncie demo Darwinex, na danych z lat 2018-2026. Wybrałem tego brokera, bo ma długą historię tików bez dziur, od stycznia 2018.

Zrobiłem dwa pomiary. Pierwszy: średni spread ze świec M1, czyli to, co widzi tester w trybie “1 minuta OHLC”. Drugi: spread z każdego tiku, czyli ask minus bid, z całego maja każdego roku. W maju 2026 to było 10,8 mln tików.

Na tym symbolu 1 punkt to 0,1 punktu indeksu. Spread 7 punktów oznacza więc 0,7 punktu indeksu między ceną kupna a sprzedaży.

Wynik: maj każdego roku

Maj Spread ze świec M1 Spread z tików Najmniejszy / największy
2018 5,1 6,1 -30 / 124
2019 14,8 11,2 0 / 120
2020 7,1 7,0 6 / 118
2021 8,3 8,1 6 / 301
2022 6,6 7,8 6 / 128
2023 7,0 7,8 6 / 199
2024 7,0 7,7 7 / 218
2025 7,0 7,9 7 / 250
2026 8,1 10,4 6 / 234

Wartości w punktach, spread z tików to średnia po wszystkich tikach miesiąca.

W latach 2020-2021 oba pomiary się zgadzają. Od 2022 świece M1 pokazują mniej niż tiki, o 0,7 do 2,3 punktu. Test na OHLC jest wtedy tańszy niż rzeczywistość.

Równe 7,0 przez 36 miesięcy

Kiedy rozbiłem spread ze świec na miesiące, lata 2023-2025 wyglądały podejrzanie: prawie idealnie 7,0 w każdym miesiącu, przez trzy lata. Do tego bez różnic między nocą a dniem. Prawdziwy spread tak się nie zachowuje. To wartość wpisana do historii, a nie zmierzona.

Tiki z tych samych lat pokazują 7,7-7,9 punktu średnio i skoki do 200-250 punktów w pojedynczych chwilach. Świeca M1 ma jedno pole na spread i takiego skoku nie pokaże. A właśnie w takiej chwili stop loss pozycji sprzedaży zamyka się dalej, niż wynika z wykresu.

Lata 2018-2019: dane do wyrzucenia

W maju 2018 najmniejszy spread z tików to -30 punktów. Ujemny spread nie istnieje, cena kupna nie może być niższa od ceny sprzedaży. W maju 2019 jest 1044 tików ze spreadem równym zero. W historii świec styczeń i luty 2018 mają spread 0.

Bot testowany na takich danych handluje za darmo albo z dopłatą. Wyniku z lat 2018-2019 na tym symbolu nie biorę pod uwagę przy ocenie kosztów. Sama obecność danych w terminalu nie znaczy, że są dobre.

Spread zależy od godziny

Średnia z całej doby też wprowadza w błąd, tylko w drugą stronę. Maj 2026, tiki, czas serwera (Nowy Jork plus 7 godzin):

  • noc, godziny 01-03: 12-14 punktów,
  • dzień w Europie, godziny 04-14: około 11,
  • sesja w Nowym Jorku, godziny 16-22: około 8,9,
  • cała doba: 10,4.

Bot, który handluje tylko w sesji nowojorskiej, płaci około 15% mniej, niż mówi średnia dobowa. Bot nocny płaci wyraźnie więcej. Koszt liczę więc z godzin, w których bot naprawdę otwiera i zamyka pozycje.

Świece M1 od 2022 roku tych różnic nie pokazują wcale. Spread jest w nich stały przez całą dobę.

Ile to kosztuje

Przykład, liczby dla uproszczenia. Pozycja, na której 1 punkt indeksu to 10 USD. Spread 8,1 punktu ze świec to 0,81 punktu indeksu, czyli 8,10 USD kosztu na transakcję. Spread 10,4 z tików to 10,40 USD. Różnica: 2,30 USD na każdej transakcji.

Przy 300 transakcjach rocznie test OHLC pokazuje wynik o około 690 USD lepszy niż prawdziwy. Dla bota z krótkim stop lossem i małym zyskiem na transakcję to potrafi być różnica między plusem a zerem. Dla bota, który bierze kilkaset punktów na transakcji, to drobiazg.

Jak sprawdzić u siebie

Najprościej uruchomić w testerze ten sam krótki okres dwa razy: raz w trybie “1 minuta OHLC”, raz “Każdy tik na podstawie realnych ticków”, i porównać wynik. Jeśli chcesz zobaczyć sam spread, wystarczy mały EA, który go liczy z tików:

// Średni spread z tików w punktach - wynik w raporcie testera (OnTester)
double g_spreadSum   = 0;
long   g_tickCount   = 0;

void OnTick()
  {
   MqlTick tick;
   if(!SymbolInfoTick(_Symbol, tick))
      return;
   g_spreadSum += (tick.ask - tick.bid) / _Point;
   g_tickCount++;
  }

double OnTester()
  {
   return (g_tickCount > 0) ? g_spreadSum / g_tickCount : 0.0;
  }

Uruchomiony na realnych tikach pokaże prawdziwą średnią. Uruchomiony na “1 minuta OHLC” pokaże to, co tester bierze ze świec. Miesiąc tików na indeksie liczy się u mnie kilka minut, więc nie robię tego dla całej historii, tylko dla jednego miesiąca z każdego roku.

Ja na co dzień testuję i optymalizuję na OHLC, bo jest wielokrotnie szybciej. Pomiar spreadu z tików robię raz dla symbolu i brokera, żeby wiedzieć, o ile test jest za tani.

Checklista

  • spread ze świec M1 porównany ze spreadem z tików, przynajmniej dla jednego miesiąca na rok,
  • w historii nie ma lat ze spreadem zerowym, ujemnym albo idealnie stałym,
  • koszt policzony z godzin pracy bota, nie z całej doby,
  • różnica przeliczona na USD na transakcję i pomnożona przez liczbę transakcji w roku,
  • pomiar zrobiony u brokera, u którego bot ma działać.

Powiązane

Ostrzeżenie: handel CFD i forex wiąże się z wysokim ryzykiem utraty kapitału. Wyniki pomiarów dotyczą jednego symbolu u jednego brokera i nie przenoszą się wprost na inne konta. Artykuł ma charakter edukacyjny i nie jest rekomendacją inwestycyjną.

Dalej w rozdziale

49

Spread według godzin: noc, Londyn i Nowy Jork

Spread na Nasdaq w maju 2026 wahał się od 8,7 punktu wieczorem do 13,7 po północy. Bot, który handluje tylko w sesji nowojorskiej, płaci mniej niż średnia dnia, a test na świecach M1 tego nie pokazuje.

54

Ile procent zysku strategii zjada spread: rachunek w jednostkach R

Spread kosztuje tyle samo na każdej transakcji, ale dla strategii z ciasnym stopem to połowa zysku, a dla szerokiego ułamek. Pokazuję, jak policzyć koszt w R i tabelę dla czterech wielkości stopa.

55

Filtr maksymalnego spreadu w bocie: trzy sposoby i pułapki

Jak ograniczyć wejścia przy wysokim spreadzie: limit w punktach z ponawianiem, limit kosztu jako procent ryzyka i poszerzenie SL zamiast odrzucenia. Z opisem pułapek, które wyszły przy wdrożeniu w botach.

61

Koszt całkowity transakcji w MT5: spread plus prowizja plus swap

Spread to tylko część kosztu. Jak policzyć pełny koszt jednej transakcji bota: spread, prowizję za lot i swap za noc, w jednej walucie i na tym samym locie, żeby porównać konta i strategie.