Сорри! проблема с Low[Lowest(NULL,0,MODE_LOW,10,10)]

 
Имеется индикатор работающий под МТ3, попытался переделать под МТ4... и что то он не работает.
Немогли бы дать емаил куда можно отправить 2 исходника под МТ3 и МТ4? у меня большое подозрение что Lowest не совсем правельно работает, хотя конечно я могу неправельно что то делать....
 
в мт3 и мт4 Lowest работают по-разному. внимательно сравните описания
 
Все сравнил и сделал с учетом изменений! результат отрецательный:(
 
Все сравнил и сделал с учетом изменений! результат отрецательный:(

Тогда остается опубликовать оба варианта кода в тегах [ pre ] прямо в форуме с кратким описание что делает индикатор.
 
Этот я пытался сделать для МТ4! но что то он не заработал... делает он:) рисует две линии в separate window... по виднерсу это отображает кто предобладает на рынке, быки или медведи
   for(nCurBar=300; nCurBar>0; nCurBar--)
   {
   if(Low[nCurBar+(nPeriod-1)/2] == Low[Lowest(NULL,0,MODE_LOW,nCurBar+nPeriod,nPeriod)])
      { s6=s5;   s5=s4;   s4=s3;   s3=s2;   s2=s1;   s1=Low[nCurBar+4]; };
   if(High[nCurBar+(nPeriod-1)/2] == High[Highest(NULL,0,MODE_HIGH,nCurBar+nPeriod,nPeriod)])
      { r6=r5;   r5=r4;   r4=r3;   r3=r2;   r2=r1;   r1=High[nCurBar+4]; };
 
Этот я пытался сделать для МТ4! но что то он не заработал...

...
   for(nCurBar=300; nCurBar>0; nCurBar--)
   {
   if(Low[nCurBar+(nPeriod-1)/2] == Low[Lowest(NULL,0,MODE_LOW,nCurBar+nPeriod,nPeriod)])
      { s6=s5;   s5=s4;   s4=s3;   s3=s2;   s2=s1;   s1=Low[nCurBar+4]; };
   if(High[nCurBar+(nPeriod-1)/2] == High[Highest(NULL,0,MODE_HIGH,nCurBar+nPeriod,nPeriod)])
      { r6=r5;   r5=r4;   r4=r3;   r3=r2;   r2=r1;   r1=High[nCurBar+4]; };
...
   };	



а этот исправно работает и досехпор в МТ3

...
For nCurBar = nBars Downto 0 Begin

	If Low[nCurBar+(nPeriod-1)/2] = Low[Lowest(MODE_LOW,nCurBar+nPeriod,nPeriod)] 
	   Then Begin s6=s5; s5=s4; s4=s3; s3=s2; s2=s1; s1=Low[nCurBar+4]; End;
	If High[nCurBar+(nPeriod-1)/2] = High[Highest(MODE_HIGH,nCurBar+nPeriod,nPeriod)]
	   Then Begin r6=r5; r5=r4; r4=r3; r3=r2; r2=r1; r1=High[nCurBar+4]; End;
...	


и где тут учёт изменений?
в тройке предложение Lowest(MODE_LOW,10,10) говорит о том, что вы работает в промежутке с 1-го по 10 бар включительно
в четвёрке это же предложение ( Lowest(NULL,0,MODE_LOW,10,10)) говорит, что вы работаете в промежутке с 10-го по 19 бар включительно.
PS. после закрывающей фигурной скобки точку с запятой ставить не надо.
 
 if(Low[nCurBar+(nPeriod-1)/2] == Low[Lowest(NULL,0,MODE_LOW,nCurBar+nPeriod,nPeriod)]) 



Ок! таким образом достаточно изменить nCurBar+nPeriod на nCurBar-nPeriod и по логике все должно заработать... но я получаю совершенно другой результат:(...

 
 if(Low[nCurBar+(nPeriod-1)/2] == Low[Lowest(NULL,0,MODE_LOW,nCurBar+nPeriod,nPeriod)]) 



Ок! таким образом достаточно изменить nCurBar+nPeriod на nCurBar-nPeriod и по логике все должно заработать... но я получаю совершенно другой результат:(...



Тогда уж так:

 if(Low[nCurBar+(nPeriod-1)/2] == Low[Lowest(NULL,0,MODE_LOW,nPeriod,nCurBar+1)]) 



Надо внимательно читать ответы.

 
Читал! пробовал понять... все четно:( приведенный пример тоже не работает:(

попытаюсь поставить вопрос иначе! так как описание на английском в коем я не очень селен! то, что переводит переводчик лучше не произносить в слух...

Lowest - Возвращает наименьшее значение за период в зависимости от типа.
timeframe - временной тайм фрейм (вопросов нет! ставим 0)
type - MODE_LOW (то есть смотреть по самым низким точкам свечи)
count - счет - Количество периодов (в направлении из начального бара, к окончанию) на котором вычисление выполняется. (иными словами! стоим на 150 баре и хотим указать 10, значит от 150 до 160??? или к 140???)
start - начало - Сдвигает показывая зону, относительно текущей зоны, что данные должны быть взяты из. (грубо говоря смещение по данным shift...???)
у меня задача! найти нижнюю точку из 9 свечей! что бы она оказалась в середине диапазона... то есть 4 свечи слева, в центре самая нижняя точка и 4 свечи справа, тогда условие выполняется...
 if(Low[nCurBar+4] == Low[Lowest(NULL,0,MODE_LOW, 9, nCurBar????)])



в общем буду очень признателен, если кто поможет...

 
Во-первых: непонятно что это означает
 if(Low[nCurBar+(nPeriod-1)/2]

?
Если (nPeriod-1)/2 окажется не целым, то куда мы попадем?
А во-вторых :

 Low[Lowest(NULL,0,MODE_LOW,nPeriod,nCurBar+1)]) 


означает, мы мы ищем самое низкое Low на на текущем инструменте (NULL) и текущем таймфрейме (NULL,0,MODE_LOW) в серии из nReriod начиная с nCurBar+1 и заканчивая nCurBar+nPeriod
Подставь nCurBar=0 и nPeriod=20 и подумай ,ч то получится.
А вообще, это уже обсуждалось "Сравнение Highest() в МТ3 и Highest() в МТ4" , мог бы немного и напрячься и поискать.
Больше помогать нет смысла.

 
Большое чисто человечекое спаибо! все сраслось! а главное правельно уложилось в понимание происходящего... все заработало!

И возник новый вопрос: Каким образом вычесляется длина трендоваой линии?
 ObjectCreate("Trend",OBJ_TREND,0,Time1,Price1,Time2,Price2);


иными словами чертим линию из точки А в очку Б и получаем линию длиной в С! каким образом вычесляется точка С?

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