razib Posted October 16, 2011 Report Posted October 16, 2011 Dear Friends, Anybody please help adding Maximum open order option to this attached EA. Currently It opens more than 10 trade & after touching the TP level it opens more than 20 trade. Adding MaxTrade option will be a great help to control the maximum open orders. ----------------------------------------------------------------------------------- extern double Lots = 0.1; extern int StopLoss = 50; extern int TakeProfit = 100; extern int TrailingStop = 20; extern int mafastperiod=5; extern int mafastshift=0; extern int mafastmethod =MODE_EMA; extern int mafastprice=PRICE_CLOSE; extern int maslowperiod=8; extern int maslowshift=0; extern int maslowmethod =MODE_EMA; extern int maslowprice=PRICE_OPEN; double fast1, fast2, slow1, slow2; //--------------------------------------------------------------------- int init() { return(0); } //--------------------------------------------------------------------- int deinit() { return(0); } //--------------------------------------------------------------------- int start() { // Calculate Indicators ------------------------------------------------- fast1=iMA(Symbol(),0,mafastperiod,mafastshift,mafastmethod,mafastprice,1); fast2=iMA(Symbol(),0,mafastperiod,mafastshift,mafastmethod,mafastprice,2); slow1=iMA(Symbol(),0,maslowperiod,maslowshift,maslowmethod,maslowprice,1); slow2=iMA(Symbol(),0,maslowperiod,maslowshift,maslowmethod,maslowprice,2); // Open Trades ---------------------------------------------------------- //LONG if (fast1>slow1&&fast2<slow2) { OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,NULL,0,0,Blue); } //Short if(fast1<slow1&&fast2>slow2) { OrderSend(Symbol(),OP_SELL,Lots ,Bid,0,Bid+StopLoss*Point,Bid-TakeProfit*Point,NULL,0,0,Red); } // Close Trades --------------------------------------------------------- int i; for (i = OrdersTotal()-1; i >=0 ;i-- ) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if ( (OrderSymbol() == Symbol()) && (OrderType() == OP_BUY) && (fast1 < slow1) && (fast2 > slow2) ) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,White); } if ( (OrderSymbol() == Symbol()) && (OrderType() == OP_SELL) && (fast1 > slow1) && (fast2 < slow2) ) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,White); } } // Trailing Stop --------------------------------------------------------- for (i = OrdersTotal()-1; i>=10 ;i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if (OrderType() == OP_BUY) { if ( (Bid - OrderOpenPrice()) > (TrailingStop*Point) ) { if ( OrderStopLoss() < (Bid - TrailingStop*Point) ) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid - TrailingStop*Point, OrderTakeProfit(), Red); } } } if (OrderType() == OP_SELL) { if ( (OrderOpenPrice() - Ask) > (TrailingStop*Point) ) { if ( (OrderStopLoss() > (Ask + TrailingStop*Point)) || (OrderStopLoss() == 0) ) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask + TrailingStop*Point, OrderTakeProfit(), Red); } } } } return(0); } //+------------------------------------------------------------------+
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now