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

 
Sergey Voytsekhovsky #:

Si la respuesta a las tres sutilezas es positiva, ...

entonces esta cuestión no se plantearía aquí.

 
Yuriy Bykov #:

Muchas gracias por la idea sugerida anteriormente. Esto es lo que ha salido, por si le interesa.

//---
   NOD = 1;
   ArraySort(Arr_ZigLag);
   size_zigLag = ArraySize(Arr_ZigLag);
   for(int i = size_zigLag - 1; i > 0; i--)
     {
      if(NOD != 1)
         if(Arr_ZigLag[i] != Arr_ZigLag[i-1])
            NOD = CalculateNOD(Arr_ZigLag[i-1], NOD);
      if(NOD == 1)
         if(Arr_ZigLag[i] != Arr_ZigLag[i-1])
            NOD = CalculateNOD(Arr_ZigLag[i], Arr_ZigLag[i-1]);
           }
   return(NOD);
  }
//+------------------------------------------------------------------+
//| Функция НОД(НаибольшийОбщийДелитель)                             |
//+------------------------------------------------------------------+
int CalculateNOD(int a=1, int b=1)
  {
   int Nod = (int)MathMod(a, b);
   while(Nod > 0)
     {
      a = b;
      b = Nod;
      Nod = (int)MathMod(a, b);
     }
   if(Nod == 0)
      Nod = b;
   return(Nod);
  }
 
Sergey Voytsekhovsky #:

O podrías hacerlo así:

//+------------------------------------------------------------------+
//| Наибольший общий делитель чисел a и b                            |
//+------------------------------------------------------------------+
int gcd(int a, int b) {
   int c;

   while(b > 0) {
      c = a % b;
      a = b;
      b = c;
   }

   return a;
}

//+------------------------------------------------------------------+
//| Наибольший общий делитель массива чисел a                        |
//+------------------------------------------------------------------+
int ArrayGcd(int &a[]) {
   int n = ArraySize(a);
   if(n == 1) {
      return 0;
   }
   int c = gcd(a[0], a[1]);

   for(int i = 2; i < n; i++) {
      c = gcd(a[i], c);
      if(c == 1) {
         break;
      }
   }
   return c;
}


int OnCalculate(...) {
   ...
   ArraySort(Arr_ZigLag);
   NOD = ArrayGcd(Arr_ZigLag);
   return(NOD);
  }
 
Yuriy Bykov #:

O podrías hacerlo así:

¡Estoy de acuerdo, hermoso! ¿Puedo ponerlo en la biblioteca?

 
Yuriy Bykov #:

O podrías hacerlo así:

¿Puedes darme una pista si puedo entender la pregunta?

Has usado la f. matemática "Resto de la división", pero tengo la función incorporada" MathMod", habla de"resto real de la división de dos números". ¿Qué significa la palabra "real"? ????

 
Sergey Voytsekhovsky #:

¿Qué significa la palabra TODO?

En este caso, los números fraccionarios están implícitos.

 
Aleksandr Slavskii #:

Hay varias opciones.

Puedes seguir los consejos anteriores. Es una opción bastante viable.

Puede utilizar variables globales de terminal.

Puede configurar el intercambio entre Asesores Expertos escribiendo / leyendo un archivo.

Como se suele decir, todos los rotuladores son diferentes para gustos y colores)))))

Cómo sólo para entender en qué dirección moverse, por dónde empezar y cómo. No hay casi ningún conocimiento...

  1. ¿Se puede editar el código de ambos asesores?
    Sí.
  2. ¿Dejan los asesores rastros de su actividad en las Variables Globales
    No puedo asegurarlo.
  3. ¿Tienes al menos conocimientos básicos de codificación
    Un poco de todo.
 
psihodelit #:

Cómo entender en qué dirección moverse, por dónde empezar y cómo. No tengo casi ningún conocimiento...

  1. ¿Está disponible el código de ambos Asesores Expertos para su edición?
    Sí.
  2. ¿Los asesores dejan rastros de su actividad en las Variables Globales
    No puedo asegurarlo.
  3. ¿Tiene al menos conocimientos básicos de codificación
    Un poco en absoluto.

En primer lugar, contéstate a estas tres preguntas. Si usted no puede responder, es necesario rellenar, estudio. Esto es lo que para entender en qué dirección moverse.

Si la esencia de la cuestión, es necesario que los archivos de los asesores que desea mezclar, van a mostrar lo que se puede hacer. Si no puede o no quiere subirlos, se puede ver capturas de pantalla de los lugares necesarios.

 
Sergey Voytsekhovsky #:
¿Dejan los Asesores Expertos rastros de su actividad en las Variables Globales?
No estoy seguro.

Empieza por aquí - En el terminal, en la cinta de opciones, en la carpeta Herramientas, hay un elemento GlobalVariables. Vamos a encontrarlo.

 
Sergey Voytsekhovsky #:

Aquí es donde debe empezar - En el terminal, en la cinta, en la carpeta Herramientas, hay un elemento GlobalVariables. Vamos a encontrarlo.

Está vacío.

Razón de la queja: