Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 807

 
DCodec:

Sinceramente, não compreendo nada. Preciso de valores indicadores de primeira linha em Close[2], Close[1] e é tudo.

Como extrair estes valores de QUALQUER indicador para não "sujar" o código do indicador.


Pode obter valores de qualquer tampão indicador em qualquer BAR, não em Fechar... Ver a ajudado iCustom:

iCustom

Devolve o cabo do indicador personalizado especificado.

Procedimento:

  • No OnInit() criar um manípulo indicador
  • em OnTick() ou OnTime() obter dados indicadores no número BAR especificado a partir do tampão INDICADOR requerido.

 
Vladimir Karputov:

Pode obter os valores de qualquer tampão indicador em qualquer BAR, não em Fechar... Ver a ajudado iCustom:

iCustom

Devolve o cabo do indicador personalizado especificado.

Procedimento:

  • No OnInit() criar um manípulo indicador
  • em OnTick() ou OnTime() obtêm dados indicadores no número BAR especificado a partir do tampão INDICADOR requerido.

Sim, enganei-me. Preciso dos valores indicadores na primeira e segunda barras. Mas digamos que o Bollinger Bands tem três linhas. Que linha é que me devolve valor? Peço desculpa pelas perguntas estúpidas, mas estou realmente confuso.
 
DCodec:
Sim, eu falei mal. Quero valores indicadores na primeira e segunda barras. Mas digamos que o Bollinger Bands tem três linhas. Qual é a linha de retorno para mim? Peço desculpa pelas perguntas estúpidas, mas realmente STUPOR.

Só um momento ...

Aqui está a função de recuperação de valores de iBands:

//+------------------------------------------------------------------+
//| Get value of buffers for the iBands                              |
//|  the buffer numbers are the following:                           |
//|   0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND                  |
//+------------------------------------------------------------------+
double iBandsGet(const int buffer,const int index)
  {
   double Bands[1];
//ArraySetAsSeries(Bands,true);
//--- reset error code 
   ResetLastError();
//--- fill a part of the iBands array with values from the indicator buffer that has 0 index 
   if(CopyBuffer(handle_iBands,buffer,index,1,Bands)<0)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iBands indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(0.0);
     }
   return(Bands[0]);
  }

A função é truncada - o seu objectivo é obter sempre UM ÚNICO valor do indicador "tampão" no número de barras "índice".

Todas as três linhas de iBands têm as suas próprias constantes:

//|   0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND                  |
 
Vladimir Karputov:

Só um momento ...

Aqui está a função de recuperação de valores de iBands:

A função é truncada - o seu objectivo é obter sempre UM ÚNICO valor do indicador "tampão" no número de barras "índice".

Todas as três linhas iBands têm as suas próprias constantes:

Sim...sim. É assim que eu não entendo como aplicar

//|   0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND  

É provavelmente de mente estreita. Ainda estou a pensar como na MQL4.

 
DCodec:

Sim... sim. É assim que eu não entendo como aplicar

É provavelmente devido à estreiteza de visão. Ainda estou a pensar em termos de MQL4.


Exemplo de utilização de iBands da KodoBase:Bandas de Bollinger RSI

 
DCodec:

...


Alguma sorte? Ou criar um tópico com uma escrita passo a passo de como recuperar dados do indicador?

 
Vladimir Karputov:

Como está a correr? Ou criar um tópico com uma escrita passo a passo de como recuperar dados do indicador?

Está entretido. Estou agora mesmo a aperceber-me que estou em

CopyBuffer

É disso que eu preciso.

CopyBuffer(handle_iBands,buffer,index,1,Bands)

Obrigado.

 

Tenho mais uma pergunta. Como posso desactivar uma linha num indicador que não preciso?

Digamos para desactivar o UPPER_LINE em iEnvelopes.

 
DCodec:

Está a rir-se. E só agora percebi que não sou engraçado.

é disso que eu preciso.

Obrigado.


Está a imaginar coisas. Eu não estava a rir, estava a perguntar a sério. Por exemplo, tenho este tópico:Simple Expert Advisor. Verificação do tamanho da barra. Comprar/vender.


DCodec:

Vou permitir-me mais uma pergunta. Como desactivar a linha no indicador de que não preciso?

Digamos para desactivar o UPPER_LINE em iEnvelopes.


A questão não é clara. Descreva mais precisamente ONDE e O QUE pretende fazer.

 
Vladimir Karputov:

Imaginou-o. Eu não estava a rir, estava a perguntar a sério. Por exemplo, tenho este tópico:Simple Expert Advisor. Verificação do tamanho da barra. Comprar/vender.



A questão não é clara. Descreva mais precisamente ONDE e O QUE pretende fazer.

Quando um EA recebe um cabo indicador no OnInit() ...

int OnInit()
  {
//--- Получить хэндл индикатора Envelopes_upper для отрисовки верхней линии
   EnvHandle_upper=iEnvelopes(NULL,0,Period_upper,0,MODE_SMA,PRICE_MEDIAN,Deviation_upper);

....terminal desenha ambas as linhas, só preciso da linha superior.

Como desactivar o desenho desta linha? Ou seja, mudar a sua cor para CLR_NONE, ou mudar o estilo da linha para DRAW_DONE?