Попытка N2. Советник почему-то торгует только 2 дня за всю историю

 

Когда тестирую советника, то получается что из всей истории он торгует только в течении каких-то двух дней и совершает за это время 5 сделок. Хотя по идее он должен ежедневно делать по несколько сделок. Может кто-нибудь объяснит в чем дело?

Суть советника в том, что он сначала ждёт пересечения двух скользящих средних, потом ищет последний пик индикатора accumulation/distribution и если этот пик пробит, то открывает покупки.

Вот код советника:

//---- input parameters
extern int       TakeProfit=20;
extern int       StopLoss=20;
extern double Lot = 0.1;
 
 
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
 
int start()
  {
//----
//проверка количества баров
if(Bars<100)
     {
      Print("bars less than 100");
      return(0);  
     }
     
//объявление переменных
 
double MaSlowM15, MaFastM15, result1, result2, result3, ADHigh, 
       ADMin, CurrentAD, PrevAD, MaFastM15Prev, MaSlowM15Prev;
int cnt=0, ticket, total, i;
 
//значения переменных
 
MaFastM15=iMA(NULL,PERIOD_M15,5,0,MODE_SMA,PRICE_CLOSE,0);
MaSlowM15=iMA(NULL,PERIOD_M15,21,0,MODE_SMA,PRICE_CLOSE,0);
MaFastM15Prev=iMA(NULL,PERIOD_M15,5,0,MODE_SMA,PRICE_CLOSE,1);
MaSlowM15Prev=iMA(NULL,PERIOD_M15,21,0,MODE_SMA,PRICE_CLOSE,1);
CurrentAD=iAD(NULL, PERIOD_M15, 0);
PrevAD=iAD(NULL, PERIOD_M15, 1);
 
 
// поиск последнего пика
if(MaFastM15>MaSlowM15 && MaFastM15Prev<MaSlowM15Prev)
{
for(i=15;i<=1;i--)
{
result1=iAD(NULL,PERIOD_M15,i);
result2=iAD(NULL,PERIOD_M15,i+1);
result3=iAD(NULL,PERIOD_M15,i-1);
if (result1>result2 && result1>result3) ADHigh = result1;
}
// конец поиска
 
 
   total=OrdersTotal();
   if(total<1) 
     {
      // нет ни одного открытого ордера
      // проверяем на возможность встать в длинную позицию (BUY)
      if(MaFastM15>MaSlowM15 && CurrentAD>ADHigh && PrevAD<ADHigh)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid-20*Point,
                          Ask+20*Point, "TestBuy",16384,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
        }  
     }   
}      
//+------------------------------------------------------------------+
 
Как вставлять код MQL-4 в пост
 

Извиняюсь. Пофиксил.
 

Скорее всего, вы выложили часть советника, т.к. он не компилируется без ошибок. Полагаю, в выложенном варианте эти две строчки кода:

{
for(i=15;i<=1;i--)
для начала должны выглядеть вот так:

for(i=15;i>=1;i--)
Иначе ваш цикл ни разу не выполнится.
Будьте внимательнее и успехов!