Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Telegram!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Scripts

Demo_FileWriteInteger - script para MetaTrader 5

Visualizações:
1239
Avaliação:
(34)
Publicado:
2014.01.14 13:16
Atualizado:
2016.11.22 07:33
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

O script recebe os preços do símbolo especificado, analisa-os e grava dados do movimento de preços no arquivo binário em determinados períodos de tempo. A função FileWriteInteger() é usada para escrever todas os dodos

Valor da data será convertido primeiramente a string, dividido ao tipo array uchar, em seguida será escrito no arquivo usando a função.

Código:

//--- mostra a janela dos parâmetros de entrada ao lançar o script
#property script_show_inputs
//--- parâmetros para receber dados a partir do terminal
input string             InpSymbolName="EURUSD";           // par de moedas
input ENUM_TIMEFRAMES    InpSymbolPeriod=PERIOD_H1;        // timeframe
input datetime           InpDateStart=D'2013.01.01 00:00'; // cópia de dados na data de início
//--- parâmetros para a gravação de dados ao arquivo
input string             InpFileName="Tendencia.bin"; // nome do arquivo
input string             InpDirectoryName="Dados"; // nome do diretório
//+------------------------------------------------------------------+
//| Função iniciar do Script de programa                             |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime date_finish=TimeCurrent();
   double   close_buff[];
   datetime time_buff[];
   int      size;
//--- redefinir 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 os valores de fechamento dos preços. Erro código = %d",GetLastError());
      return;
     }
//--- copiar o preço de fechamento de cada barra
   if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1)
     {
      PrintFormat("Falha ao copiar os valores de fechamento dos preços. Erro código = %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("arquivo %s está disponível para ser escrito",InpFileName);
      PrintFormat("Caminho do arquivo: %s\\Arquivos\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- 
      int   up_down=0; // flag de tendência
      int   arr_size;  // tamanho do array arr
      uchar arr[];     // array tipo uchar 
      //--- escrever valores de tempo ao arquivo
      for(int i=0;i<size-1;i++)
        {
         //--- comparar fechamento de preço das barras atuais e das seguintes
         if(close_buff[i]<=close_buff[i+1])
           {
            if(up_down!=1)
              {
               //--- escrever valor de data para o arquivo usando FileWriteInteger
               StringToCharArray(TimeToString(time_buff[i]),arr);
               arr_size=ArraySize(arr);
               //--- primeiramente, escreva o número de símbolos no array
               FileWriteInteger(file_handle,arr_size,INT_VALUE);
               //--- escrever os símbolos
               for(int j=0;j<arr_size;j++)
                  FileWriteInteger(file_handle,arr[j],CHAR_VALUE);
               //--- alterar o flag de tendência
               up_down=1;
              }
           }
         else
           {
            if(up_down!=-1)
              {
               //--- escrever o valor da data para o arquivo usando FileWriteInteger
               StringToCharArray(TimeToString(time_buff[i]),arr);
               arr_size=ArraySize(arr);
               //--- primeiramente, escreva o número de símbolos no array
               FileWriteInteger(file_handle,arr_size,INT_VALUE);
               //--- escrever os símbolos
               for(int j=0;j<arr_size;j++)
                  FileWriteInteger(file_handle,arr[j],CHAR_VALUE);
               //--- alterar o flag de tendência
               up_down=-1;
              }
           }
        }
      //--- fechar o arquivo
      FileClose(file_handle);
      PrintFormat("Os dados são gravados, o arquivo %s foi fechado",InpFileName);
     }
   else
      PrintFormat("Falha ao abrir o arquivo %s, Erro código = %d",InpFileName,GetLastError());
  }

Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/1635

Demo_FileReadInteger Demo_FileReadInteger

O indicador demonstra o exemplo de como usar a função FileReadInteger().

Fine_Fractals_MTF Fine_Fractals_MTF

Este indicador cria, no gráfico atual, fractais de um período de tempo maior a partir do dados do indicador Fine_Fractals.

BrainTrend_HTF_Signal BrainTrend_HTF_Signal

BrainTrend_HTF_Signal exibe informações da direção de tendência das últimas barras do timeframe escolhido do indicadores BrainTrend1 e BrainTrend2 através de uma seqüência de objetos gráficos coloridos. O número de barras para ser usado é definido nos parâmetros de entrada.

IncCCIOnArray IncCCIOnArray

A classe CCCIOnArray é projetada para calcular os valores sobre o buffer do indicador Commodity Channel Index (CCI). Abaixo temos um exemplo do uso da classe.