# What is the problem with Array Robot 90% complete

69

What is the Array problem?

This is working everything I wanted but the array does not use the lots I put

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

if(result>0)
{
TheStopLoss=0;
TheTakeProfit=0;
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++)
{
if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber
)
{
{
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)
{
{
{
return(0);
}
}
}
}
}
}
return(0);
}

int TotalOrdersCount()
{
int result=0;
for(int i=0;i<OrdersTotal();i++)
{
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);

}

15719

matheustn12: What is the Array problem?
1. Check your return codes and find out why. What are Function return values ? How do I use them ? - MQL4 forum and Common Errors in MQL4 Programs and How to Avoid Them - MQL4 Articles
2. Do NOT use NormalizeDouble, EVER. For ANY Reason. It's a kludge, don't use it. It's use is always wrong
3. You assume history is ordered by date, it's not. Could EA Really Live By Order_History Alone? (ubzen) - MQL4 forum
69

So you complicate me I do not know anything about mql4. I just asked that a good soul could fix this.
Moderator
32814

matheustn12:
So you complicate me I do not know anything about mql4. I just asked that a good soul could fix this.

Fix what ?

the array does not use the lots I put

For me it's totally meaningless.

69

Alain Verleyen:

Fix what ?

For me it's totally meaningless.

Look at the pictures, I put the lots 0.1,0.2,0.3. But it is not working.

15719

matheustn12: But it is not working. So you complicate me I do not know anything about mql4. I just asked that a good soul could fix this.
1. "Doesn't work" is meaningless - just like saying the car doesn't work. Doesn't start, won't go in gear, no electrical, missing the key, flat tires - meaningless. There are no mind readers here.
2. I already told you to "check your return codes and find out why." There are no mind readers here.
3. learn to code it, or pay (Freelance) someone. We're not going to code it FOR you.