¿Cómo codificar? - página 22

 

Siempre se puede escribir int crossTime = Time[0] cuando se ha producido un cruce, y luego utilizar la función iBarShift utilizando la variable crossTime para comprobar cuántas barras han pasado.

 

Hola Kalenzo,

Kalenzo:
Siempre puedes escribir int crossTime = Time[0] cuando tengas un cruce, y luego usar la función iBarShift usando la variable crossTime para comprobar cuántas barras han pasado.

¿Cómo escribirías este código para incluir sólo las "Bear Bars" en el recuento?

Entiendo el ibarshift pero esto incluiría todas las barras desde el cruce. Todavía tendría que utilizar un sistema de recuento como lo tengo para contar "Bear Bars" y creo que esto es donde mi problema radica.

Originalmente probé mi código con este código .... El cual funcionó bien.... pero no se tradujo en el código anterior que en realidad se enumeran en mi EA

int start()

{

//----

double f=iMA(NULL,0,3,0,MODE_SMA,PRICE_CLOSE,0);

double s=iMA(NULL,0,7,0,MODE_SMA,PRICE_CLOSE,0);

double fp=iMA(NULL,0,3,0,MODE_SMA,PRICE_CLOSE,1);

double sp=iMA(NULL,0,7,0,MODE_SMA,PRICE_CLOSE,1);

static bool CrossedUP,CrossedDn;

static int Count=0;

if(f>s && fp<=sp)

{

CrossedUP=true;

CrossedDn=false;

Alert(Symbol()," Crossed UP");

Count=0;

}

else

if(f=sp)

{

CrossedUP=false;

CrossedDn=true;

Alert(Symbol()," Crossed Down");

Count=0;

}

if(NewBar()==true && f>s || f<s) Count++;

Comment("Crossed UP: ",CrossedUP," Crossed Down: ",CrossedDn," Bars since Cross: ",Count);

//----

return(0);

}

Cualquier otra idea sería apreciada.

Gracias,

SaxMan

 

Lo siento, Omelette,

Esto tampoco funciona

Gracias,

SaxMan

omelette:
Hola. Prueba con esto.
bool LongClose()

{

if(MAFastC=MASlowP)

{

CrossedUp=false;

CrossedDn=true;

BarCount=0;

}

else

if(MAFastC>MASlowC && MAFastP<=MASlowP)

{

CrossedUp=true;

CrossedDn=false;

BarCount=0;

Alert("Crossed Down");

}

if(CrossedDn==true && NewBar()==true && Candle3mP=="Bear")

BarCount++;

if(BarCount>=2 && Candle3mC=="Bear")

{

Alert("Close Long Position");

return(true);

}

else return(false);
 

límite de tiempo con código EA

No puedo colocar un límite de tiempo en mi EA

la línea de código es la siguiente

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)

He tratado de cambiar ese CERO a un 1 o a un 12 y no puedo conseguir que se detenga el comercio ... me gustaría tener el comercio expira en 12 horas ¿cómo puedo hacer esto?

Estoy usando un backtesting. para asegurarme de que funciona... la función de expiración funciona con eso ¿verdad?

 

Pruebe esto....

{

string fecha_de_expiración = "2007.10.22";

datetime expirevar = StrToTime(expire_date);

if ( CurTime() >= expirevar )

{

Alert ("Versión expirada");

return(0);

}

// código

return(0);

}

Dave

 
islandrock:
No puedo colocar un límite de tiempo en mi EA

La línea de código es la siguiente

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)

He probado a cambiar ese CERO por un 1 o por un 12 y no consigo parar la operación... me gustaría que la operación expirara en 12 horas ¿cómo puedo hacerlo?

Estoy usando un backtesting. para asegurarme de que funciona... la función expire funciona con eso ¿verdad?

compruebe el canal de error;

La aplicación del tiempo de caducidad de la orden pendiente puede ser desactivada en algunos servidores de comercio. En este caso, cuando se especifica un valor distinto de cero en el parámetro de expiración, se generará el error 147 (ERR_TRADE_EXPIRATION_DENIED).

el parámetro es una variable "datetime" no creo que el 12 entre dentro de esa declaración de variable.

 
islandrock:
No puedo colocar un límite de tiempo en mi EA

La línea de código es la siguiente

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)

He probado a cambiar ese CERO por un 1 o por un 12 y no consigo parar la operación... me gustaría que la operación expirara en 12 horas ¿cómo puedo hacerlo?

Estoy usando un backtesting. para asegurarme de que funciona... la función de expiración funciona con eso, ¿verdad?

Hola. Los tiempos de expiración funcionan bien con MT, la única advertencia es que algunos corredores no los permiten - FXDD es uno. El tiempo de expiración tiene que estar en formato de fecha para que funcione - es decir.

datetime ExpirationTime = StrToTime(TimeYear(Time[0]) + "." + TimeMonth(Time[0])+ "." + TimeDay(Time[0])+" "+23+":"+55); OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point,"timetest",16384,ExpirationTime,Green);
 

He estado probando esto

extern int TradeLifeHour=12;

extern int TradeLifeMin=00;

datetime expirationtime; (no se sabe qué va aquí)

entonces dentro de start()

expirationtime = CurTime()+TradeLifeHour*60*60+TradeLifeMin*60;

y utilizar expirationtime en el área de 0.

Yo el último código pero no sé cómo configurarlo para que el comercio expire en 12 horas

 
xxDavidxSxx:
Prueba esto....

{

string fecha_de_expiración = "2007.10.22";

datetime expirevar = StrToTime(expire_date);

si ( CurTime() >= expirevar )

{

Alert ("Versión expirada");

return(0);

}

// código

return(0);

}

Dave

Acabo de utilizar el código que te he dado. Cambié la fecha a 2006 y lo puse en un lugar al azar dentro de Bipoler en una cuenta de dinero real FXDD, y funcionó como un encanto.

O mabe minas demasiado simple? No sé

Dave

 

??

ese código no hace que cada operación que abre mi EA caduque a las 12 horas de su apertura...