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

 
trader781:

Bien, hagamos esto.

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

¿verdad?

También necesita llaves, de lo contrario sólo funcionará la primera línea después deif(). Tienes muchos soportes donde no los necesitas, y luego no hay soportes donde los necesitas. Esto rompe la lógica del programa, a veces mucho. Y el contador no tiene que ser global, pero no es tan importante.

for(i=OrdersTotal()-1; i>=0; i--)
{
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol()
         && OrderMagicNumber()==Magic && OrderType()<2)
         {
         orders[count1].Ticket=OrderTicket();
         orders[count1].lot=OrderLots();
         orders[count1].orderopenprice=OrderOpenPrice();
         orders[count1].ordertype=OrderType();
         orders[count1].profit=OrderProfit();
         orders[count1].stoploss=OrderStopLoss();
         count1++;
         }
}
 
sile:
Ayúdame a escribir la condición: Si la cantidad de fondos disponibles en la cuenta es inferior al 50% del depósito, entonces {acción} MT5

¿De qué depósito? ¿Inicial? ¿O del saldo actual?

Si se compara con la balanza, entonces sí:

if(AccountInfoDouble(ACCOUNT_MARGIN_FREE)/AccountInfoDouble(ACCOUNT_BALANCE)<0.5) {действие}
 
Vitalie Postolache:


Pensé que quería un mt5.

Tengo una buena idea de cómo llevar el contador al principio del ontik y luego trabajar con eso.

Ahora bien, ¿cómo puedo sacar algo en mi caso?

y además, si el array será bidimensional y más (hay una diferencia en la escritura y la extracción)

¿podemos hablar un poco sobre este punto?
 
trader781:

Bien, hagamos esto.

struct myorder
{
int    Ticket;
double orderopenprice;
int   ordertype;
double profit;
double stoploss;
double  lot;
};

myorder orders[];

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


¿verdad?

No, no está bien.

Tu array orders[] tiene valor cero. ¿Dónde vas a escribir los datos? ¿En un array de tamaño cero? De ninguna manera. Debes incrementar el tamaño del array en count1+1 - si incrementas el contador después de escribir en el array. Normalmente, el contador se incrementa antes de escribir, luego se incrementa el tamaño del array por el tamaño del contador, y luego se escriben los valores por el índice [count1-1]. Y, como ya se ha señalado con razón, hay que poner todas las demás acciones entre corchetes después de comprobar las condiciones.

¿Por qué intentas hacer algo sin conocimientos e ideas elementales? ¿Sólo "para tener suerte"?

 
Hola. ¿Existe un código universal que pueda insertarse al final de la descripción de cualquier indicador que permita cambiar el TF de ese indicador (por ejemplo, M5 a M1)?
 
Artyom Trishkin:

No, no lo es.

Tu array orders[] tiene valor cero. ¿Dónde vas a escribir los datos? ¿En un array de tamaño cero? De ninguna manera. Debes incrementar el tamaño del array en count1+1 - si incrementas el contador después de escribir en el array. Normalmente, el contador se incrementa antes de escribir, luego se incrementa el tamaño del array por el tamaño del contador, y luego se escriben los valores por el índice [count1-1]. Y, como ya se ha señalado con razón, hay que poner todas las demás acciones entre corchetes después de comprobar las condiciones.

¿Por qué intentas hacer algo sin conocimientos e ideas elementales? ¿Sólo "para tener suerte"?

No lancemos pestes y huevos podridos contra la capacidad de alguien de aprender material. Su sugerencia para resolver mi problema fue por la vía de la construcción de un conjunto de estructuras. He abierto los libros de texto y he pegado todo lo que he podido entender, y he lanzado el código aquí para que lo revise el público y así medir lo correcto que es todo. No creerás que voy a hacer una variante ideal de una vez, ¿verdad?
 
trader781:
No lancemos pollas y huevos podridos a la capacidad de aprendizaje de alguien. Su propuesta para resolver mi problema fue por la vía de la construcción de un conjunto de estructuras. He abierto los libros de texto y he pegado todo lo que he podido entender, y he lanzado el código aquí para que lo revise el público y así medir lo correcto que es todo. No creerás que voy a hacer una variante ideal de una vez, ¿verdad?
¿Debería negarme a ayudarte después de tan salvajes fantasías? Te lo ruego una última vez: escribe el algoritmo en un papel y repásalo con un lápiz unas cuantas veces. Escribe los valores y el tamaño del array - qué y dónde se escribirá en cada iteración del bucle. No busques trozos de código que te parezcan adecuados.
Comprende que enseñar es difícil, sobre todo cuando uno no quiere realmente aprender.
 
Artyom Trishkin:
¿Debería disuadirme de ayudar después de una fantasía tan violenta? Te lo imploro una última vez: escribe el algoritmo en un papel y repásalo con un lápiz unas cuantas veces. Escriba los valores y el tamaño del array: qué y dónde se escribirá en cada iteración del bucle. No busques trozos de código que te parezcan adecuados.
Entienda que enseñar es difícil, especialmente cuando una persona no quiere realmente aprender.

Artyom, es comprensible, pero también se me puede entender en este caso. Nada funciona y no funcionará en la versión actual. Llevo varias páginas escribiendo sobre la necesidad de que el propio comando saque el elemento necesario del array dado y que no tengo ni idea de cómo debería escribirse para este caso concreto, por ejemplo el stop loss de la 5ª orden.

En cuanto al lápiz y la hoja - el bot ya está listo desde hace un mes y cae perfectamente sobre cualquier instrumento, sólo quiero modificarlo añadiendo una rama de media irregular.

 
trader781:

Artyom, es comprensible, pero también se me puede entender en este caso. Nada funciona y no funcionará en la variante actual. Llevo varias páginas escribiendo sobre la necesidad de que el propio comando saque el elemento necesario de este array y que no tengo ni idea de cómo está escrito para este caso concreto, por ejemplo stoploss para la 5ª orden.

No tengo ni idea de cómo escribirlo para este caso concreto, por ejemplo, stoploss para la 5ª orden.

Yo no tengo esa orden. Tengo que hacer el mío propio. Es decir, la función.
 
Artyom Trishkin:
No existe tal comando. Tienes que hacer el tuyo propio. Es decir, una función.

OK, entonces según entiendo, hay tres funciones personalizadas diferentes con el retorno de la derecha (si se busca tres parámetros diferentes)

ArraySort

entonces

ArrayBsearch por el número correcto

y entonces, ¿cómo lo afronto?

Exactamente la transición de una matriz a un elemento de la estructura
Razón de la queja: