//+------------------------------------------------------------------+ //| FXGuy2000.mq4 | //| Copyright © 2005, FXGuy2000 | //| http://www.truth-about-forex.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, FXGuy2000" #property link "http://www.truth-about-forex.com" /*user settings*/ double emafast=5; double emaslow=40; double flagSendEmail=0; //1 for true, 0 for false double lots=1; double waitingtime=0; /*end of user settings*/ int cnt, ticket, total; double flag=0; // buy/sell flag double flag2=0; //flag to see if program has been run at least once double flagtimestored=0; //flag for time already set and stored double flagpending=0; //pending flag to see if it passes time double BotTradedThisSession=0; double var1=0; double var2=0; double storedtime=0; string mytext, mailsubject; int init(){return(0);} int deinit(){return(0);} int start() { var1=iMA(NULL,0,emafast,0,MODE_EMA,PRICE_CLOSE,1); var2=iMA(NULL,0,emaslow,0,MODE_EMA,PRICE_CLOSE,1); total=OrdersTotal(); // ------------ this section checks to see if there is a bad trade going on when the script is started! ---- if(total==1 && flag2==0){ for(cnt=0;cnt<1;cnt++){ if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)==true) { if(OrderSymbol()==Symbol() && OrderType()==OP_SELL){ if(var1>var2){ OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //flag2=1; }} if(OrderSymbol()==Symbol() && OrderType()==OP_BUY){ if(var1var2 && flag==2) { mytext=StringConcatenate(Period()," TF ",Symbol()," Standby for LONG @ ", Ask); Alert(mytext); flagpending=1; storedtime=CurTime(); flagtimestored=1; //time is stored } if(var1var2) {flag=1;} //set initial buy flag if(var1var2)){ //reset time stored flag b/c we got an opposite signal flagtimestored=0; flagpending=0; if(var1>var2) {flag=1;} //set trigger flag if(var1 waitingtime) //this makes sure that at least WAITING TIME has elapsed since the pending flag was set { //---------- LONG AREA ----------------------// if(flagpending==1){ if(total>1){Alert("Error ... There are more than 1 trade open now!");} if(total>0 && total<2){ //close and open new order for(cnt=0;cnt<1;cnt++){ if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)==true) { if(OrderSymbol()==Symbol() && OrderType()==OP_SELL){ OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close bad SHORT position Alert(GetLastError()); } if(OrderSymbol()==Symbol() && OrderType()==OP_BUY){ Alert("Warning: LONG trade already present"); flag=1; } } total=OrdersTotal(); } if(total==0 && GetLastError()==0) //it will buy another LONG here ... { ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,3,0,0,"AutoLong",8888,0,Green); if(ticket<1) { Print("OrderSend failed with error #",GetLastError()); return(0); } else { flag=1; flagtimestored=0; flagpending=0; if(flagSendEmail==1){ mailsubject=StringConcatenate("MT4: ",Symbol()," LONG @ ", Ask); SendMail(mailsubject,"");} BotTradedThisSession=1; } } } else{ mytext=StringConcatenate(Period(), " Time passed! No trades at present. LONG @ ", Ask); Alert(mytext); flag=1; flagtimestored=0; ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,3,0,0,"AutoLong",8888,0,Green); if(ticket<1) { Print("OrderSend failed with error #",GetLastError()); return(0); }else{ flag=1; flagtimestored=0; flagpending=0; if(flagSendEmail==1){ mailsubject=StringConcatenate("MT4: ",Symbol()," LONG @ ", Ask); SendMail(mailsubject,"");} BotTradedThisSession=1; }}} //-------- END LONG & START SHORT ------------------// if(flagpending==2){ if(total>1){Alert("Error ... There are more than 1 trade open now!");} if(total>0 && total<2){ for(cnt=0;cnt<1;cnt++){ if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)==true) { if(OrderSymbol()==Symbol() && OrderType()==OP_BUY){ OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close bad LONG position Alert(GetLastError()); } if(OrderSymbol()==Symbol() && OrderType()==OP_SELL){ Alert("Warning: SHORT trade already present"); flag=2; } } total=OrdersTotal(); } if(total==0 && GetLastError()==0) { ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,3,0,0,"AutoShort",8888,0,Green); if(ticket<1) { Print("OrderSend failed with error #",GetLastError()); return(0); } else { flag=2; flagtimestored=0; flagpending=0; if(flagSendEmail==1){ mailsubject=StringConcatenate("MT4: ",Symbol()," SHORT @ ", Bid); SendMail(mailsubject,"");} BotTradedThisSession=1; } } } else{ mytext=StringConcatenate(Period()," Time passed! No trades at present. SHORT @ ", Bid); Alert(mytext); flag=2; flagtimestored=0; ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,3,0,0,"AutoShort",8888,0,Green); if(ticket<1) { Print("OrderSend failed with error #",GetLastError()); return(0); }else{ flag=2; flagtimestored=0; flagpending=0; if(flagSendEmail==1){ mailsubject=StringConcatenate("MT4: ",Symbol()," SHORT @ ", Bid); SendMail(mailsubject,"");} BotTradedThisSession=1; }}} //---------- END SHORT -------------------- // }} return(0); }