Проблеммы при тестировании - страница 5

 
Я же не знаю, что ты там задумал. И в алгоритм не вникал. Я говорю о том, что выложено, а не о том, что было задумано. Если твой индикатор начнет нормально работать в реале - тогда можно двигаться дальше. Но я не могу распутывать его кишки, я ведь действительно убил наверно час, чтобы код расставить до уровня понимаемого, больше сил нет. Даже скобки не смог все отыскать. Так что дальше сам.
Надеюсь, чем то помог.
 
Я же не знаю, что ты там задумал. И в алгоритм не вникал. Я говорю о том, что выложено, а не о том, что было задумано. Если твой индикатор начнет нормально работать в реале - тогда можно двигаться дальше. Но я не могу распутывать его кишки, я ведь действительно убил наверно час, чтобы код расставить до уровня понимаемого, больше сил нет. Даже скобки не смог все отыскать. Так что дальше сам.
Надеюсь, чем то помог.


Спасибо и на этом! Кстати, только,что сделал, чтобы данные массивов в начале бара передвигались бы, пока набросочно, и теперь на реале рисует правильно!!!
 
Ага! Спасибо друг! Это очень по делу. Посмотрел,- вижу что так. Предполагаю аз-за 2-х массивов, что смещают данные на каждом баре. Как сделать, чтобы данные массивов, тоже передвигались? Кажется из - за этого да?

А разработчики - поймите меня правильно, если у человека, что-то не получается и он застрял, то начинает ругаться. Я простой обычный человек в этом смысле. Ладно, как данные массивов передвигать? В Омеге-то они передвигаются автоматически.

С уважением - Александр.

Когда человек приходит на форум и кричит "У вас тестер неправильный", отвечать такому человеку не хочется. Помогать - тем более.
Но есть и другие люди - они сначала самостоятельно максимально глубоко разбираются в вопросе, а на форуме говорят "я пробовал делать так и так: (список). и приводило это к таким и таким результатам (список). мои размышления на эту тему (список). Кроме того, я естественно поискал ответ на вопрос в архиве форума и полного ответа не нашёл. Скажите, пожалуйста, что я делаю неправильно?"

Лично мне приятнее общаться со вторыми.... А выбор делает каждый сам ;)
 

Когда человек приходит на форум и кричит "У вас тестер неправильный", отвечать такому человеку не хочется. Помогать - тем более.
Но есть и другие люди - они сначала самостоятельно максимально глубоко разбираются в вопросе, а на форуме говорят "я пробовал делать так и так: (список). и приводило это к таким и таким результатам (список). мои размышления на эту тему (список). Кроме того, я естественно поискал ответ на вопрос в архиве форума и полного ответа не нашёл. Скажите, пожалуйста, что я делаю неправильно?"

Лично мне приятнее общаться со вторыми.... А выбор делает каждый сам ;)


Мне вообще-то тоже.
Но я же вначале так и делал, несмотря на то, что уже был на пределе.
Но во всяком случае спасибо за подказку, - она оказалась оказалась, самой ценной, хоть сдвинулся с мертвой точки. Но как корректно пододвигать массивы, а то я тут налепил пока какую-то фигню для проверки? И еще как провильно определять в начале его размер. Пытался ставить A[Bars] - ругается что нужно число. Ну ставлю тогда на глазок допустим A[20000]. Или пока надо порыться в Helpe, в материалах форума, в матобеспечении автомобиля Волга ГАЗ - Т34. Это я шучу. Спасибо всем!!! И Renatu и Rochu и другим, а komposteru персонально.

С уважением - Александр.

С уважением - Александр.
 
Но как корректно пододвигать массивы
объявлять - double А[];
потом присвоить его буферу индикатора - SetIndexBuffer()
если надо дополнительные массивы для расчётов (которые не надо рисовать) - обявлять так же, а потом ф-цией IndicatorBuffers() назначить общее их кол-во (вместе с теми, что рисуются)

только не факт, что в массивах дело ;)
 

только не факт, что в массивах дело ;)


Я то проверку как делал то. Поставил
cbi=Bars-IndicatorCounted()-1;
for(i=cbi+p+pma+pma2+pma3+1; i>=0; i--),
то есть заставил на каждом новом тике, пересчитывать периоды всех составляющих.
Естественно счет стал долгим, но правильным. И эксперт стал брать в нужных точках.
А вот, когда эту цепочку убираешь, то есть for(i=cbi; i>=0; i--),
то то почему-то начиная с 3-го элемента данные массива не сдвигаются, все время одно и то же значение.
Как буд-то функция IndicatorCounted() как бы отключает перезапись массивов. Ну и дела.
Ах Омега, которая нам только снится теперь, как там было все легко и просто.
 
Эээ нет дело не в IndicatorCounted().
Даже без него 0-ой и 1-й элементы перезаписываются, 0-й перемещается в 1-й, а начиная со 2-го данные не смещаются, - все время остаются те же самые. Что за кроссворды? Ну тут уж без создателей не обойдешься.

Уважаемые разработчики! Если я Вас еще не достал окончательно, поясните пожалуйста почему начиная со второго элемента в массиве данные при приходе нового бара не сдвигаются, а все-время теже самые.
И если можно их сдвигать, то как?

Заранее благодарю - Александр.
 
попробуй так
//-----------at_ALR+ma2-------------
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 SkyBlue
#property indicator_color2 Red
#property indicator_color3 Silver
//-------------------------------------
extern int hrLR=14;
extern double k=0.5;
extern double k2=0.5;
extern double kma=0.25;
//----------------------
double at[],ma3[],a0[],lr[],ma[];
double sx,sy,sxy,sx2,aa,bb;
double sum,sum2,ma2,sum3;
int p,pma,pma2,pma3;
//******************************************************************
int init()
{
   IndicatorBuffers(5);
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,at);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ma3);
   SetIndexBuffer(2,a0);
   SetIndexBuffer(3,lr);
   SetIndexBuffer(4,ma);
//-------------------------------------------
p=hrLR*60/Period(); pma=p*k; pma2=p*k2; pma3=p*kma;
//-------------------------------------------
return(0);}

int start()
{
	int counted_bars=IndicatorCounted();
	if ( counted_bars < 0 ) { Print( "Indicator Error (Counted bars < 0)!" ); return(-1); }
	if ( Bars < 100 ) { Print( "Indicator Error (Bars < 100)!" ); return(-1); }

   int cbi = Bars - 2;
	if ( counted_bars > 2 ) { cbi = Bars - counted_bars; }

	for ( int i = cbi; i >= 0; i -- )
	{
   	if (i<Bars-p-1)
      {
      	sx=0; sy=0; sxy=0; sx2=0;
      	for (int n=0; n<=p-1; n++)
         {
         	sx=sx+i+n; 
         	sy=sy+Close[i+n]; 
         	sxy=sxy+(i+n)*Close[i+n]; 
         	sx2=sx2+MathPow(i+n,2);
         }
      	aa=(sx*sy-p*sxy)/(MathPow(sx,2)-p*sx2); 
      	bb=(sy-aa*sx)/p;
      	lr[i]=bb+aa*i;
      }
   	if (i<Bars-p-pma-1)
      {
      	sum=0.0; 
      	for (n=0; n<=pma-1; n++) { sum+=lr[i+n]; }
      	ma[i]=sum/pma;
      }
   	if (i<Bars-p-pma-pma2-1)
      { 
      	sum2=0.0; 
      	for (n=0; n<=pma2-1; n++) { sum2+=ma[i+n]; }
      	ma2=sum2/pma2; 
      	at[i]=(ma[i]-ma2)/Point; 
      }
   	if (i<Bars-p-pma-pma2-pma3-1)
      {
      	sum3=0.0; 
      	for (n=0; n<=pma3-1; n++) { sum3+=at[i+n]; }
      	ma3[i]=sum3/pma3;
      }
   a0[i]=0.0000001;
   }
return(0);
}
 
Здорово!!!
Теперь все нормально работает.
Можно идти спать. Завтра на свежую голову просмотрю все внимательно.
Огромнейшее спасибо!!!

С уважением Александр.
 
Здорово!!!
Теперь все нормально работает.
Можно идти спать. Завтра на свежую голову просмотрю все внимательно.
Огромнейшее спасибо!!!

С уважением Александр.
Работа стОит 20wmz:
10 Рошу за "причёсывание" (оно мне действительно сэкономило много времени)
и 10 мне - за то, что сначала объяснил что надо делать (komposter 11.11.05 00:37) а потом взял и сделал.
+ тестирование нами обоими.