¿Cómo codificar? - página 63

 

¿Cómo abrir una orden sólo al principio de una barra?

Hola,

Estoy implementando un EA en el que quiero abrir una orden sólo si se ha producido un cruce de algún nivel por un indicador entre la segunda barra anterior y la anterior.

Por ejemplo, en el gráfico diario, si hay un cruce entre el 18 de enero y el 19 de enero, quiero abrir una orden el 20 de enero.

Hice algo así:

Cuando abro una orden, registro la hora de apertura de la orden.

Luego hago la siguiente prueba ¿Es (CurrentTime() - LastOrderOpenTime) < Period()?

Si es así, significa que la barra actual no ha terminado, todavía, y no debería abrir una nueva orden. Y también, cuando esta condición se vuelve falsa, debería estar en la siguiente barra del gráfico, y el cruce ocurrió antes de la última barra y no debería abrirse ninguna orden hasta la siguiente señal.

El problema es que al adjuntarlo a un gráfico, sigue creando nuevas órdenes hasta que termina la barra. ¿Alguien puede decirme qué he hecho mal?

 
dvarrin:
Hola,

Estoy implementando un EA en el que quiero abrir una orden sólo si se ha producido un cruce de algún nivel por un indicador entre la segunda barra anterior y la anterior.

Por ejemplo, en el gráfico diario, si hay un cruce entre el 18 de enero y el 19 de enero, quiero abrir una orden el 20 de enero.

Hice algo así:

Cuando abro una orden, registro la hora de apertura de la orden.

Luego hago la siguiente prueba ¿Es (CurrentTime() - LastOrderOpenTime) < Period()?

Si es así, significa que la barra actual no ha terminado, todavía, y no debería abrir una nueva orden. Y también, cuando esta condición se vuelve falsa, debería estar en la siguiente barra del gráfico, y el cruce ocurrió antes de la última barra y no debería abrirse ninguna orden hasta la siguiente señal.

El problema es que al adjuntarlo a un gráfico, sigue creando nuevas órdenes hasta que se termina la barra. ¿Alguien puede decirme qué he hecho mal?

No estoy seguro pero esto es lo que alguien me hizo hace tiempo. Tendría que buscarlo en Google para dar el apoyo adecuado al escritor original.

Ayuda a determinar si está o no en la apertura de una nueva barra.

int newbar()

{

double g;

int m,s,k;

m=Time[0]+Period()*60-TimeCurrent();

g=m/60.0;

s=m%60;

m=(m-m%60)/60;

return(m);

}[/CODE]

And I use it like this:

[CODE]if (newbar()==Period())

Espero que esto ayude.

 
dvarrin:
Hola,

Estoy implementando un EA en el que quiero abrir una orden sólo si se ha producido un cruce de algún nivel por un indicador entre la segunda barra anterior y la anterior.

Por ejemplo, en el gráfico diario, si hay un cruce entre el 18 de enero y el 19 de enero, quiero abrir una orden el 20 de enero.

Hice algo así:

Cuando abro una orden, registro la hora de apertura de la orden.

Luego hago la siguiente prueba ¿Es (CurrentTime() - LastOrderOpenTime) < Period()?

Si es así, significa que la barra actual no ha terminado, todavía, y no debería abrir una nueva orden. Y también, cuando esta condición se vuelve falsa, debería estar en la siguiente barra del gráfico, y el cruce ocurrió antes de la última barra y no debería abrirse ninguna orden hasta la siguiente señal.

El problema es que al adjuntarlo a un gráfico, sigue creando nuevas órdenes hasta que se termina la barra. ¿Alguien puede decirme qué he hecho mal?

Entonces hago la siguiente prueba ¿Es (CurrentTime() - LastOrderOpenTime) < Period()?

puede añadir // return (0);

O

esto puede ayudar... agrega el código..

for(int i=0;i<TotalPedidos();i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;

if(OrderSymbol()== Symbol () && OrderMagicNumber()== MN)

{

if( OrderOpenTime() >= iTime(0, PERIOD_D1, 0) samebar++;

}

}

se puede elegir entre los 2..

if ( samebar > 0 ) return (0);

O

si (samebar < 1) {sus códigos de pedido;}

no soy bueno en la codificación por lo que podría alguien tratar de comprobar si pongo los códigos correctos..

 
dvarrin:
Hola,

Estoy implementando un EA en el que quiero abrir una orden sólo si se ha producido un cruce de algún nivel por un indicador entre la segunda barra anterior y la anterior.

Por ejemplo, en el gráfico diario, si hay un cruce entre el 18 de enero y el 19 de enero, quiero abrir una orden el 20 de enero.

Hice algo así:

Cuando abro una orden, registro la hora de apertura de la orden.

Luego hago la siguiente prueba ¿Es (CurrentTime() - LastOrderOpenTime) < Period()?

Si es así, significa que la barra actual no ha terminado, todavía, y no debería abrir una nueva orden. Y también, cuando esta condición se vuelve falsa, debería estar en la siguiente barra del gráfico, y el cruce ocurrió antes de la última barra y no debería abrirse ninguna orden hasta la siguiente señal.

El problema es que al adjuntarlo a un gráfico, sigue creando nuevas órdenes hasta que se termina la barra. ¿Alguien puede decirme qué he hecho mal?

Ummm...

if(iOpen(Symbol(),0,0)==iClose(Symbol(),0,0)&&iLow(Symbol(),0,0)==iHigh(Symbol(),0,0))

{

//A new bar has happend.

}
 

¿Cómo puedo saber el beneficio de la operación anterior? Y los lotes, y el lado?

 
Dan7974:
¿Cómo puedo saber el beneficio de la operación anterior? ¿Y los lotes, y el lado?

Utilice OrdersHistoryTotal() en lugar de OrdersTotal(). Luego utilice OrderProfit(), OrderLots() etc. Debe asegurarse de que se carguen las cotizaciones históricas para el periodo de tiempo que le interesa, y creo que sólo puede hacerlo manualmente - haga clic con el botón derecho en la pestaña "Orders History" y seleccione "All History".

Debería haber añadido que es necesario utilizar 'MODE_HISTORY' con OrderSelect()...

 
omelette:
Utiliza OrdersHistoryTotal() en lugar de OrdersTotal(). Luego utilice OrderProfit(), OrderLots() etc. Debe asegurarse de que las cotizaciones históricas para el período de tiempo que le interesa se cargan, sin embargo, y creo que sólo se puede hacer esto manualmente - haga clic en la pestaña 'Orders History' y seleccione 'All History'. Debería haber añadido que es necesario utilizar 'MODE_HISTORY' con OrderSelect()...

Hola Omelette,

Sabes que BT tiene un problema al buscar en el historial: busca en el historial real, no en el del BT. Pregunté a Metaquote hace unos meses sobre este error pero no tuvieron ninguna respuesta.... Tal vez ahora esté solucionado...

 

Hola

¿Cómo se codifica un ciclo de endurecimiento de los tipos de interés en una moneda y un ciclo de reducción de los tipos de interés en otra moneda?

¿Puede el EA mirar los tipos de interés actuales de los swaps y los históricos de los swaps?

OILFXPRO

 
Archivos adjuntos: