Como obter valor do indicador

 

  Boa noite,

  Gostaria da ajuda, pois preciso saber o valor da media móvel (em numero). Por exemplo nesse EA abaixo gostaria que em Comment aparecesse o valor atual da média móvel.

 Sei que temos que usar o MqlParam e o Array para buscar as informações mas qual a variável que indica o valor da média móvel?


//+------------------------------------------------------------------+
//|                                                   SampleMQL5.mq5 |
//|                                             Copyright 
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Carlos"
#property link      ""
#property version   "1.00"


int MA1 = 0;            // Declaring variable to store fast MA handle
 
   
MqlParam params[];      // Array for storing indicators parameters

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  

   ResetLastError();
   MA1 = iCustom(NULL,0,"Examples\Custom Moving Average",
                          5,          // Period
                          0,          // Offset
                          MODE_SMA,   // Calculation method
                          PRICE_CLOSE // Calculating on Close prices
                 );
   Print("MA1 =",MA1,"  error =",GetLastError());
   ResetLastError();
  
   Comment ( Aqui gostaria do valor atual da media movel  );

//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---


double _ma1[];


   ArraySetAsSeries(_ma1, true);
 


   if (CopyBuffer(MA1,0,0,20,_ma1) < 0){Print("CopyBufferMA1 error =",GetLastError());}


//---
  }
//+------------------------------------------------------------------+

 

Olá schinestzki,

estou supondo que vc esteja com problemas em acessar o array com os dados do seu indicador.

Vc inicializou o indicador personalizado, criou o array _ma1[], deixou ele em série. Agora é só utilizar ele.

o índice 0 significa o valor atual da MA, os demais correspondem ao valor das barras anteriores. Se você não tivesse definido o array em série, o acesso ao índice seria ao contrário

Dê um

Print(_ma1[0]);

após a função CopyBuffer, se o seu código estiver correto, será possível visualizar o Print na aba Experts do mt5.

Espero ter ajudado.


obs: Quando você for postar em português, acho melhor utilizar o fórum dedicado a esta língua https://www.mql5.com/pt/forum , aqui é o fórum em inglês, é provável que poucas pessoas que sabem pt vejam o seu post.

Abraço,


Romeu.