[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 57

 
Sepulca:

Inténtalo de esta manera:

https://docs.mql4.com/ru/basis/variables/formal

Hay dos funciones.
// заполняет массив фракталами, найденными в пределах заданного количества баров
double FractalsUP[], FractalsDN[];
void FractalsMassive(string symb, int timeframe, int bars)
 {
  int fr, frtUP=0, frtDN=0;
  for(fr=3; fr<=bars; fr++)
   {
    if(iFractals(symb,timeframe,MODE_UPPER,fr)>0)
     {
      ArrayResize(FractalsUP,frtUP+1);
      FractalsUP[frtUP]=iFractals(symb,timeframe,MODE_UPPER,fr);
      frtUP++;
     }
    if(iFractals(symb,timeframe,MODE_LOWER,fr)>0)
     {
      ArrayResize(FractalsDN,frtDN+1);
      FractalsDN[frtDN]=iFractals(symb,timeframe,MODE_LOWER,fr);
      frtDN++;      
     }
   }
 }
double ExtremeFractalUP(double& fractalup[])
 {
  int masrange, efup;
  masrange=ArrayRange(fractalup,1);
  
  for(efup=0; efup<masrange; efup++)
   {
    if(fractalup[efup]>fractalup[efup+1])
     {
      return(fractalup[efup]);
     }
    else continue;
   }  
 }

Error "FractalsUP - tipos incompatibles" al intentar compilar en EA.

   FractalsMassive(Symbol(),0,100);
   double extr=ExtremeFractalUP(FractalsUP[]);

Las funciones y las matrices declaradas se almacenan en archivos de inclusión, si es que hay algo.

 
silhouette:
Leí el libro de texto antes de escribir, vi el subrayado, pero en la práctica no pude implementarlo - dice sobre el tipo incompatible.


He visto un ejemplo de trabajo de pasar parámetros de valores de elementos de array por referencia (con el prefijo &).

 
silhouette:
Hay dos funciones.

Al intentar compilar en EA, da error "FractalsUP - tipos incompatibles".

Las funciones y las matrices declaradas se almacenan en archivos de inclusión, si es que hay algo.


Si Dios quiere, esto debería funcionar. Al menos se compila sin errores:

int start()
{
 double FractalsUP[], FractalsDN[];
 ExtremeFractalUP(FractalsUP);// Передаем ссылку на один массив
 ExtremeFractalUP(FractalsDN);// Передаем ссылку на другой массив
}
//
double ExtremeFractalUP(double& fractalup[]) // В параметрах указываем что будет передаваться ссылка на массив
 {
  int masrange, efup;
  masrange=ArrayRange(fractalup,1);
  
  for(efup=0; efup<masrange; efup++)
   {
    if(fractalup[efup]>fractalup[efup+1])
     {
      return(fractalup[efup]);
     }
    else continue;
   }  
 }
 
Sepulca:


Si Dios quiere, esto debería funcionar. Al menos se compila sin errores:

Gracias por la ayuda, el principio parece estar solucionado.
 

¡Hola queridos programadores!

¿Podría decirme qué estoy haciendo mal?

Tengo una variable externa de tipo int, en el programa debería establecer cuantos elementos habrá en el array de tipo double,

Lo estoy haciendo como se muestra a continuación, pero el compilador sigue generando errores, ya he intentado escribir una variable externa de tipo double, pero sigo obteniendo errores.

Por favor, avisa.

extern int       max_count=4;

int start()
{
   static double A[max_count];

Errores

 
SvSerg:

¡Hola queridos programadores!

¿Podría decirme qué estoy haciendo mal?

Tengo una variable externa de tipo int, en el programa debería establecer cuantos elementos habrá en el array de tipo double,

Lo estoy haciendo como se muestra a continuación, pero el compilador sigue generando errores, ya he intentado escribir una variable externa de tipo double, pero sigo obteniendo errores.

Por favor, avisa.

Inicializa el array con un valor explícito de double A[4];

Luego se redimensiona utilizando ArrayResize();

 
artmedia70:

Inicializa el array con un valor explícito de double A[4];

Luego se redimensiona utilizando ArrayResize();



Gracias.

Estoy pensando que, si inicializamos un array vacíodoble A[];, entonces es posible poner todo lo que quieras haciendo un bucle en él?

Pido disculpas por las preguntas nouveau-vous, pero los arrays son un lío para mí como principiante.

 
SvSerg:


Gracias.

Estaba pensando, si inicializamos un array vacíodoble A[]; entonces se puede utilizar tanto como se quiera?

Pido disculpas por las preguntas nouveau-vous, pero los arrays son un lío para mí como principiante.

Puedes meter toda la memoria que necesites en cualquier matriz, siempre que te acuerdes de redimensionarla. Especialmente si la matriz está vacía.
 
artmedia70:
Cualquier matriz puede llenarse con toda la memoria que necesite, siempre que recuerde redimensionarla. Especialmente si la matriz está vacía.


Gracias de nuevo. Es una pena que no puedas darme un +.
 

¡Buenas tardes!

Queridos programadores Es necesario escribir un Asesor Experto.

Descripción disponible.

¿Cuáles son las condiciones? ¿Cuáles son las garantías?

Saludos, Maxim.