<p></p> PLZ ANY ONE CORRECT THIS EA ,S PENDING ORDER CLOSE AS IT DID NOT CLOSE PENDING ORDER
Attached File(s)
EMA .mq4
7 KB
|
217 downloads
Buy/Sell Pending Order on Close 3 replies
MT4 Order Pending Order/Order Modify Issue 1 reply
Close Pending Orders When last order was profitable 35 replies
Close pending order in X time 4 replies
Using a pending order to partialy close out an order. 2 replies
DislikedTry this code. It will delete the Open Trades and the Pending Orders. {file} GREEN pips to you Good Sir.Ignored
#property strict extern int MagicNumber1=2016; extern double LotSize1=1; extern double LotsL=1; extern double LotsS=1; extern bool UseMartingle=true; extern double MultiplyBy=2; extern int StopLoss=0; extern int TakeProfit=0; extern bool AutoClose=true; extern bool UseTrailingStop=true; extern int TrailingStop=10; extern double X=50; extern bool EmailAlert=true; extern string Mode1="=====FIRST MODE====="; extern bool UseFirstMode=true; extern int FirstMA1=300; extern ENUM_MA_METHOD FirstMAmode1=MODE_SMA; extern int SecondMA1=700; extern ENUM_MA_METHOD SecondMAmode1=MODE_SMA; extern int StopXpip=20; double point; int digits,Q; double SL,TP,sell,buy,close,move; int ThisBarTrade=0; bool NewBar; double Lots; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- if(Digits==5||Digits==3)Q=10; else Q=1; if(Digits<4) { point=0.01; digits=2; } else { point=0.0001; digits=4; } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- if (Bars != ThisBarTrade ) { NewBar=true; ThisBarTrade = Bars; NewBar=true; } double FirstEMA2=iMA(Symbol(),0,FirstMA1,0,FirstMAmode1,PRICE_CLOSE,2); double FirstEMA1=iMA(Symbol(),0,FirstMA1,0,FirstMAmode1,PRICE_CLOSE,1); double SecondEMA2=iMA(Symbol(),0,SecondMA1,0,SecondMAmode1,PRICE_CLOSE,2); double SecondEMA1=iMA(Symbol(),0,SecondMA1,0,SecondMAmode1,PRICE_CLOSE,1); if(NewBar){ //=========FIRST MOOOOOOOOOODE if(FirstEMA1>SecondEMA1&&FirstEMA2<=SecondEMA2&&UseFirstMode){ if(AutoClose)CloseOrders(MagicNumber1,OP_SELL); if(AutoClose)CloseOrders(MagicNumber1,OP_SELLSTOP); if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;} if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*point;} if(UseMartingle&&HistoryProfit(MagicNumber1)<0){Lots=NextLot(MagicNumber1);}else{Lots=LotSize1;} buy=OrderSend(Symbol(),OP_BUY, Lots, Ask, 3*Q,0 ,TP,"Buy MODE 1",MagicNumber1,0,clrBlue); buy=OrderSend(Symbol(),OP_BUYSTOP,LotsL/2,Ask+StopXpip*1*point,3*Q,Ask,TP,"Buy Stop MODE 1",MagicNumber1,0,clrBlue); buy=OrderSend(Symbol(),OP_BUYSTOP,LotsL/2,Ask+StopXpip*2*point,3*Q,Ask+StopXpip*1*point,TP,"Buy Stop MODE 1",MagicNumber1,0,clrBlue); buy=OrderSend(Symbol(),OP_BUYSTOP,LotsL/2,Ask+StopXpip*3*point,3*Q,Ask+StopXpip*2*point,TP,"Buy Stop MODE 1",MagicNumber1,0,clrBlue); if(EmailAlert)SendMail(Symbol(),"Order Opened Buy MODE 1"); } if(FirstEMA1<SecondEMA1&&FirstEMA2>=SecondEMA2&&UseFirstMode){ if(AutoClose)CloseOrders(MagicNumber1,OP_BUY); if(AutoClose)CloseOrders(MagicNumber1,OP_BUYSTOP); if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;} if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;} if(UseMartingle&&HistoryProfit(MagicNumber1)<0){Lots=NextLot(MagicNumber1);}else{Lots=LotSize1;} sell=OrderSend(Symbol(),OP_SELL, Lots, Bid ,3*Q,0 ,TP,"Sell MODE 1",MagicNumber1,0,clrRed); sell=OrderSend(Symbol(),OP_SELLSTOP,LotsS/2,Bid-StopXpip*1*point,3*Q,Bid,TP,"Sell Stop MODE 1",MagicNumber1,0,clrRed); sell=OrderSend(Symbol(),OP_SELLSTOP,LotsS/2,Bid-StopXpip*2*point,3*Q,Bid-StopXpip*1*point,TP,"Sell Stop MODE 1",MagicNumber1,0,clrRed); if(EmailAlert)SendMail(Symbol(),"Order Opened Sell MODE 1"); } NewBar=false; } if(UseTrailingStop){ sub_trailingsl(MagicNumber1); } } //+------------------------------------------------------------------+ int orderscnt(int magic){ int cnt=0; for(int i =0;i<OrdersTotal();i++){ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()==Symbol() && magic==OrderMagicNumber()){ cnt++; } } return(cnt); } //+++++++++++++++++++// int CloseOrders(int magic,int type) { int cnt=OrdersTotal(); for(int i=cnt-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true &&OrderSymbol()==Symbol() &&OrderMagicNumber() == magic&&OrderType()==type) { if(OrderType == OP_BUY) close=OrderClose(OrderTicket(),OrderLots(),Bid,3*Q,clrWhite); if(OrderType == OP_SELL) close=OrderClose(OrderTicket(),OrderLots(),Ask,3*Q,clrWhite); if(OrderType == OP_BUYSTOP) close=OrderDelete(OrderTicket(),clrWhite); if(OrderType == OP_SELLSTOP) close=OrderDelete(OrderTicket(),clrWhite); } } return(0); } //********* void ModifyStopLoss(double ldStop) { bool fm; double ldOpen=OrderOpenPrice(); double ldTake=OrderTakeProfit(); fm=OrderModify(OrderTicket(), ldOpen, ldStop, ldTake, 0, Pink); } void sub_trailingsl(int magic) { for (int i=0; i<OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()&&OrderMagicNumber()==magic ) { if (OrderType()==OP_SELL) { if (OrderOpenPrice()-Ask>=TrailingStop*point&&(OrderStopLoss()==0||OrderStopLoss()>=OrderOpenPrice()) &&OrderStopLoss()!=NormalizeDouble(Ask+TrailingStop*point,digits)) { ModifyStopLoss(OrderOpenPrice()-X*point); } if (OrderStopLoss()!=0&&OrderStopLoss()!=NormalizeDouble(Ask+TrailingStop*point,digits) &&OrderStopLoss()<OrderOpenPrice()&&OrderStopLoss()-Ask>TrailingStop*point) { ModifyStopLoss(OrderOpenPrice()-X*point); } } if (OrderType()==OP_BUY) { if (Bid-OrderOpenPrice()>=TrailingStop*point&&(OrderStopLoss()==0||OrderStopLoss()<=OrderOpenPrice()) &&OrderStopLoss()!=NormalizeDouble(Bid-TrailingStop*point,digits)) { ModifyStopLoss(OrderOpenPrice()+X*point); } if (OrderStopLoss()!=0&&OrderStopLoss()!=NormalizeDouble(Bid-TrailingStop*point,digits) &&OrderStopLoss()>OrderOpenPrice()&&Bid-OrderStopLoss()>(TrailingStop*point)) { ModifyStopLoss (OrderOpenPrice()+X*point); } } } } } } //========== double HistoryProfit(int magic){ double hp=0; for(int i=0;i<=OrdersHistoryTotal();i++){ if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) if(OrderSymbol()==Symbol()&&OrderMagicNumber()==magic){ hp=OrderProfit(); } } return(hp); } double NextLot(int magic) { double lot=0; for(int i=0;i<=OrdersHistoryTotal();i++){ if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) if(OrderSymbol()==Symbol()&&OrderMagicNumber()==magic){ lot=OrderLots()*MultiplyBy; } } return(lot); }