Brak świecy w pliku nie mówi jeszcze, czy zawiódł dostawca, czy rynek był zamknięty. Najpierw trzeba porównać eksport z jasno określonym zakresem i zasadami budowania świec. Ten poradnik zawiera lokalny analizator CSV: znajdzie puste miejsca w zadeklarowanej siatce czasu, powtórzenia, sprzeczne ceny i niepoprawne wiersze. Nie dopisze notowań. Wynik pomoże zdecydować, co wyjaśnić przed uruchomieniem testu historycznego.

Co ustalić, zanim policzysz brakujące świece?

Zapisz instrument, dostawcę, rodzaj ceny i interwał. Świeca ceny kupna, sprzedaży albo środka spreadu opisuje inny szereg; samo oznaczenie EUR/USD nie wystarcza. Porównuj takie same początki okresów. Plik z godzinami zakończenia świec będzie przesunięty wobec pliku oznaczającego ich otwarcie, nawet gdy oba eksporty zawierają poprawne ceny.

Analizator przyjmuje nagłówek timestamp,open,high,low,close. Każdy kolejny wiersz zawiera dokładnie pięć pól oddzielonych przecinkami. Ceny zapisuj z kropką dziesiętną, bez separatorów tysięcy; polski przecinek dziesiętny rozbije kolumnę. Pola w cudzysłowach, dodatkowe kolumny i separator średnikowy wymagają wcześniejszego przekształcenia. Narzędzie odrzuci taki format zamiast zgadywać znaczenie eksportu.

Znacznik czasu ma pełną postać, np. 2026-10-12T08:00:00Z lub 2026-10-12T10:00:00+02:00. Oba przykłady oznaczają ten sam moment. Sekundy są obowiązkowe; opcjonalnie można podać do trzech cyfr ułamka sekundy. Bez informacji o przesunięciu względem UTC narzędzie nie rozpozna czasu serwera. Nie dopisuj Z do lokalnej godziny, bo zmienisz jej znaczenie.

Określ osobno pierwszy i ostatni oczekiwany początek świecy. Granice są włączone: od 08:00 do 08:11 przy kroku jednej minuty oczekujesz dwunastu znaczników. Siatka zaczyna się na pierwszej granicy, a ostatnia musi wypadać dokładnie na niej. Ten model służy równym odcinkom czasu; miesięcy ani zmieniającej długość doby lokalnej nie opisuje stałe 1 440 minut. Zasady wyrównania świec podaje dokumentacja parametrów strefy czasu OANDA.

Jak użyć analizatora i odczytać własny przykład?

Wczytaj przygotowany CSV, wpisz krok od 1 do 1 440 minut oraz obie granice czasu. Analiza odbywa się w przeglądarce, bez wysyłania treści pliku i bez zapisywania jej w pamięci trwałej. Limit pliku wynosi 2 MiB, a limit wierszy oraz oczekiwanych miejsc po 100 000. Dłuższy okres podziel na zapisane, rozłączne okna; nie zmieniaj kroku wyłącznie po to, żeby ukryć braki.

Ceny przyjmujemy do 15 cyfr znaczących i 48 znaków na pole; dokładniejsze zapisy raportujemy jako błędne, aby nie ukryć konfliktu przez zaokrąglenie.

Sprawdź pokrycie pliku CSV

Plik jest analizowany lokalnie; narzędzie nie przesyła go ani nie zapisuje trwale. Format: timestamp,open,high,low,close. Maksymalnie 2 MiB. Daty wymagają Z lub jawnego offsetu.

Pobierz czysty przykład · Pobierz przykład z problemami

Fikcyjny eksport: dwanaście wierszy nie oznacza kompletu

Przykładowe pliki do ćwiczenia nie pochodzą z rachunku ani od dostawcy notowań. Ustaw M1, od 08:00 do 08:11 UTC. Poprawny plik ma dwanaście różnych znaczników i brak pustych miejsc. W pliku diagnostycznym dwanaście wierszy daje tylko osiem poprawnych miejsc na siatce.

Oczekiwany wynik pliku diagnostycznego
WynikZnaczenie w tym przykładzie
4 puste miejscaNie ma poprawnej świecy o 08:03, 08:04, 08:10 i 08:11.
2 powtórzone wierszeZnaczniki 08:02 i 08:06 pojawiają się ponownie.
1 grupa sprzecznych cenDwie poprawne świece 08:06 mają inne wartości OHLC.
1 niepoprawny wierszO 08:04 maksimum jest niższe od otwarcia.
1 wiersz poza siatką i 1 spadek czasu08:07:30 nie pasuje do M1; wiersz 08:08 zapisano po 08:09.

Najdłuższe przerwy obejmują po dwa oczekiwane początki świec. Przy remisie narzędzie wskazuje pierwszą: 08:03–08:04. To nie pomiar rzeczywistego czasu awarii. W tym przedziale mogły obowiązywać inne warunki, których plik nie opisuje.

Pokrycie fikcyjnej siatki M1: osiem miejsc z dwunastu

Pokrycie fikcyjnej siatki M1: osiem miejsc z dwunastuBraki o 08:03, 08:04, 08:10 i 08:11. O 08:06 są dwie sprzeczne świece. Kolory opisuje legenda; wniosek pod grafiką.Pokrycie fikcyjnej siatki M1: osiem miejsc z dwunastu✓08:00✓08:01✓08:02×08:03×08:04✓08:05?08:06✓08:07✓08:08✓08:09×08:10×08:11✓ Poprawny znacznik× Brak poprawnego rekordu? Konflikt cen
Wniosek: osiem znaczników zajmuje siatkę, ale jeden z nich wymaga rozstrzygnięcia ceny. Sama liczba dwunastu wierszy ukrywa cztery puste miejsca.

Które problemy trzeba wyjaśnić, a których nie naprawiać automatycznie?

Pokrycie liczy różne poprawne znaczniki, nie wiersze. Identyczny duplikat nie zwiększa pokrycia. Sprzeczne, lecz poprawne OHLC przy jednym znaczniku zajmują jedno miejsce na siatce i są dodatkowo oznaczone jako konflikt. Dlatego nawet zerowa liczba braków nie oznacza gotowości danych: cenę w takim miejscu trzeba rozstrzygnąć ze źródłem, zachowując obie wersje do porównania.

Niepoprawny rekord nie zajmuje miejsca. Analizator sprawdza skończone liczby oraz warunki: maksimum nie może być niższe od otwarcia, zamknięcia ani minimum; minimum nie może być wyższe od pozostałych cen. Wiersz poza zakresem lub siatką nie poprawia wyniku. Raport pokazuje liczbę wszystkich problemów, ale najwyżej dwadzieścia przykładów każdej grupy, żeby duży eksport nie blokował strony.

Pusty weekend porównaj z kalendarzem sesji konkretnego produktu. Przerwę w środku deklarowanej sesji sprawdź w logu pobrania i oryginalnym źródle. Znacznik complete w dokumentacji świec OANDA opisuje zakończenie okresu świecy; nie jest certyfikatem kompletności całego eksportu. Nie wyciągaj z nazwy pola szerszego wniosku.

Nie uzupełniaj dziury ostatnią ceną tylko po to, żeby otrzymać ładny wykres. Taki zabieg tworzy własne, sztuczne świece i może zmienić wskaźniki oraz wykonanie stopów. Samo uporządkowanie wierszy nie usuwa konfliktu. Warto zachować oryginalny plik oraz osobny opis każdej korekty, zamiast nadpisywać dowody.

Czy kompletne OHLC potwierdzają rzeczywiste ticki w MT5?

Nie. Świece nie zapisują całej kolejności zmian ceny. MetaQuotes opisuje generowanie ticków, gdy istnieje świeca minutowa, ale brakuje ticków. CSV z pełnym M1 nie dowodzi więc, że test użył wyłącznie rzeczywistych obserwacji. Porównaj dziennik, zakres historii tickowej i model testera.

Sprawdź też faktyczny start przebiegu. Dokumentacja przygotowania historii wskazuje, że niewystarczające dane mogą przesunąć początek testu. Przy własnym eksporcie przez CopyRates porównaj żądaną i otrzymaną liczbę elementów; pobieranie może nadal trwać. Dalsze ustawienia omawia poradnik testera MT4 i MT5, a decyzję o walidacji metoda testowania strategii.

Co zrobić jutro z wynikiem kontroli danych?

  1. Zachowaj oryginalny eksport, ustawienia analizatora oraz wynik. Dopisz instrument, rodzaj ceny, strefę czasu i źródło sesji. Dzięki temu druga osoba może odtworzyć dokładnie to samo sprawdzenie, zamiast porównywać dwa nieopisane wykresy.
  2. Wyjaśnij najdłuższą przerwę i każdą sprzeczną grupę cen. Porównaj oryginalne rekordy oraz log pobrania. Jeżeli dostawca potwierdzi zamkniętą sesję, zapisz to wyjaśnienie; jeżeli brakuje danych, pozyskaj poprawiony eksport i wykonaj analizę ponownie.
  3. Uruchom krótki test wizualny na zaakceptowanym zakresie. Sprawdź sygnały przy wykrytych przerwach, koszt spreadu i kolejność wykonania. Następnie przejdź do kontroli danych i sygnału w Pythonie, jeśli przygotowujesz własny silnik. Ten raport nie prognozuje przyszłych zysków.

Sprawdź, czy rozumiesz

Jedno krótkie ćwiczenie

Około 2 min · możesz spróbować ponownie

Eksport ma 12 wierszy, ale 8 różnych poprawnych znaczników na siatce 12 miejsc. Ile miejsc pozostaje pustych?

  • 4
  • 0, bo liczba wierszy się zgadza
  • 8
Sprawdź odpowiedź i wyjaśnienie

4

12 oczekiwanych miejsc − 8 zajętych = 4 puste. Duplikaty i wiersze poza siatką nie zwiększają pokrycia.

Następny temat: Backtest w MT4 i MT5: dane, tryby i kontrola wyniku →

Po sprawdzeniu danych skonfiguruj model i koszty testera; komplet pliku nie oznacza poprawnego wykonania strategii.