Download MetaTrader 5

Dúvida Programação com o IRVI

Para adicionar comentários, por favor Conecte-se ou registrar
Cláudio Müller
52
Cláudio Müller  

Olá amigos,

eu tenho um Robô que estou desenvolvendo,

ele já faz bastante coisa, abre e fecha ordens e posições, conforme uma série de parâmetros.


Resolvi colocar um indicador nele, para melhorar a indicação de colocar ordens.


Resolvi colocar o RVI, peguei o exemplo na página: https://www.mql5.com/pt/docs/indicators/irvi

Ele roda no robô, em janela extra, tudo direitinho.


Sou de TI, mas sou novo em MQL5.


Agora minha dúvida, como eu consigo "pegar" os valores calculados no RVI?


Estou batendo cabeça nesta questão, queria no OnTick() pegar o valor atual do RVIBuffer e do SignalBuffer, mas não entendi como programar isto.


Desde já agradeço, qualquer indicação.


Já procurei muito nos helps, no site e google, mas ainda não entendi como fazer isto.

Documentação sobre MQL5: Indicadores Técnicos / iRVI
Documentação sobre MQL5: Indicadores Técnicos / iRVI
  • www.mql5.com
Indicadores Técnicos / iRVI - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
Romeu Bertho
3729
Romeu Bertho  
Cláudio Müller:

Olá amigos,

eu tenho um Robô que estou desenvolvendo,

ele já faz bastante coisa, abre e fecha ordens e posições, conforme uma série de parâmetros.


Resolvi colocar um indicador nele, para melhorar a indicação de colocar ordens.


Resolvi colocar o RVI, peguei o exemplo na página: https://www.mql5.com/pt/docs/indicators/irvi

Ele roda no robô, em janela extra, tudo direitinho.


Sou de TI, mas sou novo em MQL5.


Agora minha dúvida, como eu consigo "pegar" os valores calculados no RVI?


Estou batendo cabeça nesta questão, queria no OnTick() pegar o valor atual do RVIBuffer e do SignalBuffer, mas não entendi como programar isto.


Desde já agradeço, qualquer indicação.


Já procurei muito nos helps, no site e google, mas ainda não entendi como fazer isto.


Boa noite!

Você deve trabalhar com a função iCustom(). Dê uma olhada neste artigo detalhando o seu uso.

Abs.

Cláudio Müller
52
Cláudio Müller  
Romeu Bertho:

Boa noite!

Você deve trabalhar com a função iCustom(). Dê uma olhada neste artigo detalhando o seu uso.

Abs.

Romeu, obrigado pela dica, já tinha chegado ali, mas não entendi como pegar os valores calculados a cada tick ou candle.


Peguei o fonte indicado no artigo, exatamente como ele está, rodou beleza, mas não entendi como pegar o valor calculado após cada tick, como fazer isto?


#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//---- Plotar Etiqueta1
#property indicator_label1  "Etiqueta1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- parâmetros de entrada
input int MA_Period=21;
input int MA_Shift=0;
input ENUM_MA_METHOD MA_Method=MODE_SMA;
//--- buffers do indicador
double         Label1Buffer[];
//--- Manipulador do indicador personalizado Moving Average.mq5
int MA_handle;
//+------------------------------------------------------------------+
//| Função de inicialização do indicador customizado                 |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- mapeamento de buffers do indicador
   SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);
   ResetLastError();
   MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",
                     MA_Period,
                     MA_Shift,
                     MA_Method,
                     PRICE_CLOSE // usando o fechamento de preços
                     );
   Print("MA_handle = ",MA_handle,"  error = ",GetLastError());
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Função de iteração do indicador customizado                      |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//--- Copiar os valores do indicador Custom Moving Average para o nosso buffer do indicador
   int copy=CopyBuffer(MA_handle,0,0,rates_total,Label1Buffer);
   Print("copy = ",copy,"    rates_total = ",rates_total);
//--- Se a nossa tentativa falhou - Reportar isto
   if(copy<=0)
      Print("Uma tentativa de obter os valores se houve falha do Custom Moving Average");
//--- valor retorno de prev_calculated para a próxima chamada
   return(rates_total);
  }
//+------------------------------------------------------------------+

Para adicionar comentários, por favor Conecte-se ou registrar