Тестирование - страница 2

 
SK, Все индикаторы используемые в эксперте берут данные с определенного таймфрема. Т.е. нет разницы на какой график ты его сбросишь. Брось его хоть в корыто, хоть в океан, он будет плавать в Средиземном Море;-) если не утонет)
 
Realjin,
нет разницы на какой график ты его сбросишь

Извини, я понятней объяснить не умею..
 
SA, я уже который раз объясняю, что не берет мой эксперт данных с того таймфрема, на который присоединен. Все используемые в эксперте индикаторы берут данные с конкретного, УКАЗАННОГО В АРГУМЕНТАХ ИНДИКАТРА, таймфрема. Посмотри, видишь где-нибудь вторым аргументом ноль?


hs60=iCustom(NULL,60,"i_FD_Range-Sm",RSM_Period,RSM_Range,RSM_Shift,RSM_Smooth,RSM_CountBars,0,0);
ls60=iCustom(NULL,60,"i_FD_Range-Sm",RSM_Period,RSM_Range,RSM_Shift,RSM_Smooth,RSM_CountBars,1,0);
rl60=iCustom(NULL,60,"i_FD_Range-Sm",RSM_Period,RSM_Range,RSM_Shift,RSM_Smooth,RSM_CountBars,2,0);
sl60=iCustom(NULL,60,"i_FD_Range-Sm",RSM_Period,RSM_Range,RSM_Shift,RSM_Smooth,RSM_CountBars,3,0);

hs15=iCustom(NULL,15,"i_FD_Range-Sm",RSM_Period,RSM_Range,RSM_Shift,RSM_Smooth,RSM_CountBars,0,0);
ls15=iCustom(NULL,15,"i_FD_Range-Sm",RSM_Period,RSM_Range,RSM_Shift,RSM_Smooth,RSM_CountBars,1,0);
rl15=iCustom(NULL,15,"i_FD_Range-Sm",RSM_Period,RSM_Range,RSM_Shift,RSM_Smooth,RSM_CountBars,2,0);

MA=iMA(NULL,15,35,0,MODE_SMA,PRICE_MEDIAN,0);
 
Предпологается, что история по всем тайм-фреймам имеется?
И еще - на хрена на каждом тике вычислять всю эту прорву параметров?

hs60=iCustom(NULL,60,"i_FD_Range-Sm",RSM_Period,RSM_Range,RSM_Shift,RSM_Smooth,RSM_CountBars,0,0);
ls60=iCustom(NULL,60,"i_FD_Range-Sm",RSM_Period,RSM_Range,RSM_Shift,RSM_Smooth,RSM_CountBars,1,0);
rl60=iCustom(NULL,60,"i_FD_Range-Sm",RSM_Period,RSM_Range,RSM_Shift,RSM_Smooth,RSM_CountBars,2,0);
sl60=iCustom(NULL,60,"i_FD_Range-Sm",RSM_Period,RSM_Range,RSM_Shift,RSM_Smooth,RSM_CountBars,3,0);

hs15=iCustom(NULL,15,"i_FD_Range-Sm",RSM_Period,RSM_Range,RSM_Shift,RSM_Smooth,RSM_CountBars,0,0);
ls15=iCustom(NULL,15,"i_FD_Range-Sm",RSM_Period,RSM_Range,RSM_Shift,RSM_Smooth,RSM_CountBars,1,0);
rl15=iCustom(NULL,15,"i_FD_Range-Sm",RSM_Period,RSM_Range,RSM_Shift,RSM_Smooth,RSM_CountBars,2,0);
 

Предпологается, что история по всем тайм-фреймам имеется?


Имеется.

Зачем вычислять такое количество параметров, это вопрос не принципиальный. Это экспериментальный образец эксперта, использующий индикатор предназначенный для визуальной работы. При необходимости количество буферов в индикаторе можно сократить до двух, или вообще написать совсем другой эксперт.

Проблема в другом - почему результаты тестирования разные.

Провел контрольный эксперимент - можно посмотреть прямо здесь - http://indus7.narod.ru/
Линии эквити далеко не идентичные. Только не говорите, зачем я так озаботился экспертом показывающим убытки. Вопрос то не в этом, а в том как работает тестер стратегий.
 
1. Я повторю - на хрена на каждом тике вычислять всю эту прорву параметров?
2. На хрена использовать индикаторы с 15-минутного тайм-фрейма при тестировании на часовке и 4-х часовке?
 
в эксперте вроде всё ок
давай код индюка )

и, пожалуйста, вставляй его в тег [code]....
 
Индикатор
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 DimGray
#property indicator_color2 DimGray
#property indicator_color3 DodgerBlue
#property indicator_color4 Red

extern int i_Period=30;
extern int i_Range=3;
extern int i_Shift=30;
extern int i_Smooth=7;
extern int i_CountBars=500; 

double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
string tr;

int init(){
   IndicatorBuffers(6);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE);   
   SetIndexBuffer(2,ExtMapBuffer3);  
   SetIndexStyle(3,DRAW_LINE);     
   SetIndexBuffer(3,ExtMapBuffer4);  
   SetIndexStyle(1,DRAW_LINE);   
   SetIndexBuffer(4,ExtMapBuffer5);   
   SetIndexBuffer(5,ExtMapBuffer6);    
   return(0);
}
int start(){
   double hs,ls;
   int limit;
	int counted_bars=IndicatorCounted(); // определим количество просчитаных баров у индикатора
	  if(counted_bars>0){
	     counted_bars--;
	  }	
	limit=Bars-counted_bars; // определяем границу до которой рассчитываем значения индикатора
      for(int i=0; i<limit; i++){
		    hs=0;
			 ls=0;				
				  for(int j=0;j<i_Range;j++){
				     hs+=High[Highest(NULL,0,MODE_HIGH,i_Period,j*i_Period+i_Shift+i)];
				     ls+=Low[Lowest(NULL,0,MODE_LOW,i_Period,j*i_Period+i_Shift+i)];		     
				  }
           hs/=i_Range;
           ls/=i_Range;                
           ExtMapBuffer5[i]=hs;
           ExtMapBuffer6[i]=ls;               
		}
		if(limit>i_CountBars){
	     limit=i_CountBars;
		}				
		for(i=0; i<limit; i++){			
         ExtMapBuffer1[i]=iMAOnArray(ExtMapBuffer5,0,i_Smooth,0,MODE_SMA,i);
         ExtMapBuffer2[i]=iMAOnArray(ExtMapBuffer6,0,i_Smooth,0,MODE_SMA,i);				
	   }
   	for(i=limit-1; i>=0; i--){
         if(High[i]>ExtMapBuffer1[i]){
			   tr="up";
			}		
			if(Low[i]<ExtMapBuffer2[i]){
			   tr="down";
		   }		
		   if(tr=="up"){
			   ExtMapBuffer4[i]=ExtMapBuffer2[i];
		   }
			else{
			   ExtMapBuffer4[i]=EMPTY_VALUE;				  
			}
			if(tr=="down"){
			   ExtMapBuffer3[i]=ExtMapBuffer1[i];				     
		   }
			else{
			   ExtMapBuffer3[i]=EMPTY_VALUE;					  
			}		  
		}				
   return(0);
}

 

1. Я повторю - на хрена на каждом тике вычислять всю эту прорву параметров?
2. На хрена использовать индикаторы с 15-минутного тайм-фрейма при тестировании на часовке и 4-х часовке?


1. Для точности эксперимента.
2. Для точного входа.
 
for(int i=0; i<limit; i++) - надо наооборот, от лимита до 0.
как ты собирался вычислить iMAOnArray на незаполненных данных???