i have set my EA as to when to open buy and sell positions and everything is ok, but the problem it does open another trade before the other is closed, i need it to open sell position once the conditions are met irrespective of whether the open buy has not closed and also the opposite
Show the code and maybe somebody can assist.
You should also explain your problem more clearly as you seem to be saying that you want the EA to do what it is already doing.
Yes you have to use certain statements to include and exclude possibilities.
Maybe you can start by posting some code.
Its a moving average EA.
1. 10 MA cross above 200 MA buy position is open
2. set to take 5 points in profit
3. how ever it reverses and 10 MA cross below 200 MA. its suppose to open a sell position as programmed but because the open position is still not closed it doesnt
i hope you understand.
Show the code and maybe somebody can assist.
Maybe you can start by posting some code.
?
int start() { double MyPoint=Point; if(Digits==3 || Digits==5) MyPoint=Point*10; double TheStopLoss=0; double TheTakeProfit=0; if( TotalOrdersCount()==0 ) { int result=0; if((iMA(NULL,0,30,0,MODE_LWMA,PRICE_OPEN,0)>iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,0))&&(iRSI(NULL,0,14,PRICE_CLOSE,0)>70)) // Here is your open buy rule { result=OrderSend(Symbol(),OP_BUY,AdvancedMM(),Ask,Slippage,0,0,"EA Generator www.ForexEAdvisor.com",MagicNumber,0,Blue); if(result>0) { TheStopLoss=0; TheTakeProfit=0; if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint; if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint; OrderSelect(result,SELECT_BY_TICKET); OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green); } return(0); } if((iMA(NULL,0,30,0,MODE_LWMA,PRICE_CLOSE,0)<iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,0))&&(iRSI(NULL,0,14,PRICE_CLOSE,0)<30)) // Here is your open Sell rule { result=OrderSend(Symbol(),OP_SELL,AdvancedMM(),Bid,Slippage,0,0,"EA Generator www.ForexEAdvisor.com",MagicNumber,0,Red); if(result>0) { TheStopLoss=0; TheTakeProfit=0; if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint; if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint; OrderSelect(result,SELECT_BY_TICKET); OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green); } return(0); } } for(int cnt=0;cnt<OrdersTotal();cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber ) { if(OrderType()==OP_BUY) { if(TrailingStop>0) { if(Bid-OrderOpenPrice()>MyPoint*TrailingStop) { if(OrderStopLoss()<Bid-MyPoint*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green); return(0); } } } } else { if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop)) { if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red); return(0); } } } } } } return(0); } int TotalOrdersCount() { int result=0; for(int i=0;i<OrdersTotal();i++) { OrderSelect(i,SELECT_BY_POS ,MODE_TRADES); if (OrderMagicNumber()==MagicNumber) result++; } return (result); } double AdvancedMM() { int i; double AdvancedMMLots = 0; bool profit1=false; int SystemHistoryOrders=0; for( i=0;i<OrdersHistoryTotal();i++) { OrderSelect(i,SELECT_BY_POS ,MODE_HISTORY); if (OrderMagicNumber()==MagicNumber) SystemHistoryOrders++; } bool profit2=false; int LO=0; if(SystemHistoryOrders<2) return(Lots); for( i=OrdersHistoryTotal()-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS ,MODE_HISTORY)) if (OrderMagicNumber()==MagicNumber) { if(OrderProfit()>=0 && profit1) return(Lots); if( LO==0) { if(OrderProfit()>=0) profit1=true; if(OrderProfit()<0) return(OrderLots()); LO=1; } if(OrderProfit()>=0 && profit2) return(AdvancedMMLots); if(OrderProfit()>=0) profit2=true; if(OrderProfit()<0 ) { profit1=false; profit2=false; AdvancedMMLots+=OrderLots(); } } } return(AdvancedMMLots); }
Forum on trading, automated trading systems and testing trading strategies
When you post code please use the CODE button (Alt-S)!
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
i have set my EA as to when to open buy and sell positions and everything is ok, but the problem it does open another trade before the other is closed, i need it to open sell position once the conditions are met irrespective of whether the open buy has not closed and also the opposite
can any one help?