[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 650

 

Necesito ayuda con las órdenes de cierre)) hay una operación en cada barra. El probador abre muchas, muchas órdenes, y la forma correcta es enviar una orden en la barra actual y cerrarla en la siguiente.

Dime qué pasa...

 if (OrdersTotal()!=0)
   {
     OrderSelect(OrderTicket(),SELECT_BY_TICKET);
     if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
     if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);
   }
 

No es así...

¿Quién te enseñó a hacer esto?

¿dónde está el bucle de pedido?

¿qué ocurre si la orden no es "select"?

¿dónde se busca la hora de apertura y cierre del último pedido ?????

dónde está la prohibición de seguir abriendo órdenes en la misma barra si todas las órdenes se cierran según las condiciones de DERECHO (que no tiene) ...

 
FAQ:

No es así...

¿Quién te enseñó a hacer esto?

¿dónde está el bucle de pedido?

¿qué ocurre si la orden no es "select"?

¿dónde se busca la hora de apertura y cierre del último pedido ?????

dónde está la prohibición de seguir abriendo órdenes en la misma barra si todas las órdenes se cierran según las condiciones de DERECHO (que no tiene) ...

¿Por qué el ciclo de solapamiento si siempre hay un pedido abierto?
 
orb:

Necesito ayuda con las órdenes de cierre)) hay una operación en cada barra. El probador abre muchas, muchas órdenes, y la forma correcta es enviar una orden en la barra actual y cerrarla en la siguiente.

Dime qué pasa...

OrderSelect(OrderTicket(),SELECT_BY_TICKET);

"seleccionar orden con el ticket de la orden actualmente seleccionada" ¿cómo es eso?

 

Entonces...

Ve al hilo de Igor Kim, escribe las funciones que necesites y úsalas, y verás cómo hacerlo bien.

 
(hombre, soy estúpido.)
 
7sintez:
¡Hola a todos! Chicos..., una pista para un novato... ¡¡¡Quiero hacer que en determinadas condiciones sólo se abra una operación por encima de la vela!!! Tengo un montón de oficios que se abren por alguna razón... No inmediatamente, sino gradualmente... ¡Es decir, digamos que en una vela de 5 minutos durante todos los 5 minutos se abren ofertas! Y tengo que hacer que sólo se abra una operación. Y para que en la siguiente vela bajo ciertas condiciones, también se abriera una sola operación, etc.


Gracias.

Lo hice así. Miro las órdenes y si hay una orden abierta en el par de divisas, comparo su hora de apertura con la hora de apertura de la barra actual. Si el tiempo de la orden es mayor, salgo. Si hay una nueva barra, su tiempo de apertura se hace más largo que el tiempo de la orden que bloqueó la operación en la barra anterior, y se puede operar en la nueva barra.
if (OrdersTotal()>0)
   {  for (i=OrdersTotal()-1; i>=0; i--)
      {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {  if (OrderSymbol()==Symbol() && OrderOpenTime()>iTime(NULL,0,0))
            {   Sleep(5*1000); return(0);
   }  }  }  }
 
Qwertee:

Técnicamente es simple: buysell !="buy" - por lo que la siguiente Alerta(1) no se ejecuta.

Lo que contiene la variable buysel en ese momento se averigua mediante la impresión: Print (buysell); después de la primera alerta.

------------------------------------------------------------------------------------------------------------------------------------------------

Ese es el problema, si pongo Print(buysell) en lugar de Alert(1) en el código, entonces buysell devuelve el valor buy, entonces ¿cuál es el problema?

Para estar seguro del método de ensordecer a una cucaracha arrancándole las patas, hay que arrancarle todas las patas una a una, dando cada vez la orden de "Arrastrarse"; este es el destino de todos los experimentadores. Intente poner algo más en el segundo comando Alert(), por ejemplo Alert ("1"), o Alert ("¡Mamá, no te aflijas!") - observe lo que sucede. ;)))
 
paladin80:
Yo lo he hecho así. Si hay una orden abierta en el par de divisas de interés, comparo su hora de apertura con la hora de apertura de la barra actual. Si el tiempo de la orden es mayor, salimos. Si hay una nueva barra, su tiempo de apertura es mayor que el tiempo de la orden que bloqueó la transacción en la barra anterior y podemos operar en la nueva barra.
Si le dices a un niño pequeño que llame a su madre "papá", lo hará hasta que alguien "se ría de él"...

Si se trata de un principiante, ¡hazlo bien! Construcción:

if (OrdersTotal()>0)

Esto funcionará siempre que el operador no ejecute varios Asesores Expertos en la misma cuenta, ¡y esto ocurrirá tarde o temprano! Lo que significa, Un asesor sin MAGIA es "como un pájaro sin ala, como un hombre sin pasta"...

Por cierto y

iTime(NULL,0,0)

es más correcto escribirlo como Tiempo[0].
Y dormir (5*1000) = 5 segundos. ¿Y a qué esperamos?

 
7sintez:
¡Hola a todos! Chicos..., una pista para un novato... ¡¡¡Quiero hacer que en determinadas condiciones sólo se abra una operación por encima de la vela!!! Tengo un montón de ofertas que se abren por alguna razón... No inmediatamente, sino gradualmente... ¡Es decir, digamos que sobre una vela de 5 minutos durante los 5 minutos se abren las ofertas! Y tengo que hacer que sólo se abra una operación. Y para que en la siguiente vela, bajo ciertas condiciones, también se abra una sola operación, etc.


Gracias.

Compare la hora de apertura de la orden con el inicio de la vela de 5 minutos, por ejemplo, así:

if (iBarShift (NULL, 5, OrderOpenTime()) == iBarShift (NULL, 5, iTime (NULL, 5, 0))) return (0);
или
if (OrderOpenTime() >= iTime (NULL, 5, 0)) return (0);
Razón de la queja: