Ajude me criar um bot esta escrito em baixo

MQL4 Experts Scripts

Job finished

Execution time 16 days

Specification

Então eu pensei num bot tipo esse aqui de baixo, Quero algum Desenvolvedor de EA que possa concertar isso.

 e também quero que insira esses Lots específicos aqui em baixo em cada ordem  q for aberta com perda, quando a ganha a ordem volta para o lot inicial

 

Adiciona eu no whatsapp +55 11 95724-2910 

 

extern int MagicNumber=10001;
extern double Lots =0.1;
extern double StopLoss=50;
extern double TakeProfit=50;
extern int TrailingStop=50;
extern int Slippage=3;
extern double minlot=0.1;
extern double maxlot=10;


//+------------------------------------------------------------------+
//    expert start function
//+------------------------------------------------------------------+

double numero[]={0.1,0.2,0.3};
int n,result;

double lotsfactor=1.5,ilots;
double initiallotsfactor=1;




int start()
{

//|---------martingale initialization

   int tempfactor,total=OrdersTotal();
  
   if(tempfactor==0 && total>0)
   {
      for(int cnt=0;cnt<total;cnt++)
      {
         if(OrderSelect(cnt,SELECT_BY_POS))
         {
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
            {
               tempfactor=NormalizeDouble(OrderLots()/numero[n],1+(MarketInfo(Symbol(),MODE_MINLOT)==0.01));
               break;
            }
         }
      }
   }
   int histotal=OrdersHistoryTotal();
   if(tempfactor==0&&histotal>0)
   {
      for(cnt=0;cnt<histotal;cnt++)
      {
         if(OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY))
         {
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
            {
               tempfactor=NormalizeDouble(OrderLots()/numero[n],1+(MarketInfo(Symbol(),MODE_MINLOT)==0.01));
               break;
            }
         }
      }
   }
   if(tempfactor>1)
   lotsfactor=tempfactor;
















  double MyPoint=Point;
  if(Digits==3 || Digits==5) MyPoint=Point*10;
  
  double TheStopLoss=0;
  double TheTakeProfit=0;
  if( TotalOrdersCount()==0 )
  {
     int result=0;
     if((Bid>Open[0])) // Here is your open buy rule
     {
     for(n=0;n<numero[n];n++){
     result=numero[n]+OrderLots();
    
    
      numero[n]=NormalizeDouble(numero[n]=martingalefactor(),1);
      if(numero[n]<minlot)numero[n]=minlot;if(numero[n]>maxlot)numero[n]=maxlot;
      
      
        result=OrderSend(Symbol(),OP_BUY,numero[n],Ask,Slippage,0,0,"Bot",MagicNumber,0,Blue);
        
      
        if(result>0)
        {
         TheStopLoss=0;
         TheTakeProfit=0;
         if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
         if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
         OrderSelect(result,SELECT_BY_TICKET);
         OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
        }
        return(0);
        }
     }
     if((Bid<Open[0])) // Here is your open Sell rule
     {
     for(n=0;n<numero[n];n++){
     result=numero[n]+OrderLots();
    
    
              numero[n]=NormalizeDouble(numero[n]=martingalefactor(),1);
              
         if(numero[n]<minlot)numero[n]=minlot;if(numero[n]>maxlot)numero[n]=maxlot;
        
        
        result=OrderSend(Symbol(),OP_SELL,numero[n],Bid,Slippage,0,0,"Bot",MagicNumber,0,Red);
        
        
        
        if(result>0)
        {
         TheStopLoss=0;
         TheTakeProfit=0;
         if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint;
         if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint;
         OrderSelect(result,SELECT_BY_TICKET);
         OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
        }
        return(0);
        }
     }
  }
  
  for(int vnt=0;vnt<OrdersTotal();vnt++)
     {
      OrderSelect(vnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&  
         OrderSymbol()==Symbol() &&
         OrderMagicNumber()==MagicNumber
         )  
        {
         if(OrderType()==OP_BUY)  
           {
            if(TrailingStop>0)  
              {                
               if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else
           {
            if(TrailingStop>0)  
              {                
               if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))
                 {
                  if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }
           }
        }
     }
   return(0);
}

int TotalOrdersCount()
{
  int result=0;
  for(int i=0;i<OrdersTotal();i++)
  {
     OrderSelect(i,SELECT_BY_POS ,MODE_TRADES);
     if (OrderMagicNumber()==MagicNumber) result++;

   }
  return (result);
}

int martingalefactor()
{
   int histotal=OrdersHistoryTotal();
   if (histotal>0)
   {
      for(int cnt=histotal-1;cnt>=0;cnt++)
      {
         if(OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY))
         {
            if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
            {
               if(OrderProfit()<0)
               {
                  
                  lotsfactor=numero[n]+OrderLots();
                  
                  
                    return(lotsfactor);
               }
              
               else
               {
                  lotsfactor=numero[n];
                  if(lotsfactor>=0)
                  {
                   lotsfactor=1.5;
                  }
                  return(lotsfactor);
                  
                  
                  
                  
                  
               }
            }
         }
      }
   }
   return(lotsfactor);

}

 

Responded

1
Developer 1
Rating
(88)
Projects
138
25%
Arbitration
33
33% / 45%
Overdue
59
43%
Working

Project information

Budget
20 - 30 USD
For the developer
18 - 27 USD
Deadline
from 1 to 10 day(s)