I am new here i have EA robo and i want little changes any one help me

 

i don't know programming. I am giving i'e EA open first lot 0.01 2nd lot 0.02 third 0.04 4th 0.08 every double from last, i need every thing is fine only all lots open same size means if i set 0.01 lot second lot 0.01 third 0.01 4th 0.01 i am copying here if any expert please help me and modify i will copy from here because i am totaly zero in prog languages. following is my prog free downloded

//+------------------------------------------------------------------+

//|                                    bless_FiFtHeLeMeNt_noTG_1.0.1 |

//|                                   Copyright © 2007, FiFtHeLeMeNt |

//|                                         fifthelement80@gmail.com |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2007, FiFtHeLeMeNt."

#property link      "http://www.irxfx.com"


extern int MinGS=20;

extern int TP=27;

extern double lot=0.01;

extern int MaxTrades=7;

extern bool ECNMode = true; 


int magic;

double lot2;

datetime tob,tos; //Time Out Buy & Sell


double pt,mt;


//+------------------------------------------------------------------+

//| expert deinitialization function                                 |

//+------------------------------------------------------------------+

int deinit()

  {

//----



   

//----

   return(0);

  }

  


  

  


int init() {



   if(Digits==3 || Digits==5){

      pt=Point*10;

      mt=10;

   }else{

      pt=Point;

      mt=1;

   }

  

   if (Symbol() == "AUDCADm" || Symbol() == "AUDCAD") { magic = 211001; }

   if (Symbol() == "AUDJPYm" || Symbol() == "AUDJPY") { magic = 211002; }

   if (Symbol() == "AUDNZDm" || Symbol() == "AUDNZD") { magic = 211003; }

   if (Symbol() == "AUDUSDm" || Symbol() == "AUDUSD") { magic = 211004; }

   if (Symbol() == "CHFJPYm" || Symbol() == "CHFJPY") { magic = 211005; }

   if (Symbol() == "EURAUDm" || Symbol() == "EURAUD") { magic = 211006; }

   if (Symbol() == "EURCADm" || Symbol() == "EURCAD") { magic = 211007; }

   if (Symbol() == "EURCHFm" || Symbol() == "EURCHF") { magic = 211008; }

   if (Symbol() == "EURGBPm" || Symbol() == "EURGBP") { magic = 211009; }

   if (Symbol() == "EURJPYm" || Symbol() == "EURJPY") { magic = 211010; }

   if (Symbol() == "EURUSDm" || Symbol() == "EURUSD") { magic = 211011; }

   if (Symbol() == "GBPCHFm" || Symbol() == "GBPCHF") { magic = 211012; }

   if (Symbol() == "GBPJPYm" || Symbol() == "GBPJPY") { magic = 211013; }

   if (Symbol() == "GBPUSDm" || Symbol() == "GBPUSD") { magic = 211014; }

   if (Symbol() == "NZDJPYm" || Symbol() == "NZDJPY") { magic = 211015; }

   if (Symbol() == "NZDUSDm" || Symbol() == "NZDUSD") { magic = 211016; }

   if (Symbol() == "USDCHFm" || Symbol() == "USDCHF") { magic = 211017; }

   if (Symbol() == "USDJPYm" || Symbol() == "USDJPY") { magic = 211018; }

   if (Symbol() == "USDCADm" || Symbol() == "USDCAD") { magic = 211019; }

   if (magic == 0) { magic = 211999; }

   return (0);

   return(0);

  }


void OpenBuy()

 {

    int ticket,err;

        if (!GlobalVariableCheck("InTrade")) {

               GlobalVariableSet("InTrade", CurTime());  // set lock indicator

             if (!ECNMode)  ticket = OrderSend(Symbol(), OP_BUY,lot2,Ask,1,0,Ask+TP*pt,"EA Order",magic,0,Blue);

              if (ECNMode) ticket = OrderSend(Symbol(), OP_BUY,lot2,Ask,1,0,0,"EA Order",magic,0,Blue);

           if(ticket>0)

{

OrderSelect(ticket,SELECT_BY_TICKET);

OrderModify(OrderTicket(),OrderOpenPrice(),0,Ask+TP*pt,0,Blue);

}

         

             

             

               GlobalVariableDel("InTrade");   // clear lock indicator

        }

 }


void OpenSell()

 {

    int ticket,err;

        if (!GlobalVariableCheck("InTrade")) {

               GlobalVariableSet("InTrade", CurTime());  // set lock indicator

              if (!ECNMode) ticket = OrderSend(Symbol(),OP_SELL,lot2,Bid,1,0,Bid-TP*pt,"EA Order",magic,0,Red);

             

              if (ECNMode) ticket = OrderSend(Symbol(), OP_SELL, lot2,Bid,1,0,0,"EA Order",magic,0,Red);

          if(ticket>0)

{

OrderSelect(ticket,SELECT_BY_TICKET);

OrderModify(OrderTicket(),OrderOpenPrice(), 0,Bid-TP*pt,0,Green);

}

             

               GlobalVariableDel("InTrade");   // clear lock indicator

        }

 }



void ManageBuy() 

 {

   int lasttradetime = 0;

   double lastopenprice=0;

   double maxlots = 0;

   double lasttp=0;

   int lastordertype=-1;

   int lastorderticket=0;

   int y=0; 


   for (y = 0; y < OrdersTotal(); y++)

   {

      OrderSelect (y, SELECT_BY_POS, MODE_TRADES);

      if ((OrderMagicNumber() != magic) || (OrderType()!=OP_BUY)) { continue; }

      if (OrderOpenTime() > lasttradetime) { 

        lasttradetime = OrderOpenTime();

        lastopenprice = OrderOpenPrice();

        lastordertype=OrderType();

        lastorderticket=OrderTicket();

        lasttp=OrderTakeProfit();

      }     

      if (OrderLots() > maxlots) { maxlots = OrderLots(); }

   }

   

   int lvl=MathLog(maxlots/lot)/MathLog(2)+1;


   if (lvl<0) lvl=0;

   

   lot2=lot*MathPow(2,lvl);

   

   if (lvl==0) OpenBuy();

   

   if ((lastopenprice-Ask>MinGS*pt) && (lvl<MaxTrades)) {

     OpenBuy();

     return(0);

   }


/////////// TP

/*

   double sumlots=0;

   double sump=0;

   double avgp=0;

   for (y = 0; y < OrdersTotal(); y++)

   {

      OrderSelect (y, SELECT_BY_POS, MODE_TRADES);

      if ((OrderMagicNumber() != magic) || (OrderType()!=OP_BUY)) { continue; }

      sumlots=sumlots+OrderLots();

      sump=OrderOpenPrice()*OrderLots()+sump;

   }

   

   if (sumlots>0) {

     avgp=NormalizeDouble(sump/sumlots,Digits);

     double tpp=NormalizeDouble(TP/10/sumlots*pt+avgp,Digits);

     

     for (y = 0; y < OrdersTotal(); y++)

     {

       OrderSelect (y, SELECT_BY_POS, MODE_TRADES);

       if ((OrderMagicNumber() != magic) || (OrderType()!=OP_BUY) || (OrderTakeProfit()==tpp)) { continue; }

       OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),tpp,0,Red);

     }

     

     

   }

 */  


     for (y = 0; y < OrdersTotal(); y++)

     {

       OrderSelect (y, SELECT_BY_POS, MODE_TRADES);

       if ((OrderMagicNumber() != magic) || (OrderType()!=OP_BUY) || (OrderTakeProfit()==lasttp) || (lasttp==0)) { continue; }

       OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),lasttp,0,Blue);

     }


   

}

    

void ManageSell() 

 {

   int lasttradetime = 0;

   double lastopenprice=0;

   double maxlots = 0;

   double lasttp=0;

   int lastordertype=-1;

   int lastorderticket=0;

   int y=0; 


   for (y = 0; y < OrdersTotal(); y++)

   {

      OrderSelect (y, SELECT_BY_POS, MODE_TRADES);

      if ((OrderMagicNumber() != magic) || (OrderType()!=OP_SELL)) { continue; }

      if (OrderOpenTime() > lasttradetime) { 

        lasttradetime = OrderOpenTime();

        lastopenprice = OrderOpenPrice();

        lastordertype=OrderType();

        lastorderticket=OrderTicket();

        lasttp=OrderTakeProfit();

      }     

      if (OrderLots() > maxlots) { maxlots = OrderLots(); }

   }

   

   int lvl=MathLog(maxlots/lot)/MathLog(2)+1;


   if (lvl<0) lvl=0;

   

   lot2=lot*MathPow(2,lvl);

   

   if (lvl==0) OpenSell();

   

   if ((Bid-lastopenprice>MinGS*pt) && (lastopenprice>0) && (lvl<MaxTrades)) {

     OpenSell();

     return(0);

   }


/////////// TP

/*   double sumlots=0;

   double sump=0;

   double avgp=0;

   for (y = 0; y < OrdersTotal(); y++)

   {

      OrderSelect (y, SELECT_BY_POS, MODE_TRADES);

      if ((OrderMagicNumber() != magic) || (OrderType()!=OP_SELL)) { continue; }

      sumlots=sumlots+OrderLots();

      sump=OrderOpenPrice()*OrderLots()+sump;

   }

   

   if (sumlots>0) {

     avgp=NormalizeDouble(sump/sumlots,Digits);

     double tpp=NormalizeDouble(-TP/10/sumlots*pt+avgp,Digits);

     

     for (y = 0; y < OrdersTotal(); y++)

     {

       OrderSelect (y, SELECT_BY_POS, MODE_TRADES);

       if ((OrderMagicNumber() != magic) || (OrderType()!=OP_SELL) || (OrderTakeProfit()==tpp)) { continue; }

       OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),tpp,0,Red);

     }

     

     

   }

 */ 

 

      for (y = 0; y < OrdersTotal(); y++)

     {

       OrderSelect (y, SELECT_BY_POS, MODE_TRADES);

       if ((OrderMagicNumber() != magic) || (OrderType()!=OP_SELL) || (OrderTakeProfit()==lasttp) || (lasttp==0)) { continue; }

       OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),lasttp,0,Red);

     }

 

   

 }


  

//+------------------------------------------------------------------+

//| expert start function                                            |

//+------------------------------------------------------------------+

int start()

  {

//----


  ManageBuy();

  

  ManageSell();



   

//----

   return(0);

  }

//+------------------------------------------------------------------+

 
Hi, your strategy looks like martingle strategy, so backtest schould be from last 10-15 years to make sure this strategy is profitable. This kind strategy is very risky. Regards Greg
 
Greg Pawlak:
Hi, your strategy looks like martingle strategy, so backtest schould be from last 10-15 years to make sure this strategy is profitable. This kind strategy is very risky. Regards Greg
Yes its like martingale, i want change a little in prog, every time open new trade a double size i want to open same size new lots how can i change in prog because i don,t know pro gaming