Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 455

 

¡Hola!


El robot abre y cierra órdenes en base a ciertas señales, pero es necesario que después de cerrar la orden se coloque una orden pendiente en la misma dirección, pero sólo una.

Es decir, después de que la orden pendiente se coloque, se active y se cierre, no tiene que pasar nada más y el robot está esperando una señal para abrir una orden regular.


¿Pueden decirme cómo ponerlo en práctica?

 
Snower:¡Buenos días!

El robot abre y cierra órdenes en base a ciertas señales, por lo que necesito que el robot coloque una orden pendiente en la misma dirección, pero sólo una.

Es decir, después de que la orden pendiente haya sido colocada, activada y cerrada, no tiene que pasar nada más, el robot está esperando una señal para abrir una orden normal.

¿Puede decirme cómo se puede aplicar esto?

Es muy sencillo. En dos bucles for se analiza 1) el historial de pedidos y 2) los pedidos en curso. Basándose en el análisis, se deduce la situación y se utilizan sentencias condicionales "if" para realizar la acción deseada, ¿o se necesitan más detalles?

 
STARIJ:

Es tan sencillo como eso. En dos bucles for, se analiza 1) el historial de pedidos y 2) los pedidos en curso. Basándose en el análisis, se deduce la situación y se utilizan sentencias condicionales "if" para realizar la acción requerida. o ¿necesita más detalles?

Le agradecería mucho que me lo explicara.

 
Snower: Le agradecería mucho que me lo explicara.

¿Qué parte quieres que deletree? ¿O toda?

 
LRA:

¿Qué parte quieres que escriba? ¿O todas?

los bucles en sí, los ifs que puedo organizar.

 
Vladislav Andruschenko:
))) Llevo 10 años trabajando y nunca he tenido esos pensamientos. Te gustan las situaciones difíciles.

ahora serán

 

¿Cuál es el problema con este código? ¿A veces abre 1 operación, a veces 2?

Se supone que tengo un máximo de 1 operación por par, pero debo haber metido la pata en alguna parte


...
if(!Orderex(_Symbol))
{
   OrderSend(NULL,OP_SELL,lot,Bid,30,Bid+stop*Point,Bid-take*Point,NULL,magicf,0,clrRed);
}
...
bool Orderex(string symbol)
{
   for(int i=OrdersTotal(); i>0; i--)
      {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==symbol && OrderMagicNumber()==magicf) return true;
      
      
      
      }


   return false;
}
 
Roman Sharanov:

¿Cuál es el problema con este código? ¿A veces abre 1 operación, a veces 2?

Se supone que tengo un máximo de 1 operación por par, pero debo haber metido la pata en alguna parte


for(int i=OrdersTotal()-1; i>=0; i--)
 
Konstantin Nikitin:

Y aún más interesante es esto

for(int i = OrdersTotal(); i-- >=0;)
 
Ahhhh, sí, la cuenta es desde cero :)
Razón de la queja: