|
Voici la traduction d'un article intéressant d'Andrew du site TheGeneticTrader dont vous pouvez trouver la VO en anglais ici : Extracting Data From Metatrader.
Si vous avez regardé le planning de mon projet, vous savez que ma première étape est de créer un EA qui récupère les données historiques de Metatrader pour les placer dans un fichier CSV que j'utiliserai par la suite pour mon algorithme génétique.
Voici donc le code de cet EA nommé DataDumper.mq4 qui réalise cette tâche :
//+---------------------------+
//| Historic Data Dumping EA |
//+---------------------------+
#property copyright "Andrew Whaley"
extern int min_year = 2008; extern int max_year = 2009;
// Global scope
int handle;
int init()
{
int p = Period();
string pd;
if (p == 1) pd = "M1";
else if (p == 5) pd = "M5";
else if (p == 15) pd = "M15";
else if (p == 30) pd = "M30";
else if (p == 60) pd = "H1";
else if (p == 240) pd = "H4";
else pd = "D1";
string filename = StringConcatenate(Symbol(), "_", pd, ".csv");
handle = FileOpen(filename, FILE_CSV|FILE_WRITE, ',');
FileWrite(handle, "Date", "Time", "Volume", "Low", "Open", "Close", "High", "Bid", "Ask");
return(0);
}
int deinit()
{
FileClose(handle);
return(0);
}
int start()
{ string d,m,y,h,mi; double open,close,high,low; double vol;
if ((Year() >= min_year) && (Year() <= max_year)) { if (Day() < 10) d = StringConcatenate("0", DoubleToStr(Day(),0)); else d = DoubleToStr(Day(),0);
if (Month() < 10) m = StringConcatenate("0", DoubleToStr(Month(),0)); else m = DoubleToStr(Month(),0);
y = DoubleToStr(Year(),0);
if (TimeHour(TimeCurrent()) < 10) h = StringConcatenate("0", DoubleToStr(TimeHour(TimeCurrent()),0)); else h = DoubleToStr(TimeHour(TimeCurrent()),0);
if (TimeMinute(TimeCurrent()) < 10) mi = StringConcatenate("0", DoubleToStr(TimeMinute(TimeCurrent()),0)); else mi = DoubleToStr(TimeMinute(TimeCurrent()),0);
string ds = StringConcatenate("\"", d, "-", m, "-", y, "\"");
string ts = StringConcatenate("\"", h, ":", mi, "\"");
open = iOpen(NULL, 0, 1); close = iClose(NULL, 0, 1); high = iHigh(NULL, 0, 1); low = iLow(NULL, 0, 1); vol = iVolume(NULL, 0, 1);
FileWrite(handle, ds, ts, vol, low, open, close, high, Bid, Ask); }
return(0);
}
Voilà comment on l'utilise :
- Ouvrez le graphique que vous voulez utiliser et attachez y l'EA DataDumper,
- Pressez F6 pour le Testeur
- Sélectionnez le symbole et la pèriode
- Sélectionnez le champs ‘Open prices only’
- Configurez les propriété de pour l'année de départ et de fin
- Lancez le backtest
Quand le test est fini, allez chercher le fichier CSV résultant dans le répertoire <METATRADER>/tester/files.
|