//+------------------------------------------------------------------+ //| Demo_FileWriteFloat.mq5 | //| Copyright 2013, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2013, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //--- mostrar a janela de parâmetros de entrada quando do lançamento do script #property script_show_inputs //--- parâmetros para a recepção de dados a partir do terminal input string InpSymbolName="EURUSD"; // par de moedas input ENUM_TIMEFRAMES InpSymbolPeriod=PERIOD_M15; // período de tempo input datetime InpDateStart=D'2013.01.01 00:00'; // data de início da cópia dos dados //--- parâmetros para escrever dados no arquivo input string InpFileName="Close.bin"; // nome do arquivo input string InpDirectoryName="Data"; // nome do diretório //+------------------------------------------------------------------+ //| Programa Script da função start (iniciar) | //+------------------------------------------------------------------+ void OnStart() { datetime date_finish=TimeCurrent(); double close_buff[]; datetime time_buff[]; int size; //--- redefine o valor de erro ResetLastError(); //--- copiar o preço de fechamento de cada barra if(CopyClose(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,close_buff)==-1) { PrintFormat("Falha ao copiar valores de preço de fechamento. Código de erro = %d",GetLastError()); return; } //--- copiar o tempo para cada barra if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1) { PrintFormat("Falha para copiar valores de tempo. Código de erro = %d",GetLastError()); return; } //--- receber o tamanho do buffer size=ArraySize(close_buff); //--- abrir o arquivo para escrever os valores (se o arquivo estiver ausente, ele será criado automaticamente) ResetLastError(); int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN); if(file_handle!=INVALID_HANDLE) { PrintFormat("%s arquivo está aberto para escrita",InpFileName); PrintFormat("Caminho do arquivo: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH)); //--- escrever fechamento do tempo dos preços e os valores para o arquivo for(int i=0;i<size;i++) { FileWriteDouble(file_handle,(double)time_buff[i]); FileWriteFloat(file_handle,(float)close_buff[i]); } //--- fechar o arquivo FileClose(file_handle); PrintFormat("Os dados são escritos, %s arquivo esta fechado",InpFileName); } else PrintFormat("Falha para abrir %s arquivo, Código de erro = %d",InpFileName,GetLastError()); } |