Индикаторы: Dserg - LinRegression Breakout - страница 4

 
Dserg:
excelf:

Хороший индикатор прорывов на истории. Если не перерисовывал цены не было =)



В первом комментарии версия 1,1.

Не перерисовывается, кстати :)

Перерисовывает, перерисовывает... :)

Вот этот фрагмент

for(i = loopbegin; i >= 0; i--) {
B0[i]=0;
B1[i]=0;
B3[i]=0;
B4[i]=0;
Up[i]=0;
Dn[i]=0;
Stop[i]=0;
Target[i]=0;
}

for(i = loopbegin; i >= 0; i--) {

собственно и перерисовывает. Выручает то, что берется большая история (5000 баров). А в случае прикрепления этого индикатора к советнику (что сейчас пытаюсь сделать) длинная история тянет время. Оптимально, по-моему, для советника применять историю равную всего в несколько раз больше Nlin. Перерисовка явно видна начиная от 2*Nlin. Исправить можно так: когда формируется сигнал Up[] или Dn[] начинаем считать следующие бары и подставляем это число в цикле for вместо переменной loopbegin. Тогда обнуляться будут только последующие бары и попытка построить линейную регресию будет предприниматься на последующих (после последнего решения) барах.

 
ikatsko:
Dserg:
excelf:

Хороший индикатор прорывов на истории. Если не перерисовывал цены не было =)



В первом комментарии версия 1,1.

Не перерисовывается, кстати :)

Перерисовывает, перерисовывает... :)

Вот этот фрагмент

for(i = loopbegin; i >= 0; i--) {
B0[i]=0;
B1[i]=0;
B3[i]=0;
B4[i]=0;
Up[i]=0;
Dn[i]=0;
Stop[i]=0;
Target[i]=0;
}

for(i = loopbegin; i >= 0; i--) {

собственно и перерисовывает. Выручает то, что берется большая история (5000 баров). А в случае прикрепления этого индикатора к советнику (что сейчас пытаюсь сделать) длинная история тянет время. Оптимально, по-моему, для советника применять историю равную всего в несколько раз больше Nlin. Перерисовка явно видна начиная от 2*Nlin. Исправить можно так: когда формируется сигнал Up[] или Dn[] начинаем считать следующие бары и подставляем это число в цикле for вместо переменной loopbegin. Тогда обнуляться будут только последующие бары и попытка построить линейную регресию будет предприниматься на последующих (после последнего решения) барах.


Ну и что?. Пока не будет скрина с перерисовкой - не поверю ;) Для расчёта  используются только ПРОШЛЫЕ бары.

Я сам на минутках сидел и проверял - никакой перерисовки нет. Если канал возник, он там и будет всегда. 

В советник, кстати, этот индикатор вставлять нельзя, там надо использовать совершенно другую логику.

 
Dserg:

Ну и что?. Пока не будет скрина с перерисовкой - не поверю ;) Для расчёта используются только ПРОШЛЫЕ бары.

Я сам на минутках сидел и проверял - никакой перерисовки нет. Если канал возник, он там и будет всегда.

В советник, кстати, этот индикатор вставлять нельзя, там надо использовать совершенно другую логику.

Поставьте на минутах Nlin=6, например, и Nbars=12 (например) и увидите. Лин.регр. будет скользить за графиком.

И почему нельзя вставлять в советника? У Вас возражения в связи с авторскими правами? (это простой интерес). А если другая логика - мож.поделитесь?

 
ikatsko:
Dserg:

Ну и что?. Пока не будет скрина с перерисовкой - не поверю ;) Для расчёта используются только ПРОШЛЫЕ бары.

Я сам на минутках сидел и проверял - никакой перерисовки нет. Если канал возник, он там и будет всегда.

В советник, кстати, этот индикатор вставлять нельзя, там надо использовать совершенно другую логику.

Поставьте на минутах Nlin=6, например, и Nbars=12 (например) и увидите. Лин.регр. будет скользить за графиком.

И почему нельзя вставлять в советника? У Вас возражения в связи с авторскими правами? (это простой интерес). А если другая логика - мож.поделитесь?

Другая логика. Ну а вы сами виноваты, что поставили такое малое значение Nbars :-)

Я вообще сейчас пользуюсь другой версией индикатора где эта проблема решена

а делается это так:

1) extern datetime D0=D'01.01.2010';

2) Nbars = iBarsShift(NULL,0,D0);

3)???????

4)PROFIT!

Никакой перерисовки, поверьте ;)

 

Предлагаю советника к этому КРАСИВОМУ индикатору: http://forum.mql4.com/ru/30164/page3#279355 (см. прикрепленный файл на форуме под моим именем)

 

Отличный индикатор Dserg +10. Респект

 

Если уж говорить об утреннем флете, то предлагаю ограничить время выявления такого флета.

Вносим такие изменения в индикатор:

...

extern string StartTime = "19:00"; //Начало работы
extern string FinishTime = "07:00"; //Конец работы

...

for(i = loopbegin; i >= 0; i--) {




//у нас уже есть канал, ждём, пока его пробьёт


if (isChannel) {


//double up0=a0*(i-chEnd)+b0+range0;


//double dn0=a0*(i-chEnd)+b0-range0;


double up0=a0*i+b0+range0;


double dn0=a0*i+b0-range0;


B3[i]=up0;


B4[i]=dn0;



if(StartTime!="00:00"
&& B3[i]>0
&& iTime(NULL,0,i)<StrToTime(TimeToStr(iTime(NULL,0,i), TIME_DATE)+" "+FinishTime))
continue;

//проверяем пробитие


//вверх


if (Open[i]>up0) {


Up[i]=up0;


Stop[i]=dn0;


Target[i]=up0+(up0-dn0)*(t0-1);


isChannel=false;


//continue;


}


//вниз


if (Open[i]<dn0) {


Dn[i]=dn0;


Stop[i]=up0;


Target[i]=dn0-(up0-dn0)*(t0-1);


isChannel=false;


//continue;


}


continue;


}


else
if(StartTime!="00:00"
&& iTime(NULL,0,i)<StrToTime(TimeToStr(iTime(NULL,0,i), TIME_DATE)+" "+StartTime)

&& iTime(NULL,0,i)>StrToTime(TimeToStr(iTime(NULL,0,i), TIME_DATE)+" "+FinishTime))

continue;

...

здесь, если StartTime="00:00", то ограничение по времени снимается.

Получается вот так: (задано: Nlin=100, r0=220)


 
 

а какие настройки для 5-ти значных пар? и 4-х значных? 

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