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

 
uncleVic:

1111000000000111111b=> 31457535 (decimal)

prohibición del comercio de 00 a 07 horas

horario comercial entre las 08:00 y las 20:00

Prohibición de 9 a 11 de la noche.

Gracias
 

Probablemente, es una pregunta tonta, todavía no estoy muy familiarizado con la sintaxis de mql5 (así como todo lo demás). ¿Puede una función devolver más de un valor, o una matriz o alguna otra estructura?

Algo así como:

int testfunc(int x, int Y)

{

  z = x + y;

  n =  x * y;

  return(z, n);

}

test = testfunc(5,10);

Print(test.x,test.y);

 
Lone_Irbis:

Probablemente, es una pregunta tonta, todavía no estoy muy familiarizado con la sintaxis de mql5 (así como todo lo demás). ¿Puede una función devolver más de un valor, o una matriz o alguna otra estructura?

No, puedes describir un array globalmente y cambiar sus valores en una función.
 
zfs:
No, el array se puede describir globalmente y sus valores se pueden cambiar en una función.
Gracias, lo intentaré)
 

Por favor, aconsejen cómo darse de baja de la señal y me inscribí en la señal un día después, la señal está activa en las suscripciones, puse una marca para habilitar la suscripción en la configuración, luego OK, pero de nuevo abro la configuración y no hay marcas.

 
Lone_Irbis:

Probablemente, es una pregunta tonta, todavía no estoy muy familiarizado con la sintaxis de mql5 (así como todo lo demás). ¿Puede una función devolver más de un valor, o una matriz o alguna otra estructura?

Algo así como:

Las estructurassimples (que no contienen objetos de clase, cadenas y matrices dinámicas) pueden ser devueltas desde las funciones.

 

Gracias, he conseguido resolver el problema sin arrays - sólo usando variables globales sin ningún valor predefinido (siempre es fácil abrir una puerta, como siempre).

Sin embargo, tengo una nueva pregunta, tal vez menos típica: sé que mql5 tiene todo tipo de funciones incorporadas para el control del probador de estrategias. Pero no encuentro ninguno que permita manejar los resultados de la optimización de forma preliminar. Supongamos que quiero encontrar un valor de beneficio medio entre todos los resultados que tienen todos los valores de los parámetros excepto Х que está en algún rango.

¿O es posible hacerlo sólo a mano en Excel? Sé cómo hacerlo en Excel, en todo caso. Simplemente hay una idea de una pequeña investigación (puramente para mí, por interés), para la que tendría que rebuscar en toda una montaña de tablas de forma muy rutinaria e idéntica, y quiero automatizarla de alguna manera...

 
Lone_Irbis:

Gracias, he conseguido resolver el problema sin arrays - sólo usando variables globales sin ningún valor predefinido (la puerta abierta, como siempre).

Sin embargo, tengo una nueva pregunta, tal vez menos típica: sé que mql5 tiene todo tipo de funciones incorporadas para el control del probador de estrategias. Pero no encuentro ninguna que permita manejar los resultados de la optimización de forma preliminar. Supongamos que quiero encontrar un valor de beneficio medio entre todos los resultados que tienen todos los valores de los parámetros excepto Х que está en algún rango.

¿O es posible hacerlo sólo a mano en Excel? Sé cómo hacerlo en Excel, en todo caso. Simplemente hay una idea de pequeña investigación (puramente para mí, por interés), para la que tendría que rebuscar en toda una montaña de tablas de forma muy rutinaria e idéntica, y quiero automatizarla de alguna manera...

Lea aquí: https://www.mql5.com/ru/docs/optimization_frames


Y luego busca en el foro ejemplos de uso.

Документация по MQL5: Работа с результатами оптимизации
Документация по MQL5: Работа с результатами оптимизации
  • www.mql5.com
Работа с результатами оптимизации - Документация по MQL5
 
MetaDriver:

Léalo aquí: https://www.mql5.com/ru/docs/optimization_frames


Y luego busca en el foro ejemplos de uso.

Sí, ya me he encontrado con esto algunas veces, y con ejemplos como éste. Pero por alguna razón, no parecía ser exactamente lo que estaba buscando. Pero quizás es que aún no sé cómo hacerlos :)

De todos modos, no es relevante todavía mientras el desafortunado búho no pueda funcionar correctamente...

Así que la última pregunta (espero, al menos) para el futuro próximo es: ¿cómo acertar el precio de apertura de la última orden de una posición?

Mis búhos de prueba no eran realmente míos, sino uno recientemente encontrado de un autor desconocido. Este búho ha tenido inicialmente un extraño error: funciona correctamente en el probador, pero no obtiene el valor del precio del último pedido en la demo.

double FindLastPrice(long PositionID, bool IsSell) {

   int  i = 0, Total;
   long Ticket, OldTicket = 0, PosID, Magic, Type;
   double OrderPrice = 0;

   HistorySelect(0, TimeCurrent());
   Total = HistoryOrdersTotal();  

   for (i = 0; i < Total; i++) {
      Ticket = (int)HistoryOrderGetTicket(i);
      PosID  = HistoryOrderGetInteger(Ticket, ORDER_POSITION_ID);
      Magic  = HistoryOrderGetInteger(Ticket, ORDER_MAGIC);
      Type   = HistoryOrderGetInteger(Ticket, ORDER_TYPE);
      

      if (IsSell) {
         if ((PosID == PositionID) && (Magic == MagicNumber) && (Type == ORDER_TYPE_SELL)) {
            if (Ticket > OldTicket) {
                OrderPrice = HistoryOrderGetDouble(Ticket, ORDER_PRICE_OPEN);
                OldTicket = Ticket;
            }
         }
      }

      else {
         if ((PosID == PositionID) && (Magic == MagicNumber) && (Type == ORDER_TYPE_BUY)) {
            if (Ticket > OldTicket) {
                OrderPrice = HistoryOrderGetDouble(Ticket, ORDER_PRICE_OPEN);
                OldTicket = Ticket;
            }
         }
      }
   }

   if(!OrderPrice) {
         Print("Ошибка ",GetLastError());
         Sleep(5000);
   }
   return(OrderPrice);
}

Genera el error 4753 (orden no encontrada) y devuelve cero en la demo (devuelve todo lo esperado en el tester). Y esto a pesar de que la impresión de prueba sugiere que parece llegar al procesamiento deHistoryOrderGetDouble e incluso tiene un Ticket que no está vacío...

 

Dígame, ¿50 de valoración de 1 dólar a la semana? ¿Quién tiene 5.000 que recibe 100 dólares a la semana?

Razón de la queja: