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

 
trader781:

reescribió el post 844 para evitar tener que escribir el código aquí de nuevo

En cuanto a la matriz de tamaño cero - 0 puede ser un entero, puede ser el equivalente a un falsificador booleano, puede ser un vacío, y puede ser el punto de partida.

No importa lo que quieras decir con cero. Si dimensionas un array con cero, llámalo pan de jengibre cero y será cero. Lo que significa que la matriz será cero.
 
trader781:

reescribió el post 844 para evitar tener que escribir el código aquí de nuevo

En cuanto a la matriz de tamaño cero - 0 puede ser un entero, puede ser el equivalente a un falsificador booleano, puede ser un vacío, y puede ser un punto de partida.

Y por favor, no me hagas insertar el código correcto en el puesto correcto para ti:

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
struct myorder
  {
   int               Ticket;
   double            orderopenprice;
   int               ordertype;
   double            profit;
   double            stoploss;
   double            lot;
  };
myorder orders[];

int    i;
int    Magic=444;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   CalcOrders();

  }
//+------------------------------------------------------------------+
void CalcOrders()
  {
   int count1=0;

   for(i=OrdersTotal()-1; i>=0; i--)
     {
      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
         && (OrderMagicNumber()==Magic) && (OrderType()<2))
        {
         count1++;
         ArrayResize(orders,count1);
         orders[count1-1].Ticket=OrderTicket();
         orders[count1-1].lot=OrderLots();
         orders[count1-1].orderopenprice=OrderOpenPrice();
         orders[count1-1].ordertype=OrderType();
         orders[count1-1].profit=OrderProfit();
         orders[count1-1].stoploss=OrderStopLoss();
        }
     }
   ArraySort(orders,WHOLE_ARRAY,0,MODE_ASCEND);

  }
//+------------------------------------------------------------------+

Ahora fíjate en qué matriz estás rellenando y por qué campo lo estás ordenando. Y lo más importante: ¿por qué necesita esta clasificación? ¿Qué sentido tiene?

 
Artyom Trishkin:

Y por favor, no me hagas pegar el código correcto en el mensaje correcto para ti:

А теперь поглядите какой массив вы заполняете и по какому полю его сортируете. И, главное - зачем нужна эта сортировка? Какой в ней смысл?

ordenar la matriz de pedidos, en orden ascendente desde el valor cero

por ejemplo, si tenemos 20 órdenes y 18 de ellas suben accidentalmente un par de pips y las cierro inmediatamente con las manos

 
trader781:

ordenar la matriz de pedidos, en orden ascendente desde el valor cero

Por ejemplo, si tenemos 20 órdenes y 18 de ellas suben absolutamente por accidente un par de puntos, y las cierro enseguida con las manos.

Si es absolutamente necesario clasificar por entradas, tendrá que hacer 2 matrices. Uno es un array de estructuras y el segundo es un array bidimensional que contiene el ticket de pedido en la primera dimensión, y en la segunda el índice del contador, el índice bajo el cual se almacena la información del pedido en el array de estructuras. Y llenar estas matrices al mismo tiempo en un bucle.

Llevas tanto tiempo tratando de resolver esta cuestión que ni siquiera recuerdo el objetivo que pretendías alcanzar. Y probablemente todos los demás.

Si no recuerdo mal, hay que seleccionar un número determinado de la lista de pedidos. ¿Cuál es el problema? Sólo hay que hacer un simple array unidimensional, ordenar las entradas, y luego orderSelect(array[required], SELECT_BY_TICKET) y ya está...entonces puedes hacer lo que quieras con esta orden.

 
Alexey Viktorov:

Si es absolutamente necesario ordenar por entradas, hay que hacer dos matrices. Una es una matriz de estructura y la segunda es una matriz bidimensional que contiene el ticket de pedido en la primera dimensión y el índice del contador en la segunda, el índice bajo el cual se almacena la información del pedido en la matriz de estructura. Y llenar estas matrices al mismo tiempo en un bucle.

Llevas tanto tiempo tratando de resolver esta cuestión que ni siquiera recuerdo el objetivo que pretendías alcanzar. Y probablemente todos los demás.

Si no recuerdo mal, hay que seleccionar un número determinado de la lista de pedidos. ¿Cuál es el problema? Sólo hay que hacer un simple array unidimensional, ordenarlo, y luego orderSelect(array[required], SELECT_BY_TICKET) y ya está...Entonces puedes hacer lo que quieras con esta orden.

Tampoco recuerdo lo que debería hacer allí. Pero lo bueno es que lo hace.

Le pido específicamente que escriba una cosa al principio, y luego le pido que se fije bien en lo que ha escrito, para que entienda por sí mismo que no va a funcionar así: necesita otro array local justo en la función, que tendremos que ordenar y luego rellenar el array global a partir del ordenado.

 
Alexey Viktorov:

Si es absolutamente necesario ordenar por entradas, hay que hacer dos matrices. Una es una matriz de estructura y la segunda es una matriz bidimensional, que contiene el ticket de pedido en la primera dimensión y el índice del contador en la segunda, el índice bajo el cual se almacena la información del pedido en la matriz de estructura. Y llenar estas matrices al mismo tiempo en un bucle.

Llevas tanto tiempo tratando de resolver esta cuestión que ni siquiera recuerdo el objetivo que pretendías alcanzar. Y probablemente todos los demás.

Si no recuerdo mal, hay que seleccionar un número determinado de la lista de pedidos. ¿Cuál es el problema? Sólo hay que hacer un simple array unidimensional, ordenarlo, y luego orderSelect(array[required], SELECT_BY_TICKET) y ya está...entonces haz lo que quieras con esta orden.

No, entiendo que hay muchas maneras de hacerlo de forma diferente y evitar las matrices. ¿Por qué necesitamos 2 si ya tenemos una de estas matrices?
 
trader781:
No, entiendo que hay muchas maneras de hacerlo de forma diferente y prescindir de las matrices. ¿Por qué 2 si hay una de estructuras?

Porque un array simple se ordena por los valores de la primera dimensión del array, y cómo se ordena un array de estructuras no tengo ni idea.

Sin embargo, una pregunta interesante... Ahora voy a intentar ordenar un array de estructuras.

 
Alexey Viktorov:

Porque un array simple se ordena por los valores de la primera dimensión del array, pero cómo se ordena un array de estructuras no tengo ni idea.

Pero es una pregunta interesante... Ahora intentaré ordenar un array de estructuras.

No tengo ni idea de para qué sirve en forma de estructura en absoluto. El programa mq está escrito en un solo archivo, el array se maneja en un solo scroll y cabe en una sola pantalla. ¿Qué sentido tiene una estructura en este caso, por interés deportivo?
 
Alexey Viktorov:

Porque un array simple se ordena por los valores de la primera dimensión del array, pero no tengo ni idea de cómo se ordena un array de estructuras.

Aunque la pregunta es interesante... Voy a intentar ordenar una serie de estructuras.

No tengo ni idea de qué es ni de qué trata

Pero ahora que se ha sacado el tema, es una tontería tirarlo. También hay matrices de clases.

 
Vitaly Muzichenko:
No tengo ni idea de por qué es necesario en forma de estructura en absoluto. El programa mq está escrito en un solo archivo, el array se maneja en un solo scroll y cabe en una sola pantalla. ¿Qué sentido tiene una estructura en este caso, por interés deportivo?

Escribimos todo por el bien del deporte. Primero entendemos lo que funciona y cómo funciona, y luego empezamos a pensar en cómo escribirlo de forma más eficaz.


En cuanto a la ordenación de la matriz de estructuras: como esperaba, el experimento fracasó. Ya en tiempo de compilación el compilador dijo"la expresión no tiene efecto"