Ya he entendido que la matriz es preferible aquí))) ¿Y en esa variante, que he descrito arriba no es exacta? (Por puro interés. Creo que ya está todo claro)
Algo así es lo que tenía en mente. Así que... la dirección para pensar...
int i_magic=123;
int OrdersMassive[7];
//+----------------------------------------------------------------------------+int start() {
FindOrders(OrdersMassive);
int i, num=0;
for (i=0; i<=7; i++) {
Print("Количество "+GetNameOP(i)+" = "+OrdersMassive[i]);
num+=OrdersMassive[i];
}
Print("Всего ордеров = "+(num-OrdersMassive[6]));
return(0);
}
//+----------------------------------------------------------------------------+void FindOrders(int &mass[]) {
int i, t, k=OrdersTotal()-1;
ArrayInitialize(mass,0);
for (i=k; i>=0; i--) {
if (!OrderSelect(i,SELECT_BY_POS)) continue;
if (OrderMagicNumber()!=i_magic) continue;
if (OrderSymbol()!=Symbol()) continue;
t=OrderType();
mass[t]=mass[t]+1;
}
}
//+----------------------------------------------------------------------------+string GetNameOP(int op) {
switch (op) {
case OP_BUY : return("Buy");
case OP_SELL : return("Sell");
case OP_BUYLIMIT : return("Buy Limit");
case OP_SELLLIMIT: return("Sell Limit");
case OP_BUYSTOP : return("Buy Stop");
case OP_SELLSTOP : return("Sell Stop");
case6 : return("Неторговое изменение баланса");
default : return("Не знаю, чё за тип такой...");
}
}
//+----------------------------------------------------------------------------+
//+----------------------------------------------------------------------------+void FindOrders(int &mass[]) {
int i, t, k=OrdersTotal()-1;
ArrayInitialize(mass,0);
for (i=k; i>=0; i--) {
if (!OrderSelect(i,SELECT_BY_POS)) continue;
if (OrderMagicNumber()!=i_magic) continue;
if (OrderSymbol()!=Symbol()) continue;
t=OrderType();
mass[t]=mass[t]+1;
}
}
//+----------------------------------------------------------------------------+
Tampoco funciona. Tuve un fallo ahí. Así es ahora:
Cuando no hay órdenes en el mercado, los contadores no llegan a cero. Esto es una mierda. No sé qué es lo que falla aquí. Miraré lo que ha escrito Artem.
Correcto. Bueno, lo que me pasó a mí. Algunos errores tontos. Llevo un mes indagando en C++. Y ahora tengo errores tan tontos en µl. Mi cerebro debe estar quemado :(
En general, ¿es correcto buscar órdenes en cada tic? ¿O es mejor ejecutar en cada barra? Todavía no me entra en la cabeza cuál es mejor en un caso y cuál en el otro.
hoz: En general, ¿es correcto buscar órdenes en cada tic? ¿O es mejor ejecutar en cada barra? Todavía no sé qué es mejor en un caso y qué es mejor en otro.
Si una posición se cierra dentro de una barra durante el monitoreo por la apertura de la barra, el Asesor Experto no sabrá de los cambios en el número de posiciones hasta la apertura de la siguiente barra.
es verdadero, entonces tanto t como p se incrementan, ya que cualquier orden del tipo 2 a 5 es tanto una orden pendiente como una orden. Por lo tanto, ambos contadores deben incrementarse. Y si la condición es verdadera:
Entonces no hay una orden pendiente pero sí una orden de mercado. Significa que aumentaremos el contador t, es decir, el contador del número total de pedidos.
Y si no hay nada, entonces imprimiremos que no hay pedidos
Ya he entendido que la matriz es preferible aquí))) ¿Y en esa variante, que he descrito arriba no es exacta? (Por puro interés. Creo que ya está todo claro)
Algo así es lo que tenía en mente. Así que... la dirección para pensar...
Y lo que tienes ahí, realmente no lo miré...
¿Qué te parece esto?
Mi versión de la función es más corta... :)
Puede que sí.
Tampoco funciona. Tuve un fallo ahí. Ahora es así:
Cuando no hay órdenes en el mercado, los contadores no se ponen a cero. Esto es una mierda. ¿Qué ocurre aquí? Miraré lo que ha escrito Artem.
Tampoco funciona. Tuve un fallo ahí. Así es ahora:
Cuando no hay órdenes en el mercado, los contadores no llegan a cero. Esto es una mierda. No sé qué es lo que falla aquí. Miraré lo que ha escrito Artem.
Supongo que esta es la salida de la información.Saca esto del bucle.
Supongo que esta es la salida de la información.Quita esto del bucle
Correcto. Bueno, lo que me pasó a mí. Algunos errores tontos. Llevo un mes indagando en C++. Y ahora tengo errores tan tontos en µl. Mi cerebro debe estar quemado :(
En general, ¿es correcto buscar órdenes en cada tic? ¿O es mejor ejecutar en cada barra? Todavía no sé qué es mejor en un caso y qué es mejor en otro.
t es el número de todos los pedidos.
p es el número de órdenes pendientes
Si la condición es verdadera:
es verdadero, entonces tanto t como p se incrementan, ya que cualquier orden del tipo 2 a 5 es tanto una orden pendiente como una orden. Por lo tanto, ambos contadores deben incrementarse. Y si la condición es verdadera:
Entonces no hay una orden pendiente pero sí una orden de mercado. Significa que aumentaremos el contador t, es decir, el contador del número total de pedidos.
Y si no hay nada, entonces imprimiremos que no hay pedidos
t = PedidosTotal();
¿por qué cuenta?????
Hola! Buscando errores en esta función.
La idea es que las órdenes pendientes que no se han abierto se eliminen dos días después de su colocación.
min=1440;
Gracias, pako.