Тестер выдает результат отличный от едичного прогона при тех же параметрах. - страница 3

 
#property copyright "Copyright © 2006, Yury V. Reshetov ICQ:282715499  http://reshetov.xnet.uz/"
#property link      "http://reshetov.xnet.uz/"
 
#include <stderror.mqh>
#include <stdlib.mqh>
 
int handle;
int CalculatedBars=0;
 
   double arryTimeSeries[],SSA[];
 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   ArrayResize(arryTimeSeries,6000);
   ArrayResize(SSA,6000);   
   handle = FileOpen("sing", FILE_CSV|FILE_WRITE,';');
 
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
  Print("Итого ",CalculatedBars," строк в файле ");
 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
 
   if(Volume[0]>1) return(0);     
   if(iVolume(NULL,PERIOD_M1,0)>1) return(0);     
 
   if (Volume[0]==1) {perceptron();}
  }
 
//+------------------------------------------------------------------+
//| The PERCEPTRON - a perceiving and recognizing function           |
//+------------------------------------------------------------------+
double perceptron() 
  {
 
     if(Volume[0]>1) return;
 
     CalculatedBars++;
     SSA[4]=iMA(NULL,0,6,0,MODE_SMA,PRICE_MEDIAN,1);
     FileWrite(handle, SSA[4]);
   return(0);   
  }
Вот сделал автоматический подсчет строк в файле, как у вас!
 
#property copyright "Copyright © 2006, Yury V. Reshetov ICQ:282715499  http://reshetov.xnet.uz/"
#property link      "http://reshetov.xnet.uz/"
 
#include <stderror.mqh>
#include <stdlib.mqh>
 
int handle;
int CalculatedBars=0;
static datetime openTime=0;
 
   double arryTimeSeries[],SSA[];
 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   ArrayResize(arryTimeSeries,6000);
   ArrayResize(SSA,6000);   
   handle = FileOpen("sing", FILE_CSV|FILE_WRITE,';');
 
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
  Print("Итого ",CalculatedBars," строк в файле ");
 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if(iVolume(NULL,PERIOD_M1,0)>1) return(0);     
   
   if (iTime(NULL,0,0)!=openTime)
      {
      CalculatedBars++;
      openTime=iTime(NULL,0,0);
      perceptron();      
      }
//----
   return(0);
  }
 
//+------------------------------------------------------------------+
//| The PERCEPTRON - a perceiving and recognizing function           |
//+------------------------------------------------------------------+
double perceptron() 
  {
  
     SSA[4]=iMA(NULL,0,6,0,MODE_SMA,PRICE_MEDIAN,1);
     FileWrite(handle, SSA[4]);
   return(0);   
  }

Если заремить iVolume то все получается очень хорошо!

А вот если нет.. ). То возникает ошибка, и не в начале а посередине. Правда всего одна, но она есть!

По тикам, получается на один бар меньше, чем при явном контроле открытия баров. А если использовать код выше, то ошибок больше.

Я молодец, нашел ошибку :).

P.S.

Сам себя не похвалишь, кто похвалит :)

 
#property copyright "Copyright © 2006, Yury V. Reshetov ICQ:282715499  http://reshetov.xnet.uz/"
#property link      "http://reshetov.xnet.uz/"
 
#include <stderror.mqh>
#include <stdlib.mqh>
 
int handle;
int CalculatedBars=0;
static datetime openTime=0, oTm=0;
 
   double arryTimeSeries[],SSA[];
 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   ArrayResize(arryTimeSeries,6000);
   ArrayResize(SSA,6000);   
   handle = FileOpen("sing", FILE_CSV|FILE_WRITE,';');
 
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
  Print("Итого ",CalculatedBars," строк в файле ");
 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
//   if(iVolume(NULL,PERIOD_M1,0)>1) return(0);
   
 if (iTime(NULL,PERIOD_M1,0)==oTm) return (0);
 else oTm=iTime(NULL,PERIOD_M1,0);        
   
   if (iTime(NULL,0,0)!=openTime)
      {
      CalculatedBars++;
      openTime=iTime(NULL,0,0);
      perceptron();      
      }
//----
   return(0);
  }
 
//+------------------------------------------------------------------+
//| The PERCEPTRON - a perceiving and recognizing function           |
//+------------------------------------------------------------------+
double perceptron() 
  {
 
//     if(Volume[0]>1) return;
 
     SSA[4]=iMA(NULL,0,6,0,MODE_SMA,PRICE_MEDIAN,1);
     FileWrite(handle, SSA[4]);
   return(0);   
  }

К сожалению, iTime аналогично не работает на минутках.

Возникает как минимум одна ошибка. Ошибка в один бар! Пожалуйста, помогите, с идеей или исправте код. Или исправте iTime, Volume.

 

Вот именно на таких "странных" минутках и происходит сбой iTime, Volume..

 
TVA_11:

Вот именно на таких "странных" минутках и происходит сбой iTime, Volume..


Надо было бы контроль нового бара делать от времени. Я так делаю.

int timeprev=0;
 
int start() {
 
int timenev=Time[0];
 
if (timenev==timeold) return(0);
    timeold=timenev;
}
 
Vinin:
TVA_11:

Вот именно на таких "странных" минутках и происходит сбой iTime, Volume..


Надо было бы контроль нового бара делать от времени. Я так делаю.

int timeprev=0;
 
int start() {
 
int timenev=Time[0];
 
if (timenev==timeold) return(0);
    timeold=timenev;
}

 if (iTime(NULL,PERIOD_M1,0)==oTm) return (0);
 else oTm=iTime(NULL,PERIOD_M1,0);        
   
   if (iTime(NULL,0,0)!=openTime)
      {
      CalculatedBars++;
      openTime=iTime(NULL,0,0);
      perceptron();      
      }

Вот, разве у меня не аналогично твоему совету?

Иду по открытиям минуток, и потом контроль по старшему таймфрейму, в моем случае установлено 4 часа. за период с 2004.11 по 2007.11

обнаружено при точном контроле 15 подобных сбоев.

 
TVA_11, попробуйте написать openTime=iTime(NULL,0,0)+1;
 
rsi:
TVA_11, попробуйте написать openTime=iTime(NULL,0,0)+1;

        Попробую! пока комп занят. тестирую.
 

Чисто помечтать :)

 
rsi:
TVA_11, попробуйте написать openTime=iTime(NULL,0,0)+1;

   
   if (iTime(NULL,0,0)!=openTime)
      {
 
if (iTime(NULL,PERIOD_M1,0)==oTm) return (0);
 else oTm=iTime(NULL,PERIOD_M1,0);        
 
      CalculatedBars++;
      openTime=iTime(NULL,0,0);
      perceptron();      
      }

Не понял почему, но так работает корректно.

Может кто объяснить?

Причина обращения: