[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 162

 
Vinin:


Ok, voy a aportar un poco de lógica

El ciclo se ejecuta independientemente de la condición if(NewBar())


No necesito que dependa de NewBAR(). Esta función es necesaria para evitar la colocación de órdenes en pilas. Por favor, dígame por qué mi código (en su última variante) funciona mejor.

funciona, pero en cuanto hago lo mismo con SELLSTOP, las operaciones dejan de abrirse.

 

Estimados señores, soy un novato.

Empecé a escribir mi primer EA...... y no puedo terminarlo.

De momento lo estoy probando en el probador de estrategias.

Es muy sencillo.

En la apertura de la vela de 10 horas, coloco una orden pendiente a una distancia de, por ejemplo, 60 pips del precio de apertura de esta vela de 10 horas.

He tenido algo de éxito con él.

Pero tengo que eliminar la orden pendiente, si no se ha transformado en una hora desde el momento en que se colocó

en una orden de mercado.

Aquí está mi código.

int start()
{
double Precio=Precio+60*Punto;
double SL=Precio-30*Punto;
double TP=Precio + 15*Punto;
if(OrdersTotal()==0 && Hour()==10 && Minute()== 00 )
OrderSend("EURUSD",OP_BUYSTOP,0.1,Precio,0,SL,TP, "fjdu",123,TimeCurrent( ) + 3600);

}

Este código se compila con éxito; el probador no muestra ningún error.

Pero el parámetro de expiración no funciona, es decir, las órdenes pendientes que no se convierten en órdenes de mercado en el plazo de 1 hora no se eliminan.

He cambiado el valor 3600 a 3600000.... pero no pasa nada.

Les agradecería mucho que me dijeran cuál es mi error.

 
solnce600:
el parámetro de caducidad no funciona

Lo más probable es que el corredor no lo admita. Para estar seguro, puedes ir así:

int i,ot = OrdersTotal();

for(i=ot-1;i>=0;i--)
{
   if(!OrderSelect()) continue;
   if(OrderMagicNumber()!=123) continue;
   
   if(OrderType()==OP_BUYSTOP && TimeCurrent()-OrderOpenTime()>3600)
   {
      OrderDelete(OrderTicket());
   }
}
 
solnce600:

Estimados señores, soy un novato.

Empecé a escribir mi primer EA...... y no puedo terminarlo.

De momento lo estoy probando en el probador de estrategias.

Es muy sencillo.

En la apertura de la vela de 10 horas, coloco una orden pendiente a una distancia de, por ejemplo, 60 pips del precio de apertura de esta vela de 10 horas.

He tenido algo de éxito con él.

Pero tengo que eliminar la orden pendiente, si no se ha transformado en una hora desde el momento en que se colocó

en una orden de mercado.

Aquí está mi código.

int inicio()
{
doble Precio=Precio+60*Punto;
doble SL=Precio-30*Punto;
doble TP=Precio + 15*Punto;
if(OrdersTotal()==0 && Hour()==10 && Minute()== 00 )
OrderSend("EURUSD",OP_BUYSTOP,0.1,Price,0,SL,TP, "fjdu",123,TimeCurrent( ) + 3600);

}

Este código se compila y prueba con éxito.

Pero el parámetro de expiración no funciona, es decir, las órdenes pendientes que no se convierten en órdenes de mercado en el plazo de 1 hora no se eliminan.

He cambiado el valor 3600 a 3600000.... pero no pasa nada.

Les agradecería mucho que me dijeran cuál es mi error.

¿Qué le impide hacer la condición de borrar lo mismo por hora y minuto? Es posible que el CD no cumpla con su vencimiento.
 
borilunad:
¿Y qué le impide hacer una condición para borrar a la misma hora y minuto? La empresa de corretaje puede no cumplir con su fecha de vencimiento.


alsu:

Lo más probable es que el corredor no lo admita. Para estar seguro, puedes hacerlo:



Tengo un terminal Alpari.en la cuenta de demostración que establece manualmente el péndulo y poner el tiempo de caducidad - 1 hora. Todo estaba bien.

He leído que si el broker no soporta este parámetro, habría un error.... pero no hay ningún error.

Las pruebas se están ejecutando ... pero la orden no se borra.

 
borilunad:
¿Y qué le impide hacer la condición de borrar por la misma hora y minuto? Es posible que el CD no cumpla con su vencimiento.

¿Y por horas y minutos?

Gracias.

 
solnce600:

¿Qué tal por horas y por minutos?

Gracias.



¿Qué debe sustituir al parámetro de caducidad?

 
solnce600:

Y por una hora y un minuto, ¿cómo es eso?

Gracias.

Está igual que lo abriste, sólo que una hora más tarde, a las 11:00. ¡Eso es lo que tienes! Yo no lo hago así, pero eso no cambia la cuestión.
 
borilunad:
Lo mismo que usted abrió, sólo que una hora más tarde, a las 11. Lo hago de forma diferente, pero eso no cambia el punto.

Perdona por ser tonto, pero no he entendido si tengo que cambiar algo en este parámetro o no.

Si es así, te agradecería que insertaras el parámetro de caducidad en mi código según sea necesario, y que pegaras la línea completa en el texto de tu respuesta.

Gracias.

 
solnce600:

Perdona por ser tonto, pero no he entendido si tengo que cambiar algo en este parámetro o no.

Si es así, te agradecería que insertaras el parámetro de caducidad en mi código según sea necesario, y que pegaras la línea completa en el texto de tu respuesta.

Gracias.



Puedo sugerir la siguiente variante:

if(Hour()==11 && OrdersTotal()>0)

{

if(OrderSelect(0,SELECT_BY_POS)==true)

{

if(OrderType()==OP_BUYSTOP)

{

OrderDelete(OrderTicket());

}

}

}

Y no se utiliza el parámetro de caducidad. La desventaja es que, al operar, el ordenador debe estar funcionando con Internet conectado y el terminal encendido para que la posición se cierre.

Razón de la queja: