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

 
exsistentia:

Parece que no he explicado bien el problema. El caso es que hay una orden abierta de GBPUSD (no pendiente), el precio abierto es 1,61029. La función OrderOpenPrice, según entiendo, debe devolver el precio real de apertura de la orden (1,61029). Sin embargo, devuelve un valor redondeado a 4 decimales, 1,6103. Probado en diferentes órdenes con diferentes precios abiertos - el resultado es el mismo: falta el último dígito.


Para ello, existe DoubleToStr(), que escribirá con Dígitos reales, ¡pero escribirá con 4! ¡Consulta la Documentación en la parte superior izquierda, allí encontrarás todo y aprenderás mucho + tutorial!

Ahí lo tienes:

Alert("Цена открытия ",OPP);// не так

Alert("Цена открытия ",DoubleToStr(OPP,Digits);// а так
 
borilunad:


¡Para ello existe DoubleToStr(), que escribirá con Dígitos reales, pero de esta forma escribirá con 4! ¡Consulta la Documentación en la parte superior izquierda, allí encontrarás todo y aprenderás mucho + tutorial!

Ahí lo tienes:



¡Muchas gracias! Y estoy leyendo el tutorial, y escribiendo un EA sobre la marcha.

Y otra pregunta: ¿cuál es la forma más fácil de saber que un determinado pedido está cerrado (por ticket)? ¿Debo utilizar la función OrderCloseTime o existe una función especial para este fin?

 
exsistentia:



¡Muchas gracias! Estoy leyendo el tutorial y escribiendo un EA sobre la marcha.

Y otra pregunta: ¿cuál es la forma más fácil de saber si un pedido está cerrado (por ticket)? ¿Debo utilizar la función OrderCloseTime o existe una función especial para este fin?

   if(OrderSelect(ticket,SELECT_BY_TICKET) && OrderCloseTime()>0) {
      // Ордер закрыт
      }

La variable ticket debe almacenar el número de ticket del pedido que se está comprobando
 
artmedia70:

La variable ticket debe almacenar el número de ticket del pedido que se está comprobando

Si la orden está cerrada, ¿no debería encontrarse en el historial (MODE_HISTORY)?
 
artmedia70:

La variable ticket debe almacenar el número de ticket del pedido que se está comprobando

Gracias.

Otra pregunta. Hay un bloque en el EA que debería eliminar las órdenes pendientes, dependiendo del cierre de las órdenes de mercado:

OrderSelect(T1,SELECT_BY_TICKET);
datetime cls1;
cls1=OrderCloseTime(); // tiempo para cerrar 1 orden
OrderSelect(T2,SELECT_BY_TICKET);
datetime cls2;
cls2=OrderCloseTime(); // tiempo para cerrar 2 órdenes
Alert(cls1," ",cls2);

if(cls1==0 && cls2==0) //si ambas órdenes están abiertas
return(0);
else
CLS++; //bandera de cierre para una de las órdenes

if(cls1>0 && CLS==1) //borrar las órdenes pendientes en función de la orden cerrada
OrderDelete(T3);
if(cls2>0 && CLS==1)
OrderDelete(T4);
return(0);
}

El bloque no funciona por alguna razón (no cierra las órdenes pendientes) y la alerta siempre muestra "0 0". He cerrado específicamente una de las órdenes abiertas pero no pasa nada. Da la sensación de que el EA no detecta que una orden ya ha sido cerrada y ahora está procesando datos obsoletos. ¿Cuál puede ser el problema?

 
exsistentia:

Gracias.

Otra pregunta. Hay un bloque en el EA que debería eliminar las órdenes pendientes, dependiendo del cierre de las órdenes de mercado:


El bloqueo no funciona por alguna razón (las órdenes pendientes no se cierran) y la alerta siempre muestra "0 0". He cerrado a propósito una de las órdenes abiertas pero no pasa nada. Da la sensación de que el EA no detecta que la orden ya ha sido cerrada y ahora está procesando los datos antiguos. ¿Cuál puede ser el problema?

¿Dónde se encuentra el ticket de pedido? ¿Y de dónde sale OrderCloseTime si la orden sigue activa (al menos, está seleccionada entre las activas por código)?
 
evillive:
¿Dónde se encuentra el ticket de pedido? ¿Y de dónde sale OrderCloseTime si la orden sigue activa (al menos está seleccionada entre las activas por código)?
Oh, deja de rabiar. En este caso no se tiene en cuenta la piscina . Sólo con un tiempo de cierre mayor que/igual a cero, podemos determinar de qué lista se ha seleccionado el pedido. Es una pena no conocer estos aspectos básicos ;)
 
evillive:

si una orden está cerrada, ¿no debería buscarse en el historial (MODE_HISTORY)?
Si se selecciona por índice - sí, en el historial, si se selecciona por pool de tickets se ignora. Aprende las matemáticas ;)
 
artmedia70:
Oh, deja de rabiar. En este caso no se tiene en cuenta la piscina . Sólo si la hora de cierre es mayor que/igual a cero podrá determinar de qué lista se ha seleccionado el pedido. Es una pena no conocer estos aspectos básicos ;)


Casi nunca busco por billete, más bien por índice, puede ser una pena, pero qué se le va a hacer ;)

pero la búsqueda del billete correcto no se cita allí, tal vez lo está buscando mal y luego se queja de que el código no funciona...

 
evillive:

Casi nunca busco por billete, más bien por índice, quizá sea una pena, pero qué se le va a hacer ;)

pero buscar la entrada correcta allí en el código no condujo, tal vez lo está buscando mal y luego se queja de que el código no funciona...

Es un lío ahí fuera...
Razón de la queja: