Lista de Papéis, que estiverem na mínima do IFR configurado no Gráfico Diário

 
Bom Dia, 
Configurei o IFR em 2 períodos, min de 40 max de 60...
Gostaria de saber como faço para gerar uma lista dos papéis q estão com o IFR 2 abaixo de 40, no grafico Diário...
Desde Ja Muito Obrigado.
 
cassioghiotti:
Bom Dia, 
Configurei o IFR em 2 períodos, min de 40 max de 60...
Gostaria de saber como faço para gerar uma lista dos papéis q estão com o IFR 2 abaixo de 40, no grafico Diário...
Desde Ja Muito Obrigado.

Boa tarde,

Existem diversas abordagens para resolver o seu questionamento. Mas acredito que todas envolvam o desenvolvimento de um script ou EA.

Vou exemplificar alguns cenários:

1 -  Você coletar os valores do RSI usando as funções de acesso a indicadores técnicos, e depois usar no seu EA, se quer uma lista de ativos pode obter as informações do mercado.

2 - Usa a mesma abordagem de coleta de dados da primeira opção e pode salvar um arquivo para analise externa.

3- Pode usar a mesma abordagem de coleta de dados da primeira opção e disparar uma mensagem no seu celular(push) ou enviar um e-mail.


Isso é uma pequena amostra do que da para fazer, poderia disparar os papeis para uma API Rest usando a função WebRequest, armazenar os dados em um banco de dados. Enfim da para ser implementado muita coisa. Mas sempre vai ser preciso coletar os dados do indicador como exemplificado no primeiro exemplo.

Documentação sobre MQL5: Indicadores Técnicos
Documentação sobre MQL5: Indicadores Técnicos
  • www.mql5.com
Todas as funções, como iMA, iAC, iMACD, iIchimoku etc, tem uma cópia do indicador técnico correspondente criada no cache global do terminal do cliente. Se uma cópia do indicador com esses parâmetros já existe, a nova cópia não é criada, e o contador de referências para a cópia existente aumenta. Essas funções retornam o manipulador da cópia...
 
cassioghiotti:
Bom Dia, 
Configurei o IFR em 2 períodos, min de 40 max de 60...
Gostaria de saber como faço para gerar uma lista dos papéis q estão com o IFR 2 abaixo de 40, no grafico Diário...
Desde Ja Muito Obrigado.


olá Cassio


1 - Crie uma struct para armazenar os dados, e posteriormente crie um array dessa struct:

struct Ativo
{
   string                            symbol;        // ticker do ativo
   double                            rsi;           // valor do último IFR (RSI)                
};

Ativo                              ativos[500];   // Array para armazenar os ativos

 

2 - Crie uma lista dos ativos que quer analisar, pode ser um array estático ou importar de um arquivo. Você pode puxar os ativos da janela de observação através do SymbolsTotal(true). Não use com o parâmetro false, pois ele vai retornar mais de 10 mil tickers listados na Bovespa, sendo que a maioria é lixo, opções, futuro de milho etc etc. Faça a iteração dessa lista populando o campo "symbol" da struct.


3 - Você já pode ir buscando o valor do IFR de cada novo ativo inserido no array, ainda dentro dessa iteração:


  // dentro da iteração, assumindo que é um for, usando a variável "i"

  int rsi_handle = iRSI(ativos[i].symbol,PERIOD_D1,14,PRICE_CLOSE);
        
  double rsi_array[];
  ArraySetAsSeries(rsi_array,true);          
       
  if (CopyBuffer(rsi_handle,0,0,1,rsi_array) < 1)  
      Print("Erro ao obter dados do IFR de ",ativos[i].symbol,": ",GetLastError());
      
  ativos[i].rsi = NormalizeDouble(rsi_array[0],2);


 4 - Ao final você terá um array com os tickers e os valores do IFR correspondentes. Aí você escolhe o que quer fazer com isso: mostrar num log, salvar em csv, dá até para enviar por email. Toda essa documentação você consegue encontrar buscando aqui pela comunidade, espero que te ajude!

Razão: