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
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:
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
per avere la la quotazione effettiva il volume complessivo e time in ore min sec in 3 celle excel
che devo fare grazie,,
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.
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
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...
Se ho capito bene, non e' possibile utilizzare percorsi diversi da quelli indicati, vero?
Posta un commento