Como trabalhar com os multiplos valores retornados pelo indicador?

 

Como trabalhar com os multiplos valores retornados pelo indicador?

Estou criando um EA que utiliza um indicador. Adicionei o indicador no EA com o código abaixo e consigo acessar seu valor.

Acontece que esse indicador possui três valores Linha Upper, Linha Median e Linha Lower. Então o que eu quero saber é como faço para capturar o valor de cada uma das linhas?

Grato.

indicador = iCustom(_Symbol, _Period, "MeuIndicador", period1);
 
Marcio Pereira:


Bom dia Marcio,

leia a documentação: https://www.mql5.com/pt/docs/series

Documentação sobre MQL5: Séries Temporais e Acesso a Indicadores
Documentação sobre MQL5: Séries Temporais e Acesso a Indicadores
  • www.mql5.com
Estas são funções para trabalhar com séries de tempo e indicadores. Uma série de tempo difere de um array de dados usual pela sua ordenação reversa - elementos de séries de tempo são indexados do final de um array para seu início (a partir do mais recente para o mais antigo). Para copiar valores de séries de tempo e dados de indicadores, é...
 
Rogerio Giannetti Torres:

Bom dia Marcio,

leia a documentação: https://www.mql5.com/pt/docs/series

Então Rogerio obrigado pela resposta. Porém ainda não consegui resolver minha questão.

Com o código abaixo eu consigo pegar o valor da array da linha superior.

Como pegar o array das linhas média e inferior?

ArraySetAsSeries(MediaHigh, true);
CopyBuffer(indicador, 0, 0, 2, MediaHigh);

//Com isso eu consigo imprimir o array da linha superior.
Print("Linha Upper: " + MediaHigh[0]);


 
 
Marcio Pereira:


Opa. 

o comando  SetIndexBuffer( 2LinhaLower, INDICATOR_DATA )  indica que índice da Linha Lower é 2, então o EA tem que copiar o buffer 2:    CopyBuffer(indicador,  2, 02, LinhaLower);

 
Marcio Pereira:

Então Rogerio obrigado pela resposta. Porém ainda não consegui resolver minha questão.

Com o código abaixo eu consigo pegar o valor da array da linha superior.

Como pegar o array das linhas média e inferior?


//Costumo fazer assim:

//ArraySetAsSeries(MediaHigh, true); - Esse não uso para ler indicador.

double MediaHigh[2],MediaMid[2],MediaLow[2];

// O segundo valor do CopyBuffer diz qual o Buffer que você leu. Se o Buffer 0 for High, então imagino que Buffer 1 seja médio e Buffer 2 seja low nesse seu indicador

CopyBuffer(indicador, 0, 0, 2, MediaHigh);
CopyBuffer(indicador, 1, 0, 2, MediaMid);
CopyBuffer(indicador, 2, 0, 2, MediaLow);


Print("Linha Upper: " + MediaHigh[0]);
Print("Linha Mid: ", MediaMid[0]);
Print("Linha Lower: ", MediaLow[0]);


 
Sonia TaitRogerio Giannetti Torres:



Nossa tão simples. kkkk

Vivendo e aprendendo, deu certo obrigado pela colaboração.

Razão: