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);
}
//+------------------------------------------------------------------+
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
);
Odpalamy wiersz poleceń ( najlepiej używać total commandera i wpisać cmd wygodniej )
Aby pobrać dane wpisujemy w wierszu poleceń:
Kod: Zaznacz cały
php dl1.php
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
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%