Индикатор CoeffofLine_v1.mq4

 
Уважаемые. Поправьте пож. индикатор. На графике он дает только линию. С уважением

//+------------------------------------------------------------------+
//| CoeffofLine_v1.mq4 
//| Ramdass - Conversion only
//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Yellow



extern int CountBars=300;
//---- buffers
double cfl[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- indicator line
   IndicatorBuffers(1);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,cfl);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| CoeffofLine                                                              |
//+------------------------------------------------------------------+
int start()
  {
  

  
   if (CountBars>=Bars) CountBars=Bars;
   SetIndexDrawBegin(0,Bars-CountBars+5+1);
   int i,shift,cnt,ndot1,ndot=5,counted_bars=IndicatorCounted();
   double TYVar,ZYVar,TIndicatorVar,ZIndicatorVar,M,N,AY,AIndicator;
//----
   if(Bars<=ndot) return(0);

//----
   shift=CountBars-ndot-1;


   while(shift>=0)
     {
     
   TYVar=0;
	ZYVar=0;
	N=0;
	M=0;
	TIndicatorVar=0;
	ZIndicatorVar=0;
//	ndot1=ndot;
//	if (shift+1<ndot1) ndot1=shift+1;
//	for (cnt=ndot; cnt>=1; cnt--) // n=5 -  по пяти точкам
//	{ 
//		N=N+cnt*cnt;  //равно 55
//		M=M+cnt;      //равно 15
//	}
	for (cnt=ndot; cnt>=1; cnt--) // n=5 -  по пяти точкам
	{
		ZYVar=ZYVar+(High[shift-cnt+1]+Low[shift-cnt+1])/2*(6-cnt);
		TYVar=TYVar+(High[shift-cnt+1]+Low[shift-cnt+1])/2;
		//N=N+cnt*cnt; равно 55
		//M=M+cnt; равно 15
		ZIndicatorVar=ZIndicatorVar+iMA(NULL,0,5,3,MODE_SMMA,PRICE_MEDIAN,shift+cnt-1)*(6-cnt);
		TIndicatorVar=TIndicatorVar+iMA(NULL,0,5,3,MODE_SMMA,PRICE_MEDIAN,shift+cnt-1);
	AY=(TYVar+(55-2*ZYVar)*5/15)/15;
	AIndicator=(TIndicatorVar+(55-2*ZIndicatorVar)*5/15)/15;
	}
	cfl[shift]=(-1000)*MathLog(AY/AIndicator);



      shift--;
     }
   return(0);
  }
//+---------------------------- 
 
А что должен выдавать?
 
А что должен выдавать?


MAX/MIN & FLAT
 
Т.е твой индикатор должен несколько графиков строить? Почему тогда у тебя один буфер объявлен?
 
Т.е твой индикатор должен несколько графиков строить? Почему тогда у тебя один буфер объявлен?


Индик. стовится на график в отдельное окно и работает как и все инд.
 
Я имею в виду, сколько буферов он должен выводить в свое окно. Пока у тебя объявлен один буфер, double cfl[]; и он отрисовывается в окне индикатора. MAX/MIN & FLAT - это дополнительные буферы и они тоже должны выводится на окне индикатора, или нужно вывести их как значения
 
Я имею в виду, сколько буферов он должен выводить в свое окно. Пока у тебя объявлен один буфер, double cfl[]; и он отрисовывается в окне индикатора. MAX/MIN & FLAT - это дополнительные буферы и они тоже должны выводится на окне индикатора, или нужно вывести их как значения


Гони по одному буферу. Есть этот же инд для МТ3. Я пытался перегнать его исходник, но он при копировании кодипует русский текст.
 
Кинь текст инд для МТ3
 
Кинь текст инд для МТ3

Даю
/*[[
	Name := CoeffOfLine
	Author := Copyright © 2004, Rosh, fixes by Nick Bilak
	Link := http://www.metaquotes.net/
	Notes := &#194;&#251;&#247;&#232;&#241;&#235;&#255;&#229;&#242; &#237;&#224;&#234;&#235;&#238;&#237; &#235;&#232;&#237;&#232;&#232; &#247;&#229;&#240;&#229;&#231; &#236;&#229;&#242;&#238;&#228; &#237;&#224;&#232;&#236;&#229;&#237;&#252;&#248;&#229;&#227;&#238; &#234;&#226;&#224;&#228;&#240;&#224;&#242;&#232;&#247;&#237;&#238;&#227;&#238; &#238;&#242;&#234;&#235;&#238;&#237;&#229;&#237;&#232;&#255;
	Separate Window := Yes
	First Color := White
	First Draw Type := Line
	First Symbol := 217
	Use Second Data := Yes
	Second Color := DimGray
	Second Draw Type := Line
	Second Symbol := 218
]]*/
// &#194;&#251;&#247;&#232;&#241;&#235;&#255;&#229;&#236; &#228;&#235;&#255; &#244;&#243;&#237;&#234;&#246;&#232;&#232; Y=A*X+B  &#234;&#238;&#253;&#244;&#244;&#232;&#246;&#232;&#229;&#237;&#242; &#192; &#228;&#235;&#255; &#246;&#229;&#237; &#232; &#231;&#237;&#224;&#247;&#229;&#237;&#232;&#233; &#232;&#237;&#228;&#232;&#234;&#224;&#242;&#238;&#240;&#238;&#226;
// &#209;&#247;&#232;&#242;&#224;&#229;&#236; &#231;&#237;&#224;&#247;&#229;&#237;&#232;&#255; &#213;=1,2,3,4,5 . &#202;&#238;&#237;&#241;&#242;&#224;&#237;&#242;&#243; B  &#237;&#229; &#226;&#251;&#247;&#232;&#241;&#235;&#255;&#229;&#236;, &#242;&#224;&#234; &#234;&#224;&#234; &#237;&#229; &#232;&#236;&#229;&#229;&#242; &#241;&#236;&#251;&#241;&#235;&#224;. B=(T-A*M)/, &#227;&#228;&#229; n=5
// T=&#209;&#243;&#236;&#236;&#224; Yi, M=&#209;&#243;&#236;&#236;&#224; Xi, N=&#209;&#243;&#236;&#236;&#224; Xi*Xi, Z=&#209;&#243;&#236;&#236;&#224; Xi*Yi
// A=(T+(N-2*Z)*n/M)/M 
// &#194;&#251;&#247;&#232;&#241;&#235;&#255;&#229;&#236; &#238;&#242;&#237;&#238;&#248;&#229;&#237;&#232;&#229; A&#246;&#229;&#237;/A&#232;&#237;&#228;&#232;&#234;&#224;&#242;&#238;&#240;&#224;
Inputs: BeginBars(2000),ndot(5),HiTrigger(0.5),LoTrigger(-0.5);
Variable : LoopBegin(0),shift(0),cnt(0),TYVar(0),ZYVar(0),TIndicatorVar(0),ZIndicatorVar(0),M(0),N(0),AY(0),AIndicator(0);
var: prevbars(0),is_First(False),ival(0);


SetLoopCount(0);

// Check for additional bars loading or total reloadng.
If Bars<prevbars or Bars-prevbars>1 Then is_First=True;
prevbars=Bars;
//--------------------------------------------------------

// Pre-Loop setup
// loopbegin prevents counting of previously plotted bars excluding current Bars
if is_First Then Begin
   if bars<BeginBars then LoopBegin=bars-ndot-2 else LoopBegin=BeginBars-ndot-2;
   is_First=False;
End;
//--------------------------------------------------------

loopBegin=loopBegin+1; // Plot the current bar also

// loop from first bar to current bar (with shift=0)
For shift=loopBegin Downto 0 Begin
	TYVar=0;
	ZYVar=0;
	N=0;
	M=0;
	TIndicatorVar=0;
	ZIndicatorVar=0;
	For cnt=1 To ndot Begin // n=5 -  &#239;&#238; &#239;&#255;&#242;&#232; &#242;&#238;&#247;&#234;&#224;&#236;
		ZYVar=ZYVar+(H[shift+cnt-1]+L[shift+cnt-1])/2*(6-cnt);
		TYVar=TYVar+(H[shift+cnt-1]+L[shift+cnt-1])/2;
		N=N+cnt*cnt; //&#240;&#224;&#226;&#237;&#238; 55
		M=M+cnt; //&#240;&#224;&#226;&#237;&#238; 15
		ZIndicatorVar=ZIndicatorVar+iMAEx(5,MODE_SMMA,3,PRICE_MEDIAN,shift+cnt-1)*(6-cnt);
		TIndicatorVar=TIndicatorVar+iMAEx(5,MODE_SMMA,3,PRICE_MEDIAN,shift+cnt-1);
	End;
	AY=(TYVar+(N-2*ZYVar)*ndot/M)/M;
	AIndicator=(TIndicatorVar+(N-2*ZIndicatorVar)*ndot/M)/M;
	ival=(-1000)*Log(AY/AIndicator);
	SetIndexValue(shift, ival);
   // Plot dual-value Trigger Line
   If Ival>0 then
      SetIndexValue2(shift,HiTrigger)
   Else
      SetIndexValue2(shift,LoTrigger);
   loopBegin=loopBegin-1;   // Prevent repeating previously plotted bars on next tick
End;
 
Вариант, что выложил Виктор, что-то среднее между версиями False и True. Вариант NickBilack'а не приводит к ошибкам в логах и сохраняет максимальную граальность этого индикатора, насколько я помню. История появления индикатора здесь - http://www.alpari-idc.ru/ru/forum/viewtopic.php?t=36669&postdays=0&postorder=asc&start=120
 
Вариант, что выложил Виктор, что-то среднее между версиями False и True. Вариант NickBilack'а не приводит к ошибкам в логах и сохраняет максимальную граальность этого индикатора, насколько я помню. История появления индикатора здесь - http://www.alpari-idc.ru/ru/forum/viewtopic.php?t=36669&postdays=0&postorder=asc&start=120


Rosh, привет. Наконец то ты появился. На сколько мне известно, эти инд. твои. На МТ3 работает исправно, но на МТ4 - только линия. Посмотрю твою ссылку. Спасибо
Причина обращения: