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

 
MrBrooklin #:

Encontré y vi un video sobre funciones con enlaces. A partir de esta lección de vídeo me di cuenta de que necesito no sólo una lección de MQL5 para principiantes, sino una lección de MQL5 para principiantes especialmente dotados de estupidez. En resumen, yo no entendía nada. En general, es necesario digerir toda la información que ha recibido y volver a ver este video cinco o incluso seis veces. ¡Pero habrá algo que hacer en mi tiempo libre! ))

Saludos, Vladimir.

No pierdas el tiempo, aunque no tengas donde pasarlo. El nombre del "profesor" habla por si solo, un diletante es un diletante.

Este video solo te es util durante 3 minutos. Y el resto sólo te distrae y pierdes información útil.

Es mejor leer detenidamente la documentación, experimentar con ejemplos y lo entenderás todo.

Документация по MQL5: Основы языка / Функции / Передача параметров
Документация по MQL5: Основы языка / Функции / Передача параметров
  • www.mql5.com
Передача параметров - Функции - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov #:

No pierdas el tiempo, aunque no haya dónde perderlo. El nombre del "profesor" habla por sí solo, un aficionado es un aficionado.

Sólo hay 3 minutos de información útil en este vídeo. El resto es sólo una distracción y se pierde información útil.

Es mejor leer detenidamente la documentación, experimentar con ejemplos y lo entenderás todo.

Gracias, Alexey, pensé que la lección de vídeo sería más informativo y útil para mí, pero resultó ser exactamente lo contrario. En cuanto al Manual de Referencia MQL5, la sección de Transmisión de Parámetros, lo leí de la misma manera, pero resultó como el famoso dicho: "¡Miro en el libro, y veo la figura!". No entendí nada. En fin, por supuesto, releeré y experimentaré unas cuantas veces más, no me queda mucho más remedio. ))

Saludos, Vladimir.

 

Después de ver el videotutorial y leer sobre el paso de argumentos por referencia en el Manual de Referencia de MQL5, parece estar más o menos claro. Sin embargo, tras analizar el código presentado en el Manual de Referencia, un fragmento seguía causando perplejidad, aunque, en mi opinión, no tiene nada que ver con el paso de argumentos por referencia:

//+------------------------------------------------------------------+
//| передача параметров по ссылке                                    |
//+------------------------------------------------------------------+
double SecondMethod(int &i,int &j)
  {
   double res;
//---
   i*=2;
   j/=2;
   res=i+j;
//---
   return(res);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---.
   int a=14,b=8;
   Print("a и b перед вызовом:",a," ",b);
   double d= SecondMethod(a,b);
   Print("a и b после вызова:",a," ",b);
  }
//+------------------------------------------------------------------+
//--- результат выполнения скрипта
//  a и b перед вызовом: 14 8
//  a и b после вызова: 28 4

En este sentido, tengo una pregunta para los expertos en programación MQL5 - ¿por qué demonios han "metido" la función SecondMethod(a,b ) en la variable d en OnStart( )? ¿Es un prerrequisito para el correcto funcionamiento del script, o hay algo que he vuelto a entender mal?

Saludos, Vladimir.

 

Ayúdame, por favor.

Hay muchos arrays con tiempo, y el tiempo de algunos elementos en estos arrays puede coincidir.

Necesito juntarlos en un array sin repetir valores de tiempo.

Lo hice de esta manera:

struct str1
  {
   int               time[];// в массиве порядка 10 тыс элементов
  };

struct str2
  {
   str1              arr[];// в массиве порядка 1 тыс элементов
  };

str2 m_name[]; // в массиве порядка 100 элементов

int ArrFull[]; // массив в который нужно собрать отсортированное время без повторений
//+------------------------------------------------------------------+
void OnStart()
  {
// считаем что m_name[] ранее уже заполнили


   int tempArr[];// объявляю дополнительный массив

   int size1 = ArraySize(m_name);
   for(int i = 0; i < size1; i++)
     {
      int size2 = ArraySize(m_name[i].arr);
      for(int j = 0; j < size2; j++)
        {
         // копирую в дополнительный массив все массивы времени из структур
         ArrayInsert(tempArr, m_name[i].arr[j].time, ArraySize(tempArr));
        }
     }
// сортирую дополнительный массив
   ArraySort(tempArr);

   int size = ArraySize(tempArr);
   ArrayResize(ArrFull, size);
   ArrFull[0] = tempArr[0];
   int j = 1;

// копирую не повторяющиеся элементы из дополнительного массива в массив с которым в дальнейшем буду работать
   for(int i = 1; i < size; i++)
      if(ArrFull[j - 1] != tempArr[i])
        {
         ArrFull[j] = tempArr[i];
         j++;
        }

   size = ArrayResize(ArrFull, j);

// дальше продолжение. много много букв
  }
//+------------------------------------------------------------------+


Pero resultó ser un código muy lento. Necesita ser más rápido. Cómo ????

 
MrBrooklin por referencia en el Manual de Referencia de MQL5, parece estar más o menos claro. Sin embargo, tras analizar el código presentado en el Manual de Referencia, un fragmento seguía causando cierta confusión, aunque, en mi opinión, no tiene nada que ver con el paso de argumentos por referencia:

En este sentido, tengo una pregunta para los expertos en programación MQL5 - ¿por qué demonios han "metido" la función SecondMethod(a,b ) en la variable d en OnStart( )? ¿Es un prerrequisito para el correcto funcionamiento del script y he vuelto a entender algo mal?

Saludos, Vladimir.

A la variable d se le asigna el resultado de la ejecución de la función
 
Artyom Trishkin #:
A la variable d se le asigna el resultado de la ejecución de la función

Gracias, Artyom, por tu respuesta. ¿Es imposible utilizar sólo la función SecondMethod(a,b) sin asignación?

Saludos, Vladimir.

 
MrBrooklin #:

Gracias, Artyom, por tu respuesta. ¿Es imposible utilizar sólo la función SecondMethod(a,b) sin asignación?

Saludos, Vladimir.

Sí, es posible. Entonces se recibirán dos valores - sólo en las variables pasadas por referencia. Es decir, la función devuelve tres valores
 
Artyom Trishkin #:
Puede. Entonces se recibirán dos valores - sólo en las variables pasadas por referencia. Es decir, la función devuelve tres valores

Por interés, he eliminado la variable d. Dejé sólo la función. El resultado de la impresión no ha cambiado. Para ser honesto, no entiendo acerca de los tres valores en absoluto.

Saludos, Vladimir.

 
MrBrooklin #:

Por interés, he eliminado la variable d. He dejado sólo la función. El resultado de la impresión no ha cambiado. Para ser honesto, no entiendo acerca de los tres valores en absoluto.

Saludos, Vladimir.

No ha cambiado porque este valor no se imprimió.

Sólo tiene que añadir la impresión y verás.

 
Alexey Viktorov #:

No se ha modificado porque este valor no se imprimió.

Sólo tiene que añadir imprimir y verá.

Lo imprimí. Se quedó igual.

2023.11.22 19:48:24.110 10 (EURUSDrfd,H1)       a и b перед вызовом:14 8
2023.11.22 19:48:24.110 10 (EURUSDrfd,H1)       a и b после вызова:28 4

¿Quizás entendí algo mal otra vez? ¿O necesitabas imprimir lavariabled? ¿Es esto de lo que estábamos hablando?

Saludos, Vladimir.