Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1529

 
Alexey Viktorov:

Sí y lo he buscado para responderte también.

No pude - estaba escribiendo desde mi teléfono y es más rápido sólo escribir la pregunta :)

 
Alexey Viktorov:

No lo imponen los desarrolladores, sino un moderador. En cuanto a los valores de BB, por lo que Artem te dijo que es más fácil obtener todo directamente... la secuencia es así...

  1. Declarado Manejar variables y matrices para obtener los valores de los indicadores. Si es necesario, 3 como máximo. Si no necesitamos una media, dos matrices serán suficientes.
  2. En OnInit() recibimos el mango del indicador...
  3. En OnTick() o en alguna otra función CopyBuffer() para cada línea por separado, tantas como sean necesarias.
  4. De estas matrices se obtienen los valores de las líneas indicadoras en aquellas barras que son interesantes...

ESO ES TODO. ¿Por qué molestarse con OOP¿¿¿¿¿? Desgraciadamente, no puedo responder a su pregunta directamente, porque no lo utilizo. Para mí es más fácil como he descrito. Sólo hay 4 acciones.

¿Por qué no funciona en Inite? ¿Y cómo hago para que funcione?


#property strict

//--- индикаторные буферы
double         UpperBuffer[];
double         LowerBuffer[];
double         MiddleBuffer[];
//--- переменная для хранения хэндла индикатора iBands
int    bb_handle;

int OnInit(){//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////////OnInit()

bb_handle=iBands(NULL, 0, 20, 0, 2.0, PRICE_CLOSE);

Print("bb_handle ", bb_handle);

Print("OnInit()  ", BB_up(0), "  ", BB_mi(0), "  ", BB_lo(0));

return(INIT_SUCCEEDED);
}
void OnTick(){




Print("OnTick()  ", BB_up(0), "  ", BB_mi(0), "  ", BB_lo(0));

}
//-------------------------------------------------------1
double BB_up(int in_shift){
   CopyBuffer(bb_handle, 1, in_shift, 1, UpperBuffer);
   return UpperBuffer[0];
}
double BB_mi(int in_shift){
   CopyBuffer(bb_handle, 0, in_shift, 1, MiddleBuffer);
   return MiddleBuffer[0];
}
double BB_lo(int in_shift){
   CopyBuffer(bb_handle, 2, in_shift, 1, LowerBuffer);
   return LowerBuffer[0];
}
 
Andrey Sokolov:

¿Puedes decirme por qué no funciona en el Inite? ¿Y cómo hago para que funcione?


iBands - Indicadores Técnicos - Referencia MQL5 - Referencia de Lenguaje Algorítmico/Automático para MetaTrader 5
Документация по MQL5: Технические индикаторы / iBands
Документация по MQL5: Технические индикаторы / iBands
  • www.mql5.com
iBands - Технические индикаторы - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Andrey Sokolov:

¿por qué no funciona?

¿Quieres hablar? - ¿O quieres trabajar en ti mismo?

 
SanAlex:

¿Quieres hablar? - ¿O quieres trabajar en ti mismo?

Ya veo. Gracias. ¿Alguien más puede sugerir algo?

 
Andrey Sokolov:

¿Puedes decirme por qué no funciona en el Inite? ¿Y cómo hago para que funcione?


Porque el indicador aún no se ha calculado.

https://www.mql5.com/ru/docs/series/barscalculated


la sección OnInit() no es el mejor lugar para obtener el entorno de la terminal, creo que funciona lógica y correctamente
 
Igor Makanu:

porque el indicador aún no está calculado

https://www.mql5.com/ru/docs/series/barscalculated

👍

 
Igor Makanu:


la sección OnInit() no es el mejor lugar para obtener el entorno de la terminal, creo que funciona lógica y correctamente

Inite porque hay que hacer cálculos sobre el historial en el arranque, añadió una espera como en el ejemplo, todo está bien, gracias

 
Andrey Sokolov:

añadiendo una espera, como en el ejemplo, todo está bien.

Pero no te sorprendas cuando deje de funcionaro lo hagade forma intermitente.