Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
- Visualizações:
- 1325
- Avaliação:
- 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

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

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 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.

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.