Please help me correct the code of the EA!

 
I am learning to code using template from mql4trader, but I am stock. The experiment ea does not modify immediately it opens order until next candle opens. Please, anybody, help me correct the ea to modify orders immediately after it is opened. thanks
//+------------------------------------------------------------------+
//|                                                                  |
//|                               Copyright 2017, www.mql4trader.com |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, www.mql4trader.com"

//--- input parameters
extern string    Autotraders_by ="www.mql4trader.com";

///CUSTOMIZABLE OPTIONS GO HERE///
extern int period = 3; // PERIOD  
extern int applied_price = 0;  // APPLIED PRICE (0=CLOSE,1=OPEN,2=HIGH,3=LOW,4=MEDIAN,5=TYPICAL,6=WEIGHTED          
extern int barshift  = 1;           // SHIFT (1=last bar, 2= 2 bars ago, 3= 3 bars ago ect
////

///Set Take Profit and Stoploss///(Make sure that you check the journal when strategy testing. 
//If you are getting a order modify error your stops may be to low. 
//Check the specifications of the symbol you are trading and adjust for the amount of digits used.
extern double   TakeProfit=120;
extern double   StopLoss=150;
extern double   Lots=1; ///Investment 

//Timesettings
extern string   TimeSettings="Set the hours the EA should trade";
extern int      StartHour=8;//24 hour clock. Set your start and end of day times or leave as is to trade every hour
extern int      EndHour=19;

//Slippage
extern int      Slip=10;///adjust slippage here

///Leave BarsCount as is/// This makes it so you can only place one trade per bar. 
//Otherwise it sometimems will fire off many of the same trade per bar as each tick occurs...
extern int     BarsCount=0;///leave this as is


//Lets Begin//If there are less than zero orders, we can trade//

int start(){


if (Bars>BarsCount) 


{
//////////////////
string Symb=Symbol();

////This advisor works on all charts because of the "MarketInfo" code below...

int digits=MarketInfo(Symbol(),MODE_DIGITS);
int StopMultd=10;
int Slippage=Slip*StopMultd;

///Magic Number is your orders unique id number. This way you do not open multiple orders///

int MagicNumber1=032017,MagicNumber2=042017,i,closesell=0,closebuy=0;


///Takeprofit and Stoploss settings

double  TP=NormalizeDouble(TakeProfit*StopMultd,Digits);
double  SL=NormalizeDouble(StopLoss*StopMultd,Digits);

double slb=NormalizeDouble(Ask-SL*Point,Digits);
double sls=NormalizeDouble(Bid+SL*Point,Digits);


double tpb=NormalizeDouble(Ask+TP*Point,Digits);
double tps=NormalizeDouble(Bid-TP*Point,Digits);



//-------------------------------------------------------------------+
//Check open orders
//-------------------------------------------------------------------+



if(OrdersTotal()>0){
  for(i=1; i<=OrdersTotal(); i++)          // Checking to make sure there are no open orders. Keep this set to zero unless you want the advisor to open more than one buy at a time or more than one sell at a time.
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // If the next is available
        {
          if(OrderMagicNumber()==MagicNumber1) {int halt1=1;}///if this magicnumber has an order open... halt!
          if(OrderMagicNumber()==MagicNumber2) {int halt2=1;}///if this magicnumber has an order open... halt!
         

        
   
          
         
          
        

        }
     }
}
////Change input parameters "StartHour" EndHour" at top of page, to adjust, if you only want to trade at certain times...

if((Hour()>=StartHour)&&(Hour()<EndHour))
{
int TradeTimeOk=1;
}
else
{ TradeTimeOk=0; }


////



//-----------------------------------------------------------------
// Indicators Section/// This is where you place indicators needed for expert advisor to work...
//-----------------------------------------------------------------

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                                              //
// IF YOU DO NOT UNDERSTAND THIS INDICATOR, SIMPLY RUN IT THROUGH THE STRATEGY TESTER AS IS AND "OPEN CHART"... //
// NOW YOU CAN GET A BETTER IDEA OF HOW IT WORKS...                                                             //
// IT IS ALSO RECOMMENDED TO SEARCH ONLINE TO LEARN MORE ON HOW TO USE THIS INDICATOR                           //
//                                                                                                              //
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////


////Always type "double" then the "name" you want to give, then "=" , then your indicator code...
///NOTE: The strategy tester can only give results at the end of each bar on a chart. 
///This is why we use "1" as our shift instead of "0". 
///If we use 1 then the advisor makes its calculation immediatly after the last bar has closed.
///You can still use "0" , but the strategy tester will not pick up on it...


double Ma=iMA (  NULL,0,5,1,MODE_SMA,0,1);

///NOTE: TO MAKE LIFE EASIER, USE THE INPUT PARAMETERS FROM TOP OF PAGE. 
///THIS ALLOWS YOU TO ADJUST SETTINGS FROM THE STRATEGY TESTER
///HERE IS THE SAME INDICATOR THAT IS NOW CUSTOMIZABLE THROUGH THE STRATEGY TESTER:



//leave the first two "NULL" and "0". Null means it will trade any chart its on and 0 means it will use the chart timeframe that it is attached to.


 
 //-------------------------------------------------------------------
// Opening criteria for buy and sell orders
//-----------------------------------------------------------------------------------------------------

Comment("TEMPLATE INDICATOR AUTOTRADER");
 
//OPEN SELL// 

//USE "&&" TO ADD MORE CONDITIONS IN BRACKETS...

if(((Close[1]<Ma)||(Close[1]<Open[2]))&&(halt1!=1)&&(TradeTimeOk==1)){
int opensell=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,0,0,"TEMPLATE",MagicNumber1,0,Red);
 }




//OPEN BUY//

//USE "&&" TO ADD MORE CONDITIONS IN BRACKETS...
 
 if(((Close[1]>Ma)||(Close[1]>Open[2]))&&(halt2!=1)&&(TradeTimeOk==1)){
int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,"TEMPLATE",MagicNumber2,0,Lime);

 }
 
 
 //-------------------------------------------------------------------------------------------------
// Closing criteria for buy and sell orders
//-------------------------------------------------------------------------------------------------

 /*


if(openbuy>=0||opensell>=0)


{// start

if(OrdersTotal()>=0){
  for(i=1; i<=OrdersTotal(); i++){          // Cycle searching in orders
  
      if (OrderSelect(i-1,SELECT_BY_POS)==true){ // If the next is available...

//SELL CLOSE//
if((OrderMagicNumber()==MagicNumber1)&&(RSI1<30)){
int sellclose=OrderClose(OrderTicket(),Lots,Ask,Slip,Red);
}

//BUY CLOSE//
if((OrderMagicNumber()==MagicNumber2)&&(RSI1>70)){
int buyclose=OrderClose(OrderTicket(),Lots,Bid,Slip,Red);

}
*/

////take profit and stoploss code///Do not change this code. 
//Just change takeprofit and stoploss settings in "Input Parameters"
//If you do not need takeprofit or stoploss you can delete these 4 lines of code...
   
 if((OrderMagicNumber()==MagicNumber2)&&(OrderTakeProfit()==0)&&(OrderSymbol()==Symbol())){ int modify1=OrderModify(OrderTicket(),0,OrderStopLoss(),tpb,0,CLR_NONE); }
 if((OrderMagicNumber()==MagicNumber1)&&(OrderTakeProfit()==0)&&(OrderSymbol()==Symbol())){ int modify2=OrderModify(OrderTicket(),0,OrderStopLoss(),tps,0,CLR_NONE); }
 //if((OrderMagicNumber()==MagicNumber2)&&(OrderStopLoss()==0)&&(OrderSymbol()==Symbol())){ int modify3=OrderModify(OrderTicket(),0,slb,OrderTakeProfit(),0,CLR_NONE); }
 //if((OrderMagicNumber()==MagicNumber1)&&(OrderStopLoss()==0)&&(OrderSymbol()==Symbol())){ int modify4=OrderModify(OrderTicket(),0,sls,OrderTakeProfit(),0,CLR_NONE); }
    
/*        }
     }

}
}*/
}// stop /// Do Not Alter The Following Code /// 



 //----
int Error=GetLastError();
  //if(Error==130){Alert("Wrong stops. Retrying."); RefreshRates();}
  if(Error==133){Alert("Trading prohibited.");}
  if(Error==2){Alert("Common error.");}
  if(Error==146){Alert("Trading subsystem is busy. Retrying."); Sleep(500); RefreshRates();}

//----

//-------------------------------------------------------------------
BarsCount=Bars;
return(0);

}
 

//+------------------------------------------------------------------+
 
sol4live: Please, anybody, help me correct the ea to modify orders immediately after it is opened.
int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,"TEMPLATE",MagicNumber2,0,Lime);
 }
   
 if((OrderMagicNumber()==MagicNumber2)&&(OrderTakeProfit()==0)&&(OrderSymbol()==Symbol())){ int modify1=OrderModify(OrderTicket(),0,OrderStopLoss(),tpb,0,CLR_NONE); }
 if((OrderMagicNumber()==MagicNumber1)&&(OrderTakeProfit()==0)&&(OrderSymbol()==Symbol())){ int modify2=OrderModify(OrderTicket(),0,OrderStopLoss(),tps,0,CLR_NONE); }
  1. You can not use any Trade Functions unless you select an order first.

  2. There is no need to open an order and then set the stops. Simplify your code - do it in one step. TP/SL on OrderSend has been fine for years.
              Build 500 № 9 2013.05.09
              Need help me mql4 guru add take profit to this EA - Take Profit - MQL4 programming forum 2017.09.27

  3. Why did you post your MT4 question in the Root / MT5 General section instead of the MQL4 section, (bottom of the Root page?)
              General rules and best pratices of the Forum. - General - MQL5 programming forum
    Next time post in the correct place. The moderators will likely move this thread there soon.

  4. Are your books one column but two feet wide? No because that is unreadable. They are 6 inches, sometimes two columns, so you can read it easily. So should be your code. We're not going to go scrolling (or moving my eyes) back and forth trying to read it.
 
William Roeder:
  1. You can not use any Trade Functions unless you select an order first.

  2. There is no need to open an order and then set the stops. Simplify your code - do it in one step. TP/SL on OrderSend has been fine for years.
              Build 500 № 9 2013.05.09
              Need help me mql4 guru add take profit to this EA - Take Profit - MQL4 programming forum 2017.09.27

  3. Why did you post your MT4 question in the Root / MT5 General section instead of the MQL4 section, (bottom of the Root page?)
              General rules and best pratices of the Forum. - General - MQL5 programming forum
    Next time post in the correct place. The moderators will likely move this thread there soon.

  4. Are your books one column but two feet wide? No because that is unreadable. They are 6 inches, sometimes two columns, so you can read it easily. So should be your code. We're not going to go scrolling (or moving my eyes) back and forth trying to read it.
Thank you.
Reason: