Extraire les données historiques de Metatrader

 

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 :

{xtypo_code}//+—————————+

//| 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);

}

{/xtypo_code}

Voilà comment on l’utilise :

  1. Ouvrez le graphique que vous voulez utiliser et attachez y l’EA DataDumper,
  2. Pressez F6 pour le Testeur
  3. Sélectionnez le symbole et la pèriode
  4. Sélectionnez le champs ‘Open prices only’
  5. Configurez les propriété de pour l’année de départ et de fin
  6. Lancez le backtest

Quand le test est fini, allez chercher le fichier CSV résultant dans le répertoire <METATRADER>/tester/files.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>