write EURUSD price to file

 

Please, anybody know write code EA - "write current price to file"?


For example:

Pair: EURUSD

Filename: EURUSD.txt

1.EA check sell price of EURUSD

2.write it to a txt file

3.repeat from step 1. (real-time = fast response)

In file can not be other as price only. For example "1.3520". No more.


THANK YOU! Georgo

(sorry for my english)

 
georgo:

For example:

Pair: EURUSD

Filename: EURUSD.txt

1.EA check sell price of EURUSD

2.write it to a txt file

3.repeat from step 1. (real-time = fast response)

In file can not be other as price only. For example "1.3520". No more.

Hi georgo,

Please take a look at this example from the Portuguese forum:

Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação

Metodologia de teste de qualidade de dados

Malacarne, 2013.12.15 15:41

Senhores, obrigado pelas contribuições! Após as sugestões de vocês, vou enviar em anexo o código modificado do script para gravação de ticks.

Entretanto, após analisar o Expert Advisor do Figurelli, tenho algumas críticas a fazer:

1) vi que o mesmo faz a contagem de ticks com plotagem visual das informações, mas não gera logs para futuras comparações; talvez fosse interessante fazer a escrita dos dados recebidos pelo menos a cada um minuto no disco (o que acredito não deva impactar a performance do expert advisor) ou, na pior das hipóteses, ao término do EA.

2) outra crítica que faço é o fato de que o mesmo apenas analisar a quantidade de ticks recebidos, mas não faz uma análise da qualidade dos mesmos; vi que é feito um cálculo de média para os ticks, cuja finalidade para ser sincero ainda não compreendi; lembrando que ao fazer o cálculo da média perde-se muito a qualidade da informação em si...

No mais, o intuito desse post é justamente esse: gerar uma metodologia que tenha um consenso mínimo entre os membros do fórum para que possamos, de forma conjunta, analisar a qualidade dos dados que estamos recebendo e utilizando no terminal MetaTrader.

Segue abaixo o código modificado e o arquivo.

#property version       "1.001"
#property description   "Script usado para gravar ticks de um ativo."
//╔══════════════════════════════════════════════════════════════════╗
//║ GLOBAL VARIABLES ----------------------------------------------- ║
//╚══════════════════════════════════════════════════════════════════╝
int      filehandle, SystemTime[4], wMilliSec;
datetime tick_time;
double   tick_ask, tick_bid, tick_last;
ulong    tick_volume;
string   filename, time_stamp, mls;
//╔══════════════════════════════════════════════════════════════════╗
//║ ON INIT -------------------------------------------------------- ║
//╚══════════════════════════════════════════════════════════════════╝
int OnInit()
  { 
//---
      filename = TimeToString(TimeLocal(),TIME_DATE)+"_"+_Symbol+".txt";
      filehandle = FileOpen(filename,FILE_WRITE|FILE_TXT,'\t');
//---
      if (filehandle!=INVALID_HANDLE) 
         {
            FileWrite(filehandle,"Time","Symbol","Ask","Bid","Last","Volume");
            Print ("Início da exportação.");         
         }
      else Print("Erro de gerenciamento de arquivo! Erro = ",GetLastError());
//--- 
return(0);
  }
//╔══════════════════════════════════════════════════════════════════╗
//║ ON TICK -------------------------------------------------------- ║
//╚══════════════════════════════════════════════════════════════════╝
void OnTick()
  {  
   MqlTick last_tick;
   if(SymbolInfoTick(_Symbol,last_tick))
     {
//--- Definindo os ticks
      tick_time   = last_tick.time;
      tick_ask    = last_tick.ask;
      tick_bid    = last_tick.bid;
      tick_last   = last_tick.last;
      tick_volume = last_tick.volume;
     }
//--- Gravando os ticks
   if(filehandle!=INVALID_HANDLE)
     {    
       //Print(tick_time,"  ",tick_ask,"   ",tick_bid,"   ",tick_last,"   ",tick_volume);
       FileWrite(filehandle, tick_time, _Symbol, tick_ask, tick_bid, tick_last, tick_volume);
     }
   else Print("Gravação de TXT falhou! Erro = ",GetLastError());
  }

 

the following is my write log function,hope that be helpful

adapt to your requirement:

1.remove baseinfo

2.pass the price as WriteToLogFile's parameters 

3.the txt name is something like mylog_2014_06_18.txt ,you can change if you like

void WriteToLogFile(string logstring)
{
    int handle;
    string filedatestr = "" + TimeYear(TimeCurrent()) + "_" + TimeMonth(TimeCurrent()) + "_" + TimeDay(TimeCurrent()) + "";
    handle = FileOpen("mylog_" + filedatestr + ".txt", FILE_READ|FILE_WRITE);
    string baseinfo = TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);
    baseinfo = baseinfo + " Ask:" + Ask + " Bid:" + Bid + " Balance:" + AccountBalance() + " Equity:" + AccountEquity() + "\nMargin:" + AccountMargin() + " FreeMargin:" + AccountFreeMargin() + "\n";
    if(handle > 0)
    {
        FileSeek(handle, 0, SEEK_END);
        FileWrite(handle,baseinfo,logstring);
        FileClose(handle);
    }
}
Reason: