Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 71
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
Bien, hagamos esto.
{
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.
{
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++;
}
}
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í:
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?Bien, hagamos esto.
{
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"?
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 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 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.
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.
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.
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