domenica 5 dicembre 2010

Scrivere su file con Metatrader, quotazioni storiche e reali in excel

Molti trader sono spesso interessati ad analizzare i dati in modalità differenti rispetto alla classica visualizzazione di metatrader e hanno quindi bisogno di trasportare i dati su di altri strumenti quali excel, file di testo, database ecc.

Il centro storia di metatrader (lo potete trovare all'interno del menu strumenti) permette di esportare i dati storici in formato csv con le seguenti informazioni relative alle candele del timeframe selezionato:
  • Data e orario
  • Prezzo di apertura
  • Prezzo massimo
  • Prezzo minimo
  • Prezzo di chiusura
  • Volume
Centro storia metatrader


Potreste avere l'esigenza però di voler salvare degli altri dati magari relativi agli ordini aperti oppure il prezzo attuale del cross.

Scrivere un programma di questo tipo è piuttosto semplice, a seconda del fatto che queste informazioni vi servano una sola volta o ad ogni quotazione posizionerete il vostro file *.mq4 rispettivamente all'interno della cartella scripts o in quella experts.

Per maggiori dettagli potete cercare, nel metaeditor, le funzioni fondamentali per la scrittura su file, che sono:
  • FileOpen
  • FileWrite
  • FileClose
Di seguito riporto il codice di un expert advisor che si occupa di scrivere su di un file il prezzo battuto (in particolare l'Ask) ad ogni quotazione:

extern string  nome_file = "RealTimePrice.csv";

bool  error  = false;
int   handle;

int init(){
   //Apertura file 
   handle=FileOpen(nome_file,FILE_CSV|FILE_READ|FILE_WRITE,';'); 
   if(handle < 1) { 
      Print(GetLastError());  
      error = true;
   } 

   return(0);
}

int deinit(){
   //Chiusura FILE 
   FileClose(handle);

   return(0);
}

int start(){

   if (error)
      Print(GetLastError());  
   else{
      RefreshRates();   
      FileWrite(handle, Ask); 
   }
   
   return(0);
}

I file creati vengono posizionati nelle cartelle:
  • MetaTrader 4\tester\files -> in caso di file generati da backtest
  • MetaTrader 4\experts\files -> in caso di programmi attaccati ai grafici
 

6 commenti:

carlo10 ha detto...

Un altro modo per avere il prezzo in tempo reale in excel è quello di utilizzare le DDE di Metatrader, potete trovare gli esempi sul file che si trova nella cartella dell'installazione di metatrader: DDE-Sample.xls

Se vi serve esclusivamente il prezzo battuto potete utilizzare le seguenti formule:
=MT4|BID!EURUSD
=MT4|ASK!EURUSD

Unknown ha detto...

per avere la la quotazione effettiva il volume complessivo e time in ore min sec in 3 celle excel
che devo fare grazie,,

carlo10 ha detto...

Ciao, scusa il ritardo. Se intendi con le DDE allora dovresti provare con le seguenti:
=MT4|TIME!EURUSD
=MT4|VOLUME!EURUSD

Per il volume sono andato ad intuito, in questo momento non riesco a provarlo.

Unknown ha detto...

Ciao,
possibile avere in tempo reale su cella di Excel il massimo o minimo di un certo periodo interessato? che si aggiorni quindi in tempo reale man mano che cambia

Unknown ha detto...

grazie della tua rispsta carlo10 ma i volumi non li da e il time non da i secondi.. e mi servirebbe la quotazione effettiva non il bid e ask che muovono troppo e mi dicono poco fanno solo casino... dei future magari...

TheCollector ha detto...

Se ho capito bene, non e' possibile utilizzare percorsi diversi da quelli indicati, vero?

Posta un commento