Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 86
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
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.
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?
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
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.
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.
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 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.
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.
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.
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"