How to code? - page 22

 

You can always write int crossTime = Time[0] when you had a cross, and then use iBarShift function using crossTime variable to check how many bars passed.

 

Hi Kalenzo,

Kalenzo:
You can always write int crossTime = Time[0] when you had a cross, and then use iBarShift function using crossTime variable to check how many bars passed.

How would you write this code to only include "Bear Bars" in the count?

I understand the ibarshift but this would include all bars since cross. You would still need to use a count system like I have it to count "Bear Bars" and I believe this is where my issue lies.

I originally tested my code with this code .... Which worked fine.... but didn't translate into the code above that would actually be listed in my 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);

}

Any other thoughts would be appreciated.

Thanks,

SaxMan

 

Sorry Omelette,

This doesn't work either

Thanks,

SaxMan

omelette:
Hi. Try this.
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);
 

time limit with EA code

I cant seame to place a time limit on my EA

code line is as follows:

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

I've tried changing that ZERO to a 1 or to a 12 and i can't get it to stop the trade ... i would like to have the trade expire in 12 hours how can i do this?

i'm useing a backtesting. to nake sure it works.. the expire function does work with that right?

 

Try this....

{

string expire_date = "2007.10.22";

datetime expirevar = StrToTime(expire_date);

if ( CurTime() >= expirevar )

{

Alert ("Version Expired");

return(0);

}

// code

return(0);

}

Dave

 
islandrock:
I cant seame to place a time limit on my EA

code line is as follows:

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

I've tried changing that ZERO to a 1 or to a 12 and i can't get it to stop the trade ... i would like to have the trade expire in 12 hours how can i do this?

i'm useing a backtesting. to nake sure it works.. the expire function does work with that right?

check ther error channel;

Applying of pending order expiration time can be disabled in some trade servers. In this case, when a non-zero value is specified in the expiration parameter, the error 147 (ERR_TRADE_EXPIRATION_DENIED) will be generated.

the parameter is a 'datetime' variable I dont beleive that 12 will fall within that variable declaration.

 
islandrock:
I cant seame to place a time limit on my EA

code line is as follows:

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

I've tried changing that ZERO to a 1 or to a 12 and i can't get it to stop the trade ... i would like to have the trade expire in 12 hours how can i do this?

i'm useing a backtesting. to nake sure it works.. the expire function does work with that right?

Hi. Expiration timeouts work fine with MT, the only caveat being that some brokers don't allow them - FXDD is one. The expiration time needs to be in datetime format for it to work - ie.

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);
 

i've been trying this.

extern int TradeLifeHour=12;

extern int TradeLifeMin=00;

datetime expirationtime; (did'nt know what goes here)

then within start()

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

and use expirationtime in the 0 area.

i the last code but i dont know how to config it to expire the trade in 12 hours

 
xxDavidxSxx:
Try this....

{

string expire_date = "2007.10.22";

datetime expirevar = StrToTime(expire_date);

if ( CurTime() >= expirevar )

{

Alert ("Version Expired");

return(0);

}

// code

return(0);

}

Dave

I just used the code I gave you. I changed the date to 2006 and slapped it in a random place inside Bipoler on a real money FXDD account, and it worked like a charm.

Or mabe mines too simple? I dunno

Dave

 

??

that code does not make each trade my EA opens expire 12 hours from the time it opens...

Reason: