Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 807

 
DCodec:

Sinceramente, no entiendo nada. Necesito los valores de la línea superior del indicador en Close[2], Close[1] y eso es todo.

Cómo sacar estos valores de CUALQUIER indicador para no "ensuciar" el código del indicador.


Puede obtener los valores de cualquier buffer de indicadores en cualquier BAR, no en el Cierre... Consulte la ayuda deiCustom:

iCustom

Devuelve el asa del indicador personalizado especificado.

Procedimiento:

  • En OnInit() se crea un indicador
  • en OnTick() o OnTime() obtienen los datos del indicador en el número de BAR especificado desde el buffer INDICATOR requerido.

 
Vladimir Karputov:

Puedes obtener los valores de cualquier buffer de indicadores en cualquier BAR, no en el Cierre... Consulte la ayuda deiCustom:

iCustom

Devuelve el asa del indicador personalizado especificado.

Procedimiento:

  • En OnInit() se crea una manija para el indicador
  • en OnTick() o OnTime() obtienen los datos del indicador en el número de BAR especificado desde el buffer INDICATOR requerido.

Sí, me equivoqué. Necesito los valores del indicador en la primera y segunda barra. Pero digamos que las Bandas de Bollinger tienen tres líneas. ¿Qué línea me devuelve el valor? Me disculpo por las preguntas estúpidas, pero estoy muy confundido.
 
DCodec:
Sí, me expresé mal. Quiero los valores del indicador en la primera y segunda barra. Pero digamos que las Bandas de Bollinger tienen tres líneas. ¿Qué línea me devuelve? Me disculpo por las preguntas estúpidas, pero realmente STUPOR.

Un momento...

Esta es la función para recuperar los valores de las 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]);
  }

La función está truncada - su propósito es obtener siempre UN SOLO valor del buffer del indicador "buffer" en el número de barra "index".

Las tres líneas de iBands tienen sus propias constantes:

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

Un momento...

Esta es la función para recuperar los valores de las iBands:

La función está truncada - su propósito es obtener siempre UN SOLO valor del buffer del indicador "buffer" en el número de barra "index".

Las tres líneas de iBands tienen sus propias constantes:

Sí... sí. Así es como no entiendo cómo aplicar

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

Probablemente sea por estrechez de miras. Sigo pensando como en MQL4.

 
DCodec:

Sí... sí. Así es como no entiendo cómo aplicar

Probablemente se deba a la estrechez de miras. Sigo pensando en términos de MQL4.


Ejemplo de uso de las iBands de KodoBase:Bandas de Bollinger RSI

 
DCodec:

...


¿Ha habido suerte? ¿O crear un tema con una descripción paso a paso de cómo recuperar los datos del indicador?

 
Vladimir Karputov:

¿Cómo va todo? ¿O crear un tema con una descripción paso a paso de cómo recuperar los datos del indicador?

Te diviertes. Recién ahora me doy cuenta de que estoy en

CopyBuffer

Eso es lo que necesito.

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

Gracias.

 

Tengo una pregunta más. ¿Cómo puedo desactivar una línea en un indicador que no necesito?

Digamos que para desactivar UPPER_LINE en iEnvelopes.

 
DCodec:

Te estás riendo. Y sólo ahora me he dado cuenta de que no soy gracioso.

eso es lo que necesito.

Gracias.


Estás imaginando cosas. No me reía, lo preguntaba en serio. Por ejemplo, tengo este tema:Simple Expert Advisor. Comprobación del tamaño de la barra. Compra/venta.


DCodec:

Me permitiré una pregunta más. ¿Cómo puedo desactivar la línea del indicador que no necesito?

Digamos que para desactivar UPPER_LINE en iEnvelopes.


La cuestión no está clara. Describa con más precisión DÓNDE y QUÉ quiere hacer.

 
Vladimir Karputov:

Te lo has imaginado. No me reía, lo preguntaba en serio. Por ejemplo, tengo este tema:Simple Expert Advisor. Comprobación del tamaño de la barra. Compra/Venta.



La cuestión no está clara. Describa con más precisión DÓNDE y QUÉ quiere hacer.

Cuando un EA recibe un mango de indicador en OnInit() ...

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

....terminal dibuja ambas líneas, yo sólo necesito la línea superior.

¿Cómo desactivar el dibujo de esta línea? Por ejemplo, ¿cambiar su color a CLR_NONE, o cambiar el estilo de línea a DRAW_DONE?