Mudar níveis do RSI por programação.

 

Bom dia Meninos

Estou trabalhando em um EA que usa o indicador RSI. 

Quando abro o EA, o indicador RSI aparece automaticamente numa janela secundária, mas sempre com os níveis máximo=70 e mínimo=30

Como faço para mudar esses níveis 70 e 30 por programação?

Agradeço antecipadamente.

Segue meu EA, somente linhas relevantes:

input int   RSIPeriod=13;         // period of RSI
int RSI1                          // rsi handle  
double rsi01[];                   // matriz ma01[]
///////////////////////////////////////////////////////////////////////////////
onInit()
{
 RSI1=iRSI(Symbol(),period,RSIPeriod,PRICE_CLOSE);
if(RSI1==INVALID_HANDLE)
 {
  Comment("Error Creating Handles for indicators - error: ",GetLastError(),"!!");
  return(-1);
 }
 return(INIT_SUCCEEDED);
}
///////////////////////////////////////////////////////////////////////////////
void OnTick()
{
 ArraySetAsSeries(rsi01,true);
 if(CopyBuffer(RSI1,0,0,7,rsi01)==-1)
 {
  Comment(" 0001  -  Error copying Moving Average MA1 indicator buffer - error:",GetLastError());
  ResetLastError();
  return;
 }
 /////////// Abaixo faço o código que usa rsi01[n] sendo n=de 0 até 6 /////////////// 
}
// rsi01[0] contem o valor atual da linha do indicador RSI
 
josemanoel:

Bom dia Meninos

Estou trabalhando em um EA que usa o indicador RSI. 

Quando abro o EA, o indicador RSI aparece automaticamente numa janela secundária, mas sempre com os níveis máximo=70 e mínimo=30

Como faço para mudar esses níveis 70 e 30 por programação?

Agradeço antecipadamente.

Segue meu EA, somente linhas relevantes:

Olá josemanoel, provavelmente a janela secundária que você refere é a que foi aberta pelo Strategy Tester, correto?

Por programação existem N formas de mudar esses níveis, mas acredito que você deseja fazer isso de forma nativa e sem chamadas de códigos externos, ou seja, através de chamada de uma função interna específica para esse tratamento de níveis.

Se é esse o caso, até onde eu saiba, não existe nenhuma função no MQL5 para isso.

Entretanto, uma possível solução de contorno seria desenvolver um indicador RSI dedicado com um gateway para teu EA, através da função iCustom().

Melhores cumprimentos,

Rogério Figurelli 

 
Rogerio Figurelli:

Olá josemanoel, provavelmente a janela secundária que você refere é a que foi aberta pelo Strategy Tester, correto?

Por programação existem N formas de mudar esses níveis, mas acredito que você deseja fazer isso de forma nativa e sem chamadas de códigos externos, ou seja, através de chamada de uma função interna específica para esse tratamento de níveis.

Se é esse o caso, até onde eu saiba, não existe nenhuma função no MQL5 para isso.

Entretanto, uma possível solução de contorno seria desenvolver um indicador RSI dedicado com um gateway para teu EA, através da função iCustom().

Melhores cumprimentos,

Rogério Figurelli 

A janela secundária que me refiro é a que mostra o RSI logo abaixo do gráfico das velas. Essa janela aparece em ambas as telas, tanto a do gráfico de velas com cotações online como a do Strategy Tester

Encontrei EA que mudam até a cor das linhas 70 e 30 do RSI, mas nada sobre como mudar esses valores.

No caso do RSI-2 dedicado, como faço para que meu EA use este meu RSI-2 ? Pois para chamar o RSI embutido no MetaTrader  uso a linha abaixo

 RSI1=iRSI(Symbol(),period,RSIPeriod,PRICE_CLOSE);

Como chamarei o meu RSI-2 ?

 
josemanoel:

A janela secundária que me refiro é a que mostra o RSI logo abaixo do gráfico das velas. Essa janela aparece em ambas as telas, tanto a do gráfico de velas com cotações online como a do Strategy Tester

Encontrei EA que mudam até a cor das linhas 70 e 30 do RSI, mas nada sobre como mudar esses valores.

No caso do RSI-2 dedicado, como faço para que meu EA use este meu RSI-2 ? Pois para chamar o RSI embutido no MetaTrader  uso a linha abaixo

 RSI1=iRSI(Symbol(),period,RSIPeriod,PRICE_CLOSE);

Como chamarei o meu RSI-2 ?

Olá josemanoel, agora está mais claro, você se refere ao próprio gráfico do ativo e a uma sub-janela separada do próprio indicador, mas que faz parte da janela principal, e não a uma janela externa.

Note que um indicador no MQL5 tem uma diretiva, definida pelo desenvolvedor, que irá definir se ele será visualizado na janela principal ou numa sub-janela separada (ver exemplo no final desse post).

Seja como for, para implantar a solução de contorno que estou sugerindo, deves criar um RSI próprio (podes adaptar o código dele que é aberto na plataforma) e colocares os parâmetros a mais desejados (os níveis como parâmetros). 

Depois, você deverá chamar não o RSI original, mas chamar esse RSI próprio (ou RSI-2, que você refere) usando a função iCustom (veja maiores detalhes aqui https://www.mql5.com/pt/docs/indicators/icustom).

Na documentação do link anterior tem um exemplo usando, ao invés do RSI, as médias móveis.

Note nesse exemplo que o indicador também está definido para uma sub-janela separada, como o RSI, através da primeira linha abaixo:

#property indicator_separate_window

Não é uma solução trivial para quem está começando com o MQL5 (não sei se esse é teu caso), portanto recomendo também estudares o artigo https://www.mql5.com/pt/articles/127 que deve ajudar também.

Melhores cumprimentos,

Rogério Figurelli

Documentação sobre MQL5: Indicadores Técnicos / iCustom
Documentação sobre MQL5: Indicadores Técnicos / iCustom
  • www.mql5.com
Indicadores Técnicos / iCustom - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
Razão: