Ajude me criar um bot esta escrito em baixo

MQL4 Experten Skripte

Auftrag beendet

Ausführungszeit 16 Tage

Spezifikation

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);

}

 

Bewerbungen

1
Entwickler 1
Bewertung
(89)
Projekte
139
24%
Schlichtung
34
32% / 44%
Frist nicht eingehalten
59
42%
Arbeitet

Projektdetails

Budget
20 - 30 USD
Für die Entwickler
18 - 27 USD
Ausführungsfristen
von 1 bis 10 Tag(e)