Tick data - 99% jakość modelowania w MetaTrader 4.

Tu można dyskutować o wszystkich sprawach związanych z rynkiem Forex.
bogaskilop
Stały bywalec
Stały bywalec
Posty: 22
Rejestracja: 21 lis 2008, 01:23

Tick data - 99% jakość modelowania w MetaTrader 4.

Nieprzeczytany post autor: bogaskilop »

Od dłuższego czasu męczyłem się z historią pobieraną przez MT4 do testowania różnych EA a to czegoś brakowało a to różne inne błędy itp .

Rozwiązanie na lepsze dane historyczne to pobranie danych z dukascopy , danych tickowych i przystosowanie ich do tego by MetaTrader mógł je używać.
Podany przykład opiera sie na Metatrader build 226 pod żadnym pozorem nie nalezy go updatować !!! Taka instalacja służy mi tylko do testowania EA.

alparius4setup_v226.exe


1. Po pierwsze potrzebujemy skryptu który pobierze nam dane historyczne z dukascopy ze strony :

http://www.dukascopy.com/swiss/english/ ... ibref=2061

Skrypty:

php_dukascopy.rar



Dane oferowane tam są od kwietnia 2007 wiec to najwcześniejszy termin od którego możemy pobierać tick data z DukasCopy.

Skrypty do pobrania danych to pliczek php_dukascopy.rar

Aby wybrać datę od której chcemy by skrypt pobierał dane potrzebujemy prostego skryptu który zmieni format daty używany przez ducascopy.

Przed pobieraniem określamy sobie od jakiej daty skrypty php maja pobrać dane w skrypcie wpisujemy datę która nas interesuje. odpalamy MT4 i wrzucamy skrypt data.mq4 na wykres. W komunikacie mamy podany prawidłowy format daty który użyjemy w skrypcie dl1.php (dla daty podanej w przykładowym skrypcie poniżej jest to -- 1230768000.

Kod: Zaznacz cały

//+------------------------------------------------------------------+
//|                                                         data.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  { 
  Alert (StrToTime("2009.01.01 00:00:00"));
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
Można też użyć Epoch Converter do zmiany formatu daty na format linux seconds-since-1970 format pod adresem :


Epoch Converter

2. Następnie otrzymany format daty wpisujemy plik dl1.php wraz z wybraną para walutową oto przykład:

Kod: Zaznacz cały

<?php
$currencies = array(
    "USDJPY" => 1230768000
    );
zapisujemy zmiany w pliku dl1.php
Odpalamy wiersz poleceń ( najlepiej używać total commandera i wpisać cmd wygodniej :P )

Aby pobrać dane wpisujemy w wierszu poleceń:

Kod: Zaznacz cały

php dl1.php
To potrwa dłuższa chwile :) , po pobraniu należy przekonwertować pobrane dane do pliku CSV wydając polecenie:

Kod: Zaznacz cały

php process.php EURUSD 201001 201101 EURUSD_2010_01-2011_01.CSV

Kod: Zaznacz cały

php process.php EURUSD start_date end_date nazwa.CSV
Jeśli pobraliśmy dane z dłuższego okresu załóżmy od kwietnia 2007 do dzisiaj
trzeba mieć na uwadze to że plik CVS tak zrobiony będzie bardzo duzy win XP ma ograniczenie do 2 GB win 7 ponad 4Gb na taki plik polecam generowanie danych w okresach rocznych tak jak w przykładzie wybrany jest okres 1 roku pomiedzy styczniem 2010 a lutym 2011 taki plik zajmuje 793 MB dla EURUSD ten sam okres to już waga 1.06 GB

3. Po zakończeniu procesu tworzenia pliku CVS należy go skopiować do katalogu Metatradera do experts/files.
kopiujemy zawartość pliku mql_skrypty.rar do katalogu MT4 oraz wrzucamy sobie multi loader loader-b226.exe dla naszej wersji MT4 do głównego katalogu naszej instalacji MT4. Odpalamy MT4 z pliku loader-b226.exe .



4. Wybieramy wykres danej pary walutowej której pobraliśmy dane ustawiamy interwał czasowy na którym chcemy testować nasze EA . Wybieramy w nawigatorze ze skryptów
Dukascopy2FXT.mq4

W polu CsvFile podajemy nazwę naszego pliku CSV w naszym wypadku jest to EURUSD_2010_01-2011_01.CSV

CreateHist na True ( można jej nie tworzyć jednak ja dla pewności ją tworze bo różne okresy testuje)

Spread - ustawiamy jaki ma być spread w pliku historii .
Start date i EndDate jeśli chcemy by stworzył historie z całego pliku CSV nic nie wpisujemy jeśli tylko wyrywek historii wpisujemy interesujący nas okres.
Resztę funkcji skryptu wedle uznania.

To potrwa dłuższa chwile po zakończeniu otrzymamy komunikat.

Wyłączamy platformę i kopiujemy lub przenosimy wygenerowane pliki :
z katalogu “experts\files” pliki HST do “history\nazwa serwera” ( w zależności na jakim koncie się zalogujemy na platformę ) .

z katalogu “experts\files” pliki FXT do “tester\history "

Aby nasz tester w MT4 nie generował pliku historii od nowa i mógł używać naszego pliku fxt po włączeniu MT4 odpalamy skrypt :

mt4build226fxtLoader.mq4

Później włączamy tester i możemy testować na dokładnych danych naszego EA na wygenerowanym interwale czasowym.

i jakość modelowania w raporcie jest 99%
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
michael7
Gaduła
Gaduła
Posty: 317
Rejestracja: 05 mar 2008, 18:34

Nieprzeczytany post autor: michael7 »

W folderze mql_skrypty.rar nie ma pliku exe, czy mógłbys ponownie go wstawić?Byłbym wdzięczny;]

neo002
Uczestnik
Uczestnik
Posty: 2
Rejestracja: 07 mar 2011, 13:06

Nieprzeczytany post autor: neo002 »

:D

Awatar użytkownika
Tymek
Pasjonat
Pasjonat
Posty: 648
Rejestracja: 20 mar 2006, 13:39

Nieprzeczytany post autor: Tymek »

Tak dodam od siebie: by pobrać dane z Dukascopy nie potrzeba żadnych
kombinacji. Wystarczy założyć 14 dniowe konto demo i tam z poziomu aplikacji
"JForex" w okienku testera strategii jest możliwość określenia dat początku i
końca serii. Pobrane mogą być ticki (4,5GB) lub inny dowolny wykres.
Trochę trzeba poczekać po naciśnięciu Download, ale potem jest aktywne
Save as ;) I można to zrobić dla Bid i Ask, dla dowolnej pary itp. itd ;)
Więc kombinacje ze skryptami całkowicie odpadają, do tego używanie skryptów
jest zabronione przez nich więc można spodziewać się blokady IP lub
nawet w przyszłości problemów z platformą ;)
Dane świeże bo ściągałem dane w ten weekend ;)
Każdy chce mieć pieniądze, ale pieniądze nie zawsze chcą każdego ;)

neo002
Uczestnik
Uczestnik
Posty: 2
Rejestracja: 07 mar 2011, 13:06

Nieprzeczytany post autor: neo002 »

Nie wiem dlaczego ale przy ściąganiu danych z DukasCopy "punkt 2" ciągle występują mi jakieś błędy ktoś wie może o co chodzi ? ... 1M
Alert (StrToTime("2010.01.12 00:00:00"));

<?php
$currencies = array(
"EURUSD" => 1263254400
);

WARNING: did not download http://www.dukascopy.com/datafeed/EURUSD/2010/03/22/10
h_ticks.bin (1271930400) - error code was 502
Content was: <?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Bad Gateway!</title>
<link rev="made" href="mailto:admin@dukascopy.com" />
<style type="text/css"><!--/*--><![CDATA[/*><!--*/
body { color: #000000; background-color: #FFFFFF; }
a:link { color: #0000CC; }
p, address {margin-left: 3em;}
span {font-size: smaller;}
/*]]>*/--></style>
</head>
<body>
<h1>Bad Gateway!</h1>
<p>
The proxy server received an invalid
response from an upstream server.
</p>
<p>
The proxy server could not handle the request <em><a href="/datafeed/EURUSD/
2010/03/22/10h_ticks.bin">GET&nbsp;/datafeed/EURUSD/2010/03/22/10h_ticks.bin</a>
</em>.<p>
Reason: <strong>Error reading from remote server</strong></p>
</p>
<p>
If you think this is a server error, please contact
the <a href="mailto:admin@dukascopy.com">webmaster</a>.
</p>
<h2>Error 502</h2>
<address>
<a href="/">www.dukascopy.com</a><br />
<span>Tue Mar 8 11:58:55 2011<br />
:( :|

Awatar użytkownika
reptile
Maniak
Maniak
Posty: 2799
Rejestracja: 13 gru 2008, 13:48

Nieprzeczytany post autor: reptile »

Tymek pisze:Pobrane mogą być ticki (4,5GB) lub inny dowolny wykres.
A przerobiłeś do FXT ?
Mam ten plik .. csv
JForex2FXT przeróbka ok 30 min EURUSD_Ticks__2007.01.01_2011.01.01.csv
Dukascopy2FXT podobnie ale, pliki stworzone są w Bajtach :lol:

Z kolei po przeróbce JForex2FXT EURUSD1_0.fxt - 2,16GB
a tester mówi

Kod: Zaznacz cały

2011.03.08 14:01:01   TestGenerator: internal error because the file not opened
help :cry:

Dodano po 1 minutach:

Czy ktoś wie jak się do tej sprawy mają dane od Dukascopy, które na początku są kwotowane do 4 a potem 5 miejsc po przecinku ?
R.E.P.T.I.L.E. - Robotic Electronic Person Trained for Infiltration and Logical Exploration (off-line,only e-mail)

Awatar użytkownika
Tymek
Pasjonat
Pasjonat
Posty: 648
Rejestracja: 20 mar 2006, 13:39

Nieprzeczytany post autor: Tymek »

reptile pisze:początku są kwotowane do 4 a potem 5 miejsc po przecinku
Tak samo jest z danymi ściąganymi z serwera metaqoutes więc nie widzę problemu. Zrób eksport do csv i zobaczysz to samo.

Można z dukasa ściągnąć dowolny wykres.
Każdy chce mieć pieniądze, ale pieniądze nie zawsze chcą każdego ;)

Awatar użytkownika
reptile
Maniak
Maniak
Posty: 2799
Rejestracja: 13 gru 2008, 13:48

Nieprzeczytany post autor: reptile »

Tymek pisze:Można z dukasa ściągnąć dowolny wykres.
No ale mam taki jak piszę 2007.01.01_2011.01.01.csv
matka pisze: nie wiem do końca o co chodzi.
reptile pisze:a tester mówi
Kod:
2011.03.08 14:01:01 TestGenerator: internal error because the file not opened
No tester nie czyta pliku po przeróbce JForex2FXT a ten Dukascopy2FXT przerabia coś przez 30 min i tworzy bliki w Bajtach nie w GB!
matka pisze:Używasz może win XP?
W7 .. hmm
reptile pisze:Z kolei po przeróbce JForex2FXT EURUSD1_0.fxt - 2,16GB
Już mi się nie chce ściągać mniejszego okresu z dukasa ok 1 rok by stwierdzić błąd skryptu.. lub coś innego..
A czy ktoś w praktyce przerabiał takie okresy lub większe?
Spróbuję odgrzebać jeszcze stare wersje skryptów
R.E.P.T.I.L.E. - Robotic Electronic Person Trained for Infiltration and Logical Exploration (off-line,only e-mail)

Awatar użytkownika
reptile
Maniak
Maniak
Posty: 2799
Rejestracja: 13 gru 2008, 13:48

Nieprzeczytany post autor: reptile »

matka pisze:Nie musisz ściągać jeszcze raz, wystarczy wygenerować odpowiednie csv z danych już ściągniętych.
No ale ten i inne csv utworzyłem przez tester Dukascopy .... jak go mam edytować na mniejszy okres ? XLS otwiera go do połowy :D
Cache JForex usunąłem bo ten dukasyf nie radzi sobie z profilami i za każdym razem tworzy nowe i nie korzysta z starych.
A przeróbka starymi skryptami i używanie nowych builldów terminala ma jakiś wpływ czy to bez znaczenia i ma być tylko plik FXT?
Już mi brak cierpliwości do tego.. 8)
R.E.P.T.I.L.E. - Robotic Electronic Person Trained for Infiltration and Logical Exploration (off-line,only e-mail)

Awatar użytkownika
reptile
Maniak
Maniak
Posty: 2799
Rejestracja: 13 gru 2008, 13:48

Nieprzeczytany post autor: reptile »

No to coś skopałeś, powinieneś zrobić tak (w okienku CMD):
zapewne :D
Nie użyłem skryptów php bo uznałem, że jak się coś z netem podzieje to mi niedociągnie lub przerwie (co planowałem) ściąganie tych 4,5 GB z danego okresu, a Jforex ma cache i zawsze można dociągnąć innym razem a później zapisać csv.
Jest csv .. nie ma FXT jest problem :lol:

Ja liczyłem, że z dużego csv wybierając własny fragment w skrypcie do mt4 będzie lepszym rozwiązaniem.
R.E.P.T.I.L.E. - Robotic Electronic Person Trained for Infiltration and Logical Exploration (off-line,only e-mail)

ODPOWIEDZ