Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 179

 
Izdesbyll:

¡Por favor, ayuda!

¡Error 0 y la orden no se cierra! ¿Qué ocurre?

¿Y por qué normalizas el precio a dos? A Dígitos es necesario. Es más fácil escribir OrderClosePrice() en lugar de Bid
 

¿Es posible que haya cerrado parte del pedido?

¿Y si lo intenta de esta manera, qué dice?

double bylo = OrderLots();
if (OrderClose( OrderTicket(), 0.1, NormalizeDouble(Bid,2), 1 ))    Alert ("  Закрито частину лоту в розмірі 0.1 від ",bylo);
else Alert("Маємо помилку ",GetLastError());
 

artmedia70:
А почему нормализуете цену до двух? До Digits нужно. А проще писать OrderClosePrice() вместо Bid


 OrderClose( OrderTicket(), 0.1, OrderClosePrice(), 1 );  
      Alert("Маємо помилку ",GetLastError());

Ahora da el error 4051

 
ALXIMIKS:

¿Es posible que haya cerrado parte del pedido?

¿Y si lo intenta de esta manera, qué dice?



bylo = 0.1 y no cierra mi orden.
 
Ahora todo es un fallo, escribo:
 double p[100];
 p[i+1] = OrderProfit();
 if (p[i+1]>0) 
    {
      Alert("Є прибуток ордер ",i+1);
      OrderSelect(i+1,SELECT_BY_POS,MODE_TRADES); 
      Alert("Маємо помилку ",GetLastError());
      Alert("Вибрали ордер ",i+1);
      OrderClose( OrderTicket(), 0.1,  NormalizeDouble(Bid,Digits), 1 );  
      Alert("Маємо помилку ",GetLastError());
      Alert("Закрили ордер ",i+1); 

I+1 = 2 y en todas partes, pero el tercer orden comenzó a cerrarse.

 
Izdesbyll:

¡Por favor, ayuda!

¡Error 0 y la orden no se cierra! ¿Qué ocurre?

¿Qué tal si lo intentas de esta manera?

    double ld_Price;
    if (OrderType() == 0) ld_Price = NormalizeDouble (Bid, Digits);
    else ld_Price = NormalizeDouble (Ask, Digits);
    OrderClose (OrderTicket(), OrderLots(), ld_Price, 2);

¡¡¡Y no te olvides de SUPERAR la orden correspondiente antes del procedimiento de borrado!!!

 
Izdesbyll:
Ahora es un fallo total, estoy escribiendo:

i+1 = 2 y en todas partes, pero el tercer orden comenzó a cerrarse.

Si recoge los tickets en un array, el orden debe ser SELECCIONADO por TICKET, y no por su propia lista (orden).
 
TarasBY:

¿Qué tal si lo intentas de esta manera?

¡¡¡Y no te olvides de EXCLUIR la orden correspondiente antes del procedimiento de eliminación!!!


if (p[i+1]>0) 
    {
      Alert("Є прибуток ордер ",i+1);
      OrderSelect(i+1,SELECT_BY_POS,MODE_TRADES); 
      Alert("Маємо помилку ",GetLastError());
      Alert("Вибрали ордер ",i+1);
      double ld_Price;
      if (OrderType() == 0) ld_Price = NormalizeDouble (Bid, Digits);
      else ld_Price = NormalizeDouble (Ask, Digits);
      OrderClose (OrderTicket(), OrderLots(), ld_Price, 2);  
      Alert("Маємо помилку ",GetLastError());
      Alert("Закрили ордер ",i+1); 

La TERCERA orden cierra GetLastError = 0, i+1=2, OrderProfit() responde a la nada de la SEGUNDA orden. help.... Escribiría (OrderTicket()-1) pero me temo que no servirá de nada

 
Izdesbyll:

La TERCERA orden se cierra GetLastError = 0, i+1=2, OrderProfit() responde a la nula de la SEGUNDA orden. help.... Escribiría (OrderTicket()-1) pero me temo que no servirá de nada

no saben leer (¡a menos que, por supuesto, haya números de billetes en la matriz p[])!

    OrderSelect (p[i+1], SELECT_BY_TICKET, MODE_TRADES); 

...En general, es muy difícil captar la "estupidez" de un trozo de código... :)

 
Hola, podría alguien decirme si existe un tipo de bloqueo para cerrar todas las órdenes (incluyendo la eliminación de órdenes) si todas con números mágicos diferentes, en el rango de 1-60. Si hay uno, por favor, publíquelo. Y si no es tan difícil con la instrucción donde se debe insertar (porque es completamente verde en mql). Gracias de antemano.

Se me olvidó decirte que me gustaría cerrar con un porcentaje de ganancia del depósito.