Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 70
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
Por favor, díganme por qué la función OrdersTotal( ) escribe -1 cuando se buscan los pedidos.
Ejemplo: for (i=TotalPedidos()-1 ;i>=0; i--)
¿por qué no sólo OrdersTotal()?
¿El recuento de pedidos en esta función empieza por 0 o por 1? Es decir, si hay un pedido, ¿es OrdersTotal() igual a 0 o a 1?
Por favor, díganme por qué la función OrdersTotal( ) escribe -1 cuando se buscan los pedidos.
Ejemplo: for (i=TotalPedidos()-1 ;i>=0; i--)
¿por qué no sólo OrdersTotal()?
¿El recuento de pedidos en esta función empieza por 0 o por 1? Es decir, si hay un pedido, ¿OrdersTotal() es igual a 0 o a 1?
OrdersTotal() muestra la cantidad, es decir, si hay un pedido, entoncesOrdersTotal() será igual a 1, pero en la lista de pedidos, el informe comienza con 0
0 - primer orden
1 - segundo orden
2 - tercero
y así sucesivamente.
Así, si empezamos la búsqueda desde el final de la lista, tenemos querestar uno al número total deOrdersTotal().
OrdersTotal() muestra la cantidad, es decir, si hay un pedido, entoncesOrdersTotal() será uno, pero en la lista de pedidos el informe comienza desde cero
0 - primer orden
1 - segundo orden
2 - tercero
y así sucesivamente.
Por lo tanto, si empezamos la búsqueda desde el final de la lista, tenemos querestar uno al número total deOrdersTotal().
Pero si la primera expresión no resta uno, no será un error, si tenemos una orden, entonces ocurrirán dos iteraciones. A menos que no haya necesidad de hacer dos iteraciones cuando todo lo que necesitamos se puede hacer en una, así que -1, ¿no?
Sí, correcto
No es del todo correcto.
Puede utilizar el decremento del prefijo.
Ya que tenemos una pila de pedidos, ¿por qué no podemos sacar el que necesitamos? (Las correctas) y hacer con ellas lo que queramos... Por ejemplo ordenar (i-4)
Porque esto sólo funcionará en el probador de MT4. O cuando se opera en un solo símbolo y sólo un este EA.
Si lo piensas bien, el EA es el mismo para cada par, sólo el saldo de la cuenta es común (el cambio será el último)
el filtro va a todas las órdenes que satisfacen la condición mercado-abierto por el Asesor Experto-si el símbolo coincide
¿qué ocurre?
Si lo piensas bien, el EA es el mismo para cada par, sólo el saldo de la cuenta es común (el cambio será el último)
el filtro se dirige a todas las órdenes que cumplen la condición de mercado abierto por el EA, si la simulación coincide
¿qué ocurre?
Bueno, ya se ha explicado más arriba lo que está mal. Los pedidos cuentan sólo los suyos, y toman los índices del array para el número total - se obtiene un array con celdas vacías. ¿Y para qué es esto? Y si la matriz no estaba vacía, los campos "innecesarios" contendrán basura innecesaria que dará lugar a errores, y estamos hablando de dinero.
Bien, así es como funciona.
{
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?