PDA

Zobacz pełną wersję : Znajdowanie przerw w danych historycznych



oxray
09-13-2010 11:07, 11:07
2 Załącznik (-i) Witam wszystkich,

Zwykle problemem związanym z Metatrade są złe dane historyczne.

Prowadzi to do bardzo mylących wyników podczas przeglądania wykresów w różnych ramach czasowych, nawet bez natychmiastowego zauważenia.
Może to zająć trochę czasu, aby odkryć, dlaczego wskaźniki, które zostały wykreślone na wykresie, nie mają sensu.
Przesuwanie wskaźnika myszy na wykresie szybko sprawi, że rzeczywiście znacznik czasu między tymi 2 kreskami jest o wiele dłuższy niż 1 bar ...
Jedyne wyjaśnienie, które można znaleźć w tym temacie: na wykresie są BRAKI BARÓW.

Wynika to z braku danych w Twojej historii.


Innym skutkiem brakujących prętów jest to, że wyniki analizy wstecznej EA mogą stać się wysoce niewiarygodne, gdy są uruchamiane przy użyciu zwykłych danych historycznych, gdy występują ogromne luki.


W większości przypadków użycie polecenia ”Odśwież” rozwiąże problem (kliknij prawym przyciskiem myszy na mapgt; Odśwież).

Czasami możesz to naprawić, pobierając historię z Centrum Historii (F2).

Ale czasami żadna z tych 2 metod nie zadziała, brakujące paski pozostaną nieobecne, cokolwiek robisz ...

Jeśli korzystasz z konfiguracji Alpari-UK MT4, być może już odkryłeś, że istnieje ogromna 2-tygodniowa luka w danych historycznych dla GPBUSD między 2010.03.12 a 2010.03.25 ...
A centrum historii nie pomoże: te bary na pewno nie są w ich historii!
W tym konkretnym przypadku istnieje trzecia metoda obejścia tego, wyjaśniona w tym wątku. Ale to tylko dla instalacji Alpari-UK ...


Wiele razy wpadałem w te problemy i wciąż wpadam na nie regularnie ...
Postanowiłem więc, że potrzebuję sposobu, aby jasno określić, czy w moich danych historycznych są luki, ile i gdzie.

Więc opracowałem 2 narzędzia, które znajdziesz poniżej.

- skrypt: sqCheckHistoryGapsScript.mq4:
ten skrypt (przejdzie do twojego folderu mt4expertsscripts) wyświetli na karcie Dziennika terminów pełną listę luk dla WSZYSTKICH TIMEFRAMES na wykresie, na który go upuścisz.
Plik dziennika można wyświetlić, klikając prawym przyciskiem myszy kartę Dziennik okna Terminal, a następnie wybierz Otwórz, a następnie otwórz plik yyyymmdd.log na przykład w Notatniku i przewiń na jego koniec.
Odkryjesz pełny raport dla każdego przedziału czasowego, z raportami statystycznymi, a także z informacją o jakości twojej historii.



- Wskaźnik: sqShowHistoryGaps.mq4

ten wskaźnik (trafia do folderu wskaźników ekspertów mt4) narysuje pionową czerwoną linię przy każdej luce znalezionej na bieżącym wykresie i wyświetli, ile słupków brakuje w tych miejscach.
Jest to łatwy sposób na zlokalizowanie luk w wykresach w lokalizacjach, które obecnie oglądasz.
Jeśli odświeżysz dane historii, gdy wskaźnik jest już załadowany, będziesz musiał odświeżyć wskaźnik, aby zaktualizować brakujące paski widoczne na odpowiednim wykresie.


Te narzędzia NIE są ROZWIĄZANIEM do samego problemu, ale przynajmniej teraz wiesz, dlaczego twoje wskaźniki lub EA działają szalone ...



Znane są pewne problemy z tymi narzędziami: mogą one dawać Ci fałszywe brakujące obszary, gdy rynki są zamknięte dłużej niż w sobotę i niedzielę, ze względu na święto bankowe, takie jak Boże Narodzenie czy Nowy Rok, ale łatwo zauważysz te daty.



Jeśli ktoś chce przyczynić się do poprawy tych wskaźników, możesz je modyfikować.
Po prostu poproszę Cię o opublikowanie ulepszeń w tym wątku, aby wszyscy mogli skorzystać z tych ulepszeń.


Dziękuję wam wszystkim.


SQ

ualizacja - 05 listopada 2010: sqCheckHistoryGapsScript.mq4 zaktualizowana o DST i automatyczne wykrywanie brokerastrefy czasowej;

https://www.forex-instant.com/attachments/1534937297576214000.mq4

https://www.forex-instant.com/attachments/15349372991014095732.mq4

oxray
12-16-2021 02:03, 02:03
Oto wskazówka, aby szybko znaleźć i zauważyć luki w danych historycznych po załadowaniu wskaźnika sqShowHistoryGaps.mq4 na wykresie: - wyświetlić obiekty narysowane na wykresie: ctrl-B - wszystkie obiekty rysowane przez wskaźnik mają nazwy zaczynające się z sqShowHistoryGaps -... Na przykład: sqShowHistoryGaps-GBPUSDM15: 2010.03.26 22:30 Jeśli chcesz znaleźć najnowszą lukę: - przewiń listę aż do ostatniego wpisu z prefiksem sqShowHistoryGaps - podświetl go (kliknij na niego ) - kliknij Pokaż - Twój wykres zostanie przeniesiony do miejsca, w którym znajduje się ta konkretna luka. Ciesz się ... (jeśli kiedykolwiek będziemy cieszyć się taką katastrofą MT4brokerów ...) SQ

atikcg
12-16-2021 03:24, 03:24
Squalou, Jak zwykle wykonałeś świetną robotę. Dzięki, Johnny

oxray
12-16-2021 04:44, 04:44
Squalou, Jak zwykle wykonałeś świetną robotę. Dzięki, Johnny
Pozdrawiam Johnny'ego ... To wyjaśnia, dlaczego niektóre z pudełek 3Tier LBO nie były ustawione tam, gdzie powinny być na niektórych zrzutach ekranu (i na niektórych moich wykresach !!!) ... Cholerny MT4, który nie powie o tych brakujących barów !!! SQ

Diego3371
12-16-2021 06:05, 06:05
Dlaczego po prostu nie skorzystasz z tej metody?
http://eareview.net/tick-data

oxray
12-16-2021 07:26, 07:26
Dlaczego po prostu nie skorzystasz z tej metody?
http://eareview.net/tick-dataJest to bardzo dobre w przypadku analizy historycznej (99% jakości modelowania). Ale Dukascopy aktualizuje pliki tick z 2-godzinnym opóźnieniem. ualizuję pliki zaznaczenia stamtąd raz dziennie, a nie więcej. Zajmuje całe wieki, aby ciąć te pliki tick w CSV, a następnie w pliki FXT HST ... Dzięki. SQ

lulakggabilas
12-16-2021 08:47, 08:47
ŁAŁ!!! dzięki!!! Uruchamianie skryptu w danych metaquotes historycznych daje 1,990,489 pominiętych 1 barów minuite, co stanowi 52% brakujących pasków !! niewiarygodne, gdy pobierałem 1m danych z dukascopy przy użyciu platformy JFOREX, nadal daje wiele złych barów. to jest alpari.ru ok?

oxray
12-16-2021 10:07, 10:07
ŁAŁ!!! dzięki!!! Uruchamianie skryptu w danych metaquotes historycznych daje 1,990,489 pominiętych 1 barów minuite, co stanowi 52% brakujących pasków !! niewiarygodne, gdy pobierałem 1m danych z dukascopy przy użyciu platformy JFOREX, nadal daje wiele złych barów. to jest alpari.ru ok?
52% jest bardzo wysokie ... Spróbuj zaktualizować dane historii z centrum historii i ponownie uruchom skrypt. W rzeczywistości skrypt ma problemy z piątkamiponiedziałkami w zależności od przesunięcia GMT brokera. Zobaczysz, że mogą istnieć wysokie bloki brakujących słupków pokazujące się w ciągu tygodnia, kiedy w rzeczywistości ich nie ma, ze względu na przesunięcie godzin otwarciazamknięcia tygodnia. Ale są one bardzo łatwe do wykrycia i mentalnie wyeliminować. Będziesz także doświadczać podobnych zakłóceń w święta (np. 25 grudnia, 1 stycznia itd.), Gdy te dni są dniami tygodnia. Co najwyżej może to spowodować, że może pokazać się jako maksymalnie 20% wirtualnie brakuje prętów, ale nie tak wysokie, jak 52%. Ale nadal jest to bardzo przydatne, aby dostrzec prawdziwe luki w historii. Następnie możesz zaktualizować dane historii i ponownie uruchomić skrypt, aby sprawdzić, czy to poprawiło sytuację. Metaquotes ma dużą lukę od 2010.03.12 do 26 na przykład (przynajmniej w UE i GU). Które prawie nie widzisz, gdy przewijasz swoją tabelę (w przybliżeniu z dużej luki cenowej!). Ale skrypt dobrze to zauważy. SQ

lulakggabilas
12-16-2021 11:28, 11:28
faktycznie 2/7 wynosi 14%, jeśli kod nie uwzględnia weekendów. wtedy 14% brakujących słupków jest ok. !! więc wszystko, co musimy wziąć pod uwagę to 11 świąt amerykańskich ... za XXX USD, symbole USDXXX napisałem część kodu, ale nie wiem, gdzie ją umieścić. możesz pomóc? Kod PHP: <kod> <span style = ”color: # 000000”> <span style = ”color: # 0000BB”> intmnth </span> <span style = ”color: # 007700”> = </span> < span style = ”color: # 0000BB”> Month </span> <span style = ”color: # 007700”> ();
</span> <span style = ”color: # 0000BB”> intday <span> <span style = ”color: # 007700”> = </span> <span style = ”color: # 0000BB”> Day </span> <span style = ”color: # 007700”> (); < br> </span> <span style = ”color: # FF8000”>*/252marketdaysperyearwithoutUSholidays
if (
(mnth == 1day == 1) ||/01SzczególnieszydzieńDay (allmarketsareclosed)
(mnth == 1 dzień == 19) ||/19 stycznia (MaydayMartinLutherKingDay)
(mnth == 2day == 16) ||/16FebrelisPresidentDay
(mnth == 5day == 25) | |/25MayisMemorialDay
(mnth == 7day == 3) ||/03JulyisBankHoliDay
(mnth == 7day == 4) ||/04JulyisIndependenceDay
(mnth == 9day = = 7) ||/07SeptemberisLabourDay
(mnth == 10day == 12) ||/12OctoberisColumbusDay
(mnth == 11day == 11) ||/11NovemberisVeteran # 8217; sDay
(mnth == 11day == 26) ||/26NovemberisT hanksgivingDay
(mnth == 12day == 25)/25DecemberisChristmasDay (allmarketsareclosed)
)
gap = false;
*
</span> <span style = ”Color: # 0000BB”> </span> </span> </code>

oxrgar
12-16-2021 12:49, 12:49
(mnth == 10 dni == 12) ||/25 grudnia to Dzień Kolumba (mnth == 11 dzień == 11) ||/25 grudnia jest weteran nr 8217; s październik i listopad. 24 grudnia kończy się wcześniej niż o północy (o 19:00)

oxray
12-16-2021 14:10, 14:10
faktycznie 2/7 wynosi 14%
hehe ... nie całkiem ... 2/7 to 28% ...
https://www.forex-instant.com/attachments/1534937291.jpgcóż, tak czy inaczej, przybliżona ocena jest wystarczająco dobra, ważna jest główna idea, a nie dokładne liczby.

więc wszystko, co musimy wziąć pod uwagę to 11 świąt ...
No cóż, rynki nie są zamknięte na całym świecie tylko ze względu na święta państwowe w USA ... Jedyne dni, w których rynki są zamknięte na całym świecie, na pewno są 25 grudnia, a 1 stycznia. Przeszedłem przez moją bazę danych kleszczy Dukascopy i są to jedyne 2 dni, w których rynki są zamknięte od satelity. Są jednak dni, kiedy rynki kończą się wcześniej niż zwykle, dzięki Smilee89. Główny problem związany ze skryptem polega na tym, że godziny rozpoczęcia i zakończenia na koniec tygodnia są zakodowane od piątku 22:00 do poniedziałku 00:00, niezależnie od przesunięcia strefy czasowej brokera. To już jest złe, ponieważ normalny tydzień targowy to DOKŁADNIE 5 dni (5 * 24 godziny), więc weekendy powinny być sobotnie 00:00 do poniedziałku 00:00, dostosowane do przesunięcia strefy czasowej pośrednika i czasu letniego. Następnie powinniśmy wykupić 25 grudnia 1 stycznia, a na koniec odciąć kilka godzin, gdy giełdy zamkną się wcześniej niż zwykle 24 i 31 grudnia, jak wskazał smilee89. Myślę, że powinno to być wyczerpujące. Tak więc skrypt i indi błędnie pokazują dni końca tygodnia jako brakujące słupki, gdy strefa czasowa brokera nie mieści się w zakresie GMT 0, GMT 1 lub GMT 2. Spróbuję to naprawić. Dziękuję za Twój wkład! SQ

oxray
12-16-2021 15:31, 15:31
Zakodowałem pliki DST i w-e ... Powinno to teraz poprawnie wykryć godziny na koniec tygodnia, niezależnie od brokera i strefy czasowej, w której się znajdujesz, a także automatycznie zastosować przesunięcie czasu letniego. Teraz powinno być bardzo mało brakujących pasków wokół w-e. Mam nadzieję, że ... Na chwilę umieściłem ten kod w skrypcie, dodam go również do wskaźnika. ualizacja w poście 1. SQ

ericaxugter
12-16-2021 16:51, 16:51
Cześć Squalou, Dzięki za wspaniałą pracę nad tym. Mam wskaźnik do działania, ale nie skrypt. Dziennik mówi: Załadowano pomyślnie szybko, a następnie usunięto. Podczas wyszukiwania na forum inni mieli podobne problemy ze skryptami, które zostały naprawione przez ustawienie opcji na karcie Experts Advisors. Zrobiłem to, ale wciąż nie było radości. Jeśli Ty lub inni macie jakieś pomysły, co może być przyczyną problemu, będę wdzięczny za wasz wkład. pozdrowienia

oxray
12-16-2021 18:12, 18:12
Cześć To jest normalne zachowanie skryptów: są one ładowane, uruchamiane raz, a następnie usuwane (chyba że skrypt nie wraca z funkcji start ()). Zakładka Dziennik powie ci tylko to. Ten skrypt wyświetla wszystkie swoje raporty w zakładce Eksperci w oknie Terminala (tam wszystkie wywołania Print () kończą się na MT4). Aby wygodnie przeczytać cały raport, kliknij prawym przyciskiem myszy kartę Eksperci w oknie Terminala, a następnie Otwórz, a następnie otwórz najnowszy plik .log, na przykład w notatniku, i przewiń do końca, znajdziesz wszystkie raporty . Sq

Cześć Squalou, Dzięki za wspaniałą pracę nad tym. Mam wskaźnik do działania, ale nie skrypt. Dziennik mówi: Załadowano pomyślnie szybko, a następnie usunięto. Podczas wyszukiwania na forum inni mieli podobne problemy ze skryptami, które zostały naprawione przez ustawienie opcji na karcie Experts Advisors. Zrobiłem to, ale wciąż nie było radości. Jeśli Ty lub inni macie jakieś pomysły, co może być przyczyną problemu, będę wdzięczny za wasz wkład. Pozdrawia Pravah

Cześć Squalou, Dzięki za wspaniałą pracę nad tym. Mam wskaźnik do działania, ale nie skrypt. Dziennik mówi: Załadowano pomyślnie szybko, a następnie usunięto. Podczas wyszukiwania na forum inni mieli podobne problemy ze skryptami, które zostały naprawione przez ustawienie opcji na karcie Experts Advisors. Zrobiłem to, ale wciąż nie było radości. Jeśli Ty lub inni macie jakieś pomysły, co może być przyczyną problemu, będę wdzięczny za wasz wkład. Pozdrawia Pravah

ericaxugter
12-16-2021 19:33, 19:33
Cześć To jest normalne zachowanie skryptów: są one ładowane, uruchamiane raz, a następnie usuwane (chyba że skrypt nie wraca z funkcji start ()). Zakładka Dziennik powie ci tylko to. Ten skrypt wyświetla wszystkie swoje raporty w zakładce Eksperci w oknie Terminala (tam wszystkie wywołania Print () kończą się na MT4). Aby wygodnie przeczytać cały raport, kliknij prawym przyciskiem myszy kartę Eksperci w oknie Terminal, następnie Otwórz, a następnie otwórz najnowszy plik .log w notatniku i przejdź do końca ...
Dzięki milionowi Squalou, Mój problem polegał na tym, że szukałem w dzienniku dziennika, a nie w dzienniku ekspertów dla wyniku. Teraz wszystko działa jak w reklamie. Dzięki jeszcze raz

bergerker441
12-16-2021 20:54, 20:54

wiliwokka1997
12-16-2021 22:14, 22:14
ŁAŁ!!! kiedy pobrałem 1m danych z dukascopy przy użyciu platformy JFOREX, nadal daje to wiele złych pasków.
1-minutowe dane z jforex również mają brakujące paski. Nie szok. Co powiesz na porównanie z danymi kleszczowymi? ten sam problem? świetna robota tutaj. Używam tego skryptu od dłuższego czasu i jest to część mojego domyślnego szablonu, który zapewnia, że ​​moje wskaźniki działają tak, jak powinny, a także do wizualnego backtestingu.