Thread: EA request
View Single Post
  #12 (permalink)  
Old 11-17-2005, 01:39 PM
Alex.Piech.FinGeR's Avatar
Alex.Piech.FinGeR Alex.Piech.FinGeR is offline
Senior Member
 
Join Date: Oct 2005
Location: Germany
Posts: 307
Alex.Piech.FinGeR has much to be proud ofAlex.Piech.FinGeR has much to be proud ofAlex.Piech.FinGeR has much to be proud ofAlex.Piech.FinGeR has much to be proud ofAlex.Piech.FinGeR has much to be proud ofAlex.Piech.FinGeR has much to be proud ofAlex.Piech.FinGeR has much to be proud ofAlex.Piech.FinGeR has much to be proud of
yes BETA


Trading Hours is ALPARI Time !!!! (GTM+1)

Code:
#property copyright "Alex.Piech.FinGeR"
#property link	  "http://www.forex-tsd.com"
#define   MAGIC	  20051021


extern string PARAMETERS_TRADE = "PARAMETERS TRADE";
extern int	SLIPPAGE	   = 3; 
extern double Lots		   = 0.1;	
extern int	StopLoss	   = 10;	 
extern int	TakeProfit	 = 35;   
extern int	JPYpair		= 0;

extern bool   useProfitTrailing = False;   
extern int	TrailingStop   = 20;   
extern int	TrailingStep   = 3;	
  

extern string PARAMETERS_EXPERT = "PARAMETERS EXPERT";
extern bool   UseOneAccount = False;	
extern int	NumberAccount = 0815;   
extern string Name_Expert   = "BETA";
extern bool   UseSound	  = True;		 
extern string NameFileSound = "expert.wav"; 
extern color  clOpenBuy	 = LightBlue;	
extern color  clOpenSell	= LightCoral;  
extern color  clModifyBuy   = Aqua;		 
extern color  clModifySell  = Tomato;	   
extern color  clCloseBuy	= Blue;		 
extern color  clCloseSell   = Red;		  

int prevBar; 


void SetArrow(datetime t, double p, int k, color c) {
ObjectSet("Arrow", OBJPROP_TIME1 , t);
ObjectSet("Arrow", OBJPROP_PRICE1 , p);
ObjectSet("Arrow", OBJPROP_ARROWCODE, k);
ObjectSet("Arrow", OBJPROP_COLOR , c);
}

void deinit() 
{
Comment("");
}


void start() {


SetArrow(Time[0],Low[0]-5*Point,241,Gold); 
 
//bx=False;
//sx=False;
Comment("");


if (UseOneAccount && AccountNumber()!=NumberAccount) {
	Comment("-UseOnAccount- Number"+AccountNumber()+" FAILED!");
	return;
  } else Comment("");



CheckForOpen();
   

CheckForClose();
  
  
  if (useProfitTrailing)  TrailingPositions();
}





void CheckForOpen() {

double ldStop=0, ldTake=0;
double close1=iClose(NULL,1440,1);
double high1=iHigh(NULL,1440,1);
double low1=iLow(NULL,1440,1);

double close=iClose(NULL,1440,0);
double high=iHigh(NULL,1440,0);
double low=iLow(NULL,1440,0);

double Pr = high1 + 1*Point;
double Pr2 = low1 - 1*Point;


int tradesignal2 = 0;
int tradesignal2s = 0;

if (JPYpair == 0) 
double val2 = (Pr - (MathFloor(close1*100) /100))*10000;
else
val2 = (Pr - MathFloor(close1))*100;

if (val2 >= 15  &&  val2 <= 85) tradesignal2 = 1;


if (JPYpair == 0) 
double val2a = (Pr2 - (MathFloor(close1*100) /100))*10000;
else
val2a = (Pr2 - MathFloor(close1))*100;

if (val2a >= 15  &&  val2a <= 85) tradesignal2s = 1;



int T=0;
if(Hour()== 23 && Minute() == 30) T=1;


if (!ExistPosition() && prevBar!=Bars) {
	
   
	 if (T==1 && tradesignal2 == 1 && (high1 - low1) >= 100*Point && (high1 - close1 ) >= 25*Point ) {
	  
	  if (StopLoss!=0) ldStop=Pr-StopLoss*Point;
	  if (TakeProfit!=0) ldTake=Pr+TakeProfit*Point;
	  SetOrder(OP_BUYSTOP,Pr , ldStop, ldTake);
	  
	  prevBar=Bars;
   
   
	}
   
	if (T== 1 && tradesignal2s == 1 && (high1 - low1) >= 100*Point && (close1 - low1) >= 25*Point ) {
	 
	  if (StopLoss!=0) ldStop=Pr2+StopLoss*Point;
	  if (TakeProfit!=0) ldTake=Pr2-TakeProfit*Point;
	  SetOrder(OP_SELLSTOP, Pr2, ldStop, ldTake);
	  
	  prevBar=Bars;
   
	}
  }




}





//+------------------------------------------------------------------+
//| is MAGIC trade open ?										 | 
//+------------------------------------------------------------------+
bool ExistPosition() {
  bool Exist=False;
  for (int i=0; i<OrdersTotal(); i++) {
	if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
	  if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) Exist=True;
	}
  }
  return(Exist);
}




void SetOrder(int op, double pp, double ldStop, double ldTake) {
  color  clOpen;
  string lsComm=GetCommentForOrder();
  if (op==OP_BUYSTOP) clOpen=clOpenBuy; else clOpen=clOpenSell;
  OrderSend(Symbol(),op,Lots,pp,SLIPPAGE,ldStop,ldTake,lsComm,MAGIC,0,clOpen);
  if (UseSound) PlaySound(NameFileSound);
}





string GetCommentForOrder() {
  return(Name_Expert);
}





void TrailingPositions() {

  for (int i=0; i<OrdersTotal(); i++) {
	if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
	 
		if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC ) {
		  if (OrderType()==OP_BUY) {
			if ((Bid-OrderOpenPrice())>TrailingStop*Point) {
			 
			 if (OrderStopLoss()<Bid-(TrailingStop+TrailingStep-1)*Point) {
				 ModifyStopLoss(Bid-TrailingStop*Point, clModifyBuy);
			  }
			}
		  }
		  if (OrderType()==OP_SELL) {
			if (OrderOpenPrice()-Ask>TrailingStop*Point) {
			 if (OrderStopLoss()>Ask+(TrailingStop+TrailingStep-1)*Point || OrderStopLoss()==0) {
			 ModifyStopLoss(Ask+TrailingStop*Point, clModifySell);
			  }
			}
		  }
		}
	  }
	}
  }








void CheckForClose() {
  bool fs=False;  
  bool fs1=False;	 


int T2=0;
if(Hour()== 13 && Minute() >= 45) T2=1;

  
 if (T2==1){ 
 fs1 = True;
 fs =  True;
}
 
  for (int i=0; i<OrdersTotal(); i++) {
	if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
	  if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) {
		if (OrderType()==OP_BUYSTOP && fs) {
		   OrderDelete(OrderTicket());
		 // OrderClose(OrderTicket(), Lots, Bid, SLIPPAGE, Aqua);
		  return;
		}
		if (OrderType()==OP_SELLSTOP && fs1) {
		  OrderDelete(OrderTicket());
		 // OrderClose(OrderTicket(), Lots, Ask, SLIPPAGE, Violet);
		  return;
		}
	  }
	}
  }
}



void ModifyStopLoss(double ldStop, color clModify) {

  bool   fm;
  double ldOpen=OrderOpenPrice();
  double ldTake=OrderTakeProfit();

  fm=OrderModify(OrderTicket(), ldOpen, ldStop, ldTake, 0, clModify);
 
  if (fm && UseSound) PlaySound(NameFileSound);
}

Last edited by Alex.Piech.FinGeR; 11-17-2005 at 01:45 PM.
Reply With Quote