Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Twitter!
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
Visualizações:
1018
Avaliação:
(28)
Publicado:
2014.01.14 13:59
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 define os sinais formados pelo indicador MACD e salva-os no arquivo. Nos parâmetros de entrada do script podem ser especificados os parâmetros para o cálculo do indicador MACD, o nome do par de moedas e os prazos, bem como a data a partir da qual iremos analisar os dados. O arquivo com os sinais de indicador estará localizado no subdiretório "Dados" da pasta local do terminal .

Código:

Primeiramente temos o array de valores do indicador e o array de tempo para o período especificado:

//--- o tempo final é a hora atual
   date_finish=TimeCurrent();
//--- receber o handle do indicador MACD
   ResetLastError();
   int macd_handle=iMACD(InpSymbolName,InpSymbolPeriod,InpFastEMAPeriod,InpSlowEMAPeriod,InpSignalPeriod,InpAppliedPrice);
   if(macd_handle==INVALID_HANDLE)
     {
      //--- falha ao receber o handle do indicador MACD
      PrintFormat("Erro quando recebe o handle do indicador. Erro código = %d",GetLastError());
      return;
     }
//--- fica em loop até o indicador calcular todos os seus valores
   while(BarsCalculated(macd_handle)==-1)
      Sleep(10); // pausa para permitir que o indicador cálcule os respectivos valores
//--- copiar os valores do indicador para um determinado período de tempo
   ResetLastError();
   if(CopyBuffer(macd_handle,0,InpDateStart,date_finish,macd_buff)==-1)
     {
      PrintFormat("Falha ao copiar valores dos indicadores. Erro código = %d",GetLastError());
      return;
     }
//--- copiar o tempo apropriado para os valores do indicador
   ResetLastError();
   if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,date_buff)==-1)
     {
      PrintFormat("Falha ao copiar valores de tempo. Erro código = %d",GetLastError());
      return;
     }

Em seguida, definir os sinais de indicadores e o tempo da sua formação:

//--- receber o tamanho do buffer 
   macd_size=ArraySize(macd_buff);
//--- analisar os dados e salvar os sinais dos indicadores para os arrays
   ArrayResize(sign_buff,macd_size-1);
   ArrayResize(time_buff,macd_size-1);
   for(int i=1;i<macd_size;i++)
     {
      //--- sinal Compra
      if(macd_buff[i-1]<0 && macd_buff[i]>=0)
        {
         sign_buff[sign_size]=true;
         time_buff[sign_size]=date_buff[i];
         sign_size++;
        }
      //--- sinal Venda
      if(macd_buff[i-1]>0 && macd_buff[i]<=0)
        {
         sign_buff[sign_size]=false;
         time_buff[sign_size]=date_buff[i];
         sign_size++;
        }
     }

Finalmente, podemos escrever os valores de sinais obtidos para o arquivo usando a função FileWrite() :

//--- abrir o arquivo para escrever os valores do indicador (se o arquivo estiver ausente, ele será criado automaticamente)
   ResetLastError();
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_CSV);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("%s do arquivo está disponível para a escrita",InpFileName);
      PrintFormat("Caminho do arquivo: %s\\Arquivos\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- primeiro, escreva o número de sinais
      FileWrite(file_handle,sign_size);
      //--- escrever o tempo e os valores dos sinais para o arquivo
      for(int i=0;i<sign_size;i++)
         FileWrite(file_handle,time_buff[i],sign_buff[i]);
      //--- fechar o arquivo
      FileClose(file_handle);
      PrintFormat("Os dados são gravados, o arquivo %s está fechado",InpFileName);
     }
   else
      PrintFormat("falha para abrir o arquivo %s file, Erro código = %d",InpFileName,GetLastError());

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

Waddah Attar Explosion Waddah Attar Explosion

O indicador mostra os momentos de aceleração mercado. Ele também indica o momento para compra, venda e saída do mercado.

Transformação de Fisher Transformação de Fisher

O indicador de Fisher calcula os níveis do preço máximo e mínimo nos dados históricos, determinando a direção da tendência e a previsão de uma reversão.

StepMA_Line StepMA_Line

StepMA é executado como uma média móvel.

X Bar Clear Close Trend X Bar Clear Close Trend

Indicador de tendência alternativa com base no padrão de rompimento do fechamento das barras extremas dos preços anteriores.