Pregunta OrderModify() - página 2

 
WhooDoo22:

Ah-ha! Cambié el número de billete 0 por el 1 y todo funcionó como un reloj. Sí, estaba equivocado William... La función OrderSelect() era un problema. Obviamente la función OrderSelect() debe seleccionar un ticket. Si el número de ticket es 0, ¿qué ticket seleccionará el EA? :O "?". Gracias a ambos por su ayuda.

Gracias.

El número de billete NUNCA será 0... no es un número de billete válido.


Por favor, consulte este hilo:https://www.mql5.com/en/forum/142545
 

Simon, entiendo que el 0 no es un número de ticket válido PORQUE el 0 significa que no hay tickets para seleccionar. El 1 representa un ticket Y el número de ticket específico que la función OrderSelect() está intentando seleccionar.

Voy a leer el hilo. Gracias por publicarlo.

Gracias.

 
WhooDoo22:

Entiendo que 0 no es un número de ticket válido PORQUE 0 significa que no hay tickets para seleccionar. El 1 representa un ticket Y el número de ticket específico que la función OrderSelect() está seleccionando actualmente.

No, eso no es correcto. cero como número de ticket no significa nada, es INVALIDO. OrdersTotal() == 0 significa que no hay órdenes... es obvio que estás mezclando los resultados de diferentes funciones y números de ticket vs posiciones de órdenes


No haga exactamente lo que hizo antes . . . a menos que quiera exactamente el mismo resultado. No puede asumir que tiene el número de ticket correcto . . . . tiene que encontrarlo en el Pool de Pedidos y luego seleccionarlo .

Si quieres aprender haz este ejercicio:

  • abra una nueva cuenta Demo con cualquier Broker
  • coloque una orden de mercado de 0.1 lotes sin TP o SL
  • escriba un código que encuentre el número de ticket correcto para esta orden, luego use el número de ticket para seleccionar la orden, luego modifíquela para que tenga un TP y SL y finalmente ciérrela.

 
RaptorUK:

No, eso no es correcto. el cero como número de ticket no significa nada, es INVÁLIDO. OrdersTotal() == 0 significa que no hay pedidos... es obvio que estás mezclando los resultados de diferentes funciones y números de ticket

Si quieres aprender haz este ejercicio:

  • abre una nueva cuenta Demo con cualquier Broker
  • coloque una orden de mercado para 0.1 lotes sin TP o SL
  • escriba un código que encuentre el número de ticket correcto para esta orden, luego use el número de ticket para seleccionar la orden, luego modifíquela para que tenga un TP y SL y finalmente ciérrela.


¿Intentaste el ejercicio? muestra tu código cuando lo hayas hecho....
 

Simon,

Voy a codificar este proyecto. Debería ser pan comido. Ya he hecho la mayor parte del trabajo. ;)

Sí, no me importa hacer este ejercicio, viendo que has proporcionado tu apoyo constante.

Gracias.

 

Simón,

Ya está hecho. Asumí que querías el archivo en formato de script, para que pudieras simplemente arrastrarlo y soltarlo en un gráfico, esperar a que el EA haga algunos números, y luego ver cómo saca una orden del mercado.

Las diferencias entre lo que estoy construyendo actualmente y este proyecto es...

Actualmente construyendo:

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)){

Este proyecto:

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)){

La razón por la que utilicé "if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)){", es porque estoy tratando con un grupo de órdenes y no con una variable de entrada específica predefinida.

Mi construcción actual para el volumen II utiliza variables predefinidas porque debo seleccionar tickets específicos para ejecutar la estrategia del volumen II. Este proyecto fue diseñado para simplemente cerrar una orden en un abrir y cerrar de ojos.

En realidad tuve un par de signos de interrogación sobre mi cabeza mientras codificaba la ejecución de la función que contiene el precio Ask/Bid. Esto se debe a que, normalmente, al enviar/cerrar órdenes, suelo escribir simplemente "Ask"/"Bid", pero me di cuenta de que necesitaba definir una variable que pudiera ser tanto el precio Ask como el Bid en función de la condición de si la orden en el mercado era una orden de venta O de compra. Entonces, simplemente puse el habitual "si el total de órdenes es mayor que cero", y ya estaba todo listo. Eso debería cubrirlo todo.

Gracias.

Archivos adjuntos:
 

OK, no es lo que pretendía pero debería haber sido más claro con mi requerimiento . . su código no establece un SL y TP . . pero de todos modos déjame revisar mi requisito . . .

Usando la misma cuenta Demo . . .

  • coloque una orden de mercado para 0.1 lotes sin TP o SL en GBPUSD, una en USDJPY y una en EURUSD . . olvide el orden en el que colocó estas órdenes
  • sin tener en cuenta el orden en que se colocaron las operaciones y asumiendo que no hay conocimiento previo del número de órdenes colocadas escriba algún código que encuentre el número de ticket correcto para la orden colocada en USDJPY
  • imprimir el número de ticket en el registro de la forma "Número de ticket para USDJPY = "
  • luego use el número de ticket para seleccionar la orden, luego modifíquela para que tenga un TP y un SL y finalmente ciérrela.

Cuando haya terminado, por favor, muestre su código y la línea del registro que muestra el número de billete

 

Simón,

Ah, lo siento, no leí completamente tus primeras instrucciones, y no codifiqué lo que pedías. Oh bien, has añadido una nueva lista de requisitos, así que me pondré manos a la obra.

Antes de hacerlo, diré lo que voy a hacer...

1. Encontrar el número de billete de la orden colocada en USDJPY.

2. Imprimir el número de ticket en el registro en la forma "Número de ticket para USDJPY = ".

3. 3. Utilizar el número de ticket para seleccionar la orden y modificar la orden para que tenga un TP y un SL y cerrarla.

4. Muestre el código y una línea del registro que muestre el número de ticket.


Dicho esto, quiero que quede claro que estamos en la misma página.

Sí, puedo hacer 1. (obviamente no puedo usar las "funciones de moneda" para aislar los tickets ¿verdad?)

Sí, puedo hacer el 2.

3. ¿No te refieres a usar la función OrderSelect() para seleccionar la orden Y modificarla para que tenga un TP & SL y cerrarla?

4. Obviamente, mostraré el código ;)... una línea del registro mostrando el número de orden ( lo que podrías haber pedido era una "instantánea visual" del registro mostrando el número de orden. No importa)

Por favor, publica primero una respuesta antes de que empiece la tarea.


Gracias.

 
WhooDoo22:


Dicho esto, quiero dejar claro que estamos en la misma página.

Sí, puedo hacer 1. (obviamente no puedo usar las "funciones de moneda" para aislar los tickets ¿verdad?)

Sí, puedo hacer el 2.

3. ¿No te refieres a usar la función OrderSelect() para seleccionar la orden Y modificarla para que tenga un TP & SL y cerrarla?

4. Obviamente, mostraré el código ;)... una línea del registro mostrando el número de ticket ( lo que podrías haber pedido era una "instantánea visual" del registro mostrando el número de ticket. No importa)

Puedes usar las funciones que quieras siempre que lo que codifiques cumpla con el requisito . . y al hacerlo no incumplas lo que se da como condición, por ejemplo,"sin tener en cuenta el orden en el que se colocaron las operaciones y sin asumir ningún conocimiento previo del número de órdenes colocadas" . :-)
 
¿Cómo va todo? ¿Necesita alguna aclaración o consejo?