//+------------------------------------------------------------------+ //| Monkey.mq4 | //| Joan | //| | //+------------------------------------------------------------------+ #property copyright "Joancb" #property link "" extern double Lots=0.01; extern string comment=""; extern int Magic=3; extern double TakeProfit=4; extern bool Reverse=true; int TicketB,TicketS,OpenTradesForMagicNumber; double UpTrendLow1,UpTrendLow2,UpTrendLow3,DnTrenHigh1,DnTredHigh2,DnTrenHigh3; datetime tmp; double Pivot; double haOpenBuy, haHighBuy, haLowBuy, haCloseBuy; double haOpenSell, haHighSell, haLowSell, haCloseSell; double ExtMapBufferSell[]; double ExtMapBufferBuy[]; int pos,err,t,o,XBars; double BuySell; double ExtMapBuffer1Sell[]; double ExtMapBuffer2Sell[]; double ExtMapBuffer3Sell[]; double ExtMapBuffer4Sell[]; double ExtMapBuffer1Buy[]; double ExtMapBuffer2Buy[]; double ExtMapBuffer3Buy[]; double ExtMapBuffer4Buy[]; bool WhiteLowSell; bool RedHighSell; bool WhiteLowBuy; bool RedHighBuy; double UpperBand,LowerBand; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() {//Print(OpenTradesForMN(Magic)); //if (tmp!= Time[0]) { //tmp = Time[0]; { Sleep(1000); //iCustom(Symbol(),0,"Heiken_Ashi_SmoothedI",0,0); GlobalVariableGet(Symbol(),BuySell); //Pivot=iCustom(Symbol(),0,"AEJ 10.6 DP ONLY",0,0); //Print(Pivot); //UpperBand=iEnvelopes(Symbol(),0,55,1,0,1,0.18,1,0); //LowerBand=iEnvelopes(Symbol(),0,55,1,0,1,0.18,2,0); //if (tmp!= Time[0])Print(UpperBand,Symbol()); // tmp = Time[0]; { //if(Ask>iMA(NULL,0,240,0,3,1,0) && Ask>Pivot) if(Reverse==1 && OpenTradesForMN(Magic)!=0) { if( OpenTypeTradesForMN(Magic)==1 && BuySell==2) { CloseMagic(Magic); //if(OpenTradesForMN(Magic)==0) OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*10*Point+Ask-Bid,comment,Magic,0,Blue); GlobalVariableDel(Symbol()); } if( OpenTypeTradesForMN(Magic)==0 && BuySell==3) { CloseMagic(Magic); //if(OpenTradesForMN(Magic)==0) OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-(TakeProfit*10*Point+Ask-Bid),comment,Magic,0,Red); GlobalVariableDel(Symbol()); } } if (OpenTradesForMN(Magic)==0){ { //Print(" BuyAllowed ",BuyAllowed); if(BuySell==2) { //if(OpenTradesForMN(Magic)==0) OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*10*Point+Ask-Bid,comment,Magic,0,Blue); GlobalVariableDel(Symbol()); } } //if(Bid0) { for(int i= OrdersTotal();i>0;i--) { OrderSelect(i,SELECT_BY_POS); if(OrderMagicNumber()==Magic && OrderType()==0 && OrderStopLoss()UpperBand) //&& OrderStopLoss()>OrderOpenPrice()) { OrderModify(OrderTicket(),Bid,UpperBand,0,0,0); } } } if(OpenTradesForMN(Magic)>=1) { //Print("1 ",OpenTradesForMN(Magic)); if (OpenTypeTradesForMN(Magic)==1) { // Print("2 ",OpenTypeTradesForMN(Magic)); if(BuySell==0) { //Print("Close Sell"); CloseMagic(Magic); } } } if(OpenTradesForMN(Magic)>=1) { //Print("11 ",OpenTradesForMN(Magic)); if(OpenTypeTradesForMN(Magic)==0) { //Print("22 ",OpenTypeTradesForMN(Magic)); if(BuySell==1) { //Print("Close Buy"); CloseMagic(Magic); } } } */ } } return(0); } //+------------------------------------------------------------------+ int OpenTradesForMN(int iMN) { int icnt, itotal, retval; retval=0; itotal=OrdersTotal(); for(icnt=0;icnt=0;m--) { //Print("m ",m); OrderSelect(m,SELECT_BY_POS); if(OrderMagicNumber()==Magic) { //Print("OrderMagicNumber ",OrderMagicNumber()); DigitS= MarketInfo(OrderSymbol(), MODE_DIGITS); BID= NormalizeDouble(MarketInfo(OrderSymbol(), MODE_BID),DigitS); ASK = NormalizeDouble(MarketInfo(OrderSymbol(), MODE_ASK),DigitS); if(OrderType()==OP_BUY) { //Print("OrderType ",OrderType(),"OrderTicket ",OrderTicket()); ClosedB=OrderClose(OrderTicket(), OrderLots(), BID, 5,Blue); err=GetLastError(); if (ClosedB==false) { //Print(Magic," err Closing Buy ",err); while (ClosedB==false) { Sleep(3000); ClosedB=OrderClose(OrderTicket(), OrderLots(), BID, 5,Red); if (ClosedB==true)break; if (t==9) { err=GetLastError(); Alert(Magic," err Closing Buy after 10 attempts ",err); } t++; } } } if(OrderType()==OP_SELL) { ClosedS=OrderClose(OrderTicket(), OrderLots(), ASK, 5); err=GetLastError(); if (ClosedS==false) { //Print(Magic," err Closing Sell ",err); while(ClosedS==false) { Sleep(3000); ClosedS=OrderClose(OrderTicket(), OrderLots(), ASK, 5); if (ClosedS==true)break; if (t==9) { err=GetLastError(); Alert(Magic," err Closing Sell after 10 attempts ",err); } t++; } } } } } OrdersNumTotal=OpenTradesForMN(Magic); } } if (OrdersNumTotal==0) { ClosedB=true; ClosedS=true; return (1); } return(0); }