Preguntas "para" de los operadores de bicicletas - página 13

 

Simón,

"Tu bucle while no encontró ninguna entrada... . ."

No encontró "posiblemente" el índice del ticket en el pool de Historia, lo encontró o no se habrían ejecutado las siguientes funciones. :)


"¿un índice de pool != un número de ticket no hemos pasado por esto antes?"

Permítame aclararlo ahora,

Un número de ticket de orden esel número de ticket único asignado a una orden una vez que se ha enviado la solicitud.

Un número deposición de orden es la posición de una orden en un índice de pool de órdenes(importante de entender) similar a un array.


"¿Por qué espera que la orden cerrada USDJPY termine en la misma posición en un pool completamente diferente, el pool de Historia?"

No debería porque es un pool separado.

En el código que presenté-

   if(OrderType()==OP_BUY){bid_ask=MarketInfo("USDJPY",MODE_BID);}
   if(OrderType()==OP_SELL){bid_ask=MarketInfo("USDJPY",MODE_ASK);}
   if((OrderStopLoss()!=0)&&(OrderTakeProfit()!=0))
   if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderSymbol()=="USDJPY"))
     {      
      OrderClose(OrderTicket(),OrderLots(),bid_ask,3,CLR_NONE);

      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
      
      Print(OrderCloseTime());
     }

esto es aparentemente la selección de la orden de la piscina de la historia de la derecha? Al menos esto es lo que he deducido de la documentación. Además, recientemente probé a abrir unas cinco órdenes en pares de divisas distintos, cerré una, luego encendí el EA y siguió realizando todas las funciones, incluida Print(OrderCloseTime());.


Gracias.

 
WhooDoo22:

Simón,

"Tu bucle while no encontró ninguna entrada... . ."

No encontró "posiblemente" el índice del ticket en el pool de Historia, lo encontró o no se habrían ejecutado las siguientes funciones. :)

¿Qué funciones estás usando que utilizan un número de ticket? Tus OrderSelects son todos SELECT_BY_POS... POS significa POSición, así que repito, tu bucle while no encuentra un ticket, encuentra un índice en el pool de Order.


Lo que usted está seleccionando del pool de Historia es la Orden en la posición de índicei ¿cómo sabe usted que la orden que acaba de cerrar está en la posicióni? la respuesta es que usted no lo sabe . . el valor dei es donde la orden del USDJPY estaba en el pool de órdenes . . . los pools están completamente separados y no están vinculados de ninguna forma.
 

Simon,

"tu bucle while no encuentra un billete, encuentra un índice en el conjunto de pedidos."

Sí, creo que entiendo esto. Esto no debería ser un problema.


"Los pools están completamente separados y no están vinculados de ninguna manera".

Esto se entiende, pero el bloque de código de la función OrderClose() parece funcionar como está previsto. Ajustaré el bloque de código para que guarde el valor del número de ticket de la orden para continuar con lo que usted desea abordar. ¿De acuerdo?

En primer lugar, haré esta pregunta: ¿Por qué el número de posición de un pedido en el historial no sería el mismo que su número de posición actual? Creo que este número es el mismo.


Gracias.

 
WhooDoo22:

Simon,

"tu bucle while no encuentra un billete, encuentra un índice en el conjunto de pedidos."

Sí, creo que entiendo esto. Esto no debería ser un problema.


"Los pools están completamente separados y no están vinculados de ninguna manera".

Esto se entiende, pero el bloque de código de la función OrderClose() parece funcionar como está previsto.

No ha habido ningún cambio en la llamada a OrderClose() por lo que debería seguir funcionando.


Sin embargo, esto no funciona como se pretende porque el concepto es fatalmente defectuoso ... hasta que entienda por qué no tiene sentido continuar ...

 if(OrderType()==OP_BUY){bid_ask=MarketInfo("USDJPY",MODE_BID);}
   if(OrderType()==OP_SELL){bid_ask=MarketInfo("USDJPY",MODE_ASK);}
   if((OrderStopLoss()!=0)&&(OrderTakeProfit()!=0))


   if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderSymbol()=="USDJPY"))
     {      
      OrderClose(OrderTicket(),OrderLots(),bid_ask,3,CLR_NONE);

      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
      
      Print(OrderCloseTime());
     }
 
WhooDoo22:


En primer lugar, voy a hacer esta pregunta: ¿Por qué el número de posición del pool histórico de una orden no sería el mismo que el número de posición del pool actual? Creo que el número es el mismo.


Vaya a su cuenta Demo con la que ha estado probando... ¿cuántas órdenes abiertas tiene? ¿cuántas órdenes tiene en su Historia en la pestaña de Historia de la Cuenta?
 

Simon,

'Historial de cuentas' contiene cincuenta y seis.

'Comercio' (órdenes abiertas) contiene tres.


Estoy esperando que escribas: "Supongo que sí funciona WhooDoo. :)"

Hooold on, comprobé el número de ticket de la función Print() devuelto y devolvió un número de ticket diferente al de la orden USDJPY.

No funciona. Confirmado. Me alegro de haber intentado sin embargo, esta lección fue la pena la discusión.

Gracias.

 
WhooDoo22:

Simon,

'Historial de cuentas' contiene cincuenta y seis.

'Comercio' (órdenes abiertas) contiene tres.

Si creas una nueva orden de USDJPY y ejecutas tu código y encuentra esta nueva orden i tendrá un valor de 3 , ¿qué posición en el Historial tomará tu orden de USDJPY cuando la cierres? ya hay 56 por lo que la posición 3 ya está tomada, al igual que la posición 4, 5, 6, 7 . . 55
 

Simón,

57.

   if(OrderType()==OP_BUY){bid_ask=MarketInfo("USDJPY",MODE_BID);}
   if(OrderType()==OP_SELL){bid_ask=MarketInfo("USDJPY",MODE_ASK);}
   if((OrderStopLoss()!=0)&&(OrderTakeProfit()!=0))
   if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)&&(OrderSymbol()=="USDJPY"))
     {      
      int usdjpy_ticket_number=OrderTicket();
      
      OrderClose(OrderTicket(),OrderLots(),bid_ask,3,CLR_NONE);

      if(OrderSelect(usdjpy_ticket_number,SELECT_BY_TICKET,MODE_TRADES)==true)
      
      Print("Ticket number for USDJPY = ",usdjpy_ticket_number);
      Print("Order close time = ",OrderCloseTime());
     }

Gracias.

Archivos adjuntos:
 
WhooDoo22:

Simón,

57.

Gracias.

i es 3, entonces, ¿como se puede seleccionar la orden en la posición 3 en el pool de la historia para conseguir la orden en la posición 57? ?
 

Simon,

No lo hará. Recientemente he redescubierto esto.

Gracias.