А что должен выдавать?
А что должен выдавать?
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 := Âû÷èñëÿåò íàêëîí ëèíèè ÷åðåç ìåòîä íàèìåíüøåãî êâàäðàòè÷íîãî îòêëîíåíèÿ
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
]]*/
// Âû÷èñëÿåì äëÿ ôóíêöèè Y=A*X+B êîýôôèöèåíò À äëÿ öåí è çíà÷åíèé èíäèêàòîðîâ
// Ñ÷èòàåì çíà÷åíèÿ Õ=1,2,3,4,5 . Êîíñòàíòó B íå âû÷èñëÿåì, òàê êàê íå èìååò ñìûñëà. B=(T-A*M)/, ãäå n=5
// T=Ñóììà Yi, M=Ñóììà Xi, N=Ñóììà Xi*Xi, Z=Ñóììà Xi*Yi
// A=(T+(N-2*Z)*n/M)/M
// Âû÷èñëÿåì îòíîøåíèå Aöåí/Aèíäèêàòîðà
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 - ïî ïÿòè òî÷êàì
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; //ðàâíî 55
M=M+cnt; //ðàâíî 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 - только линия. Посмотрю твою ссылку. Спасибо
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
//+------------------------------------------------------------------+ //| 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); } //+----------------------------