Отображение фракталов.

 

Подскажите, как сделать так чтобы фракталы из CodeBase 'Fractals' отображались бы, так же как и в индикаторе по умолчанию. То есть на определенном расстоянии от бара при любых масштабах, а то в CodeBase они прижаты к бару, а все попытки сделать какой либо отступ приводят к ужасным результатам при смене таймфрейма или инструмента

 

Найдите в коде строки:

ExtUpFractalsBuffer[i]=dCurrent
ExtDownFractalsBuffer[i]=dCurrent

и замените на следующие:

ExtUpFractalsBuffer[i]=dCurrent+0.2*(High[i]-Low[i]);
ExtDownFractalsBuffer[i]=dCurrent-0.2*(High[i]-Low[i]);

Коэффициент 0.2 определяет процентный отступ от текущего размаха свечи. Его можно задавать по-своему усмотрению.

 
Спасибо за совет, но это немного не то. В стандартном индикаторе фрактал держится на определенном количестве пикселей от бара, а здесь все таки гуляет при смене масштабов или таймфреймов. Хотя и не так сильно чем при исльзовании Point.
 

Вот давно делал:

Файлы:
 
BoraBo писал(а) >>
Спасибо за совет, но это немного не то. В стандартном индикаторе фрактал держится на определенном количестве пикселей от бара, а здесь все таки гуляет при смене масштабов или таймфреймов. Хотя и не так сильно чем при исльзовании Point.

вы про фрактал немножко прочитайте..... на пикселях он держится или на барах?

Стандарт: 5-ти барный - т.е. фрактал на графике появляется через два бара после его возникновения...... далее поехали модификации - а это уже по отдельному заказу :)

 
Zhunko >>:

Вот давно делал:


Спасибо, я уже видел это ваше решение на форуме. Оно нормально работает при переключении на таймфреймах, но ползет при использовании очень различных по величине цены инструментов например EUR/USD и Gold, а стандартный фрактал везде отображается нормально. Я добавил в ваш код, чтобы отодвинуть значки фракталов подальше :

...

int Dist;

if (Period() == 1) Dist = 1;
if (Period() == 5) Dist = 1;
if (Period() == 15) Dist = 1;
if (Period() == 30) Dist = 2;
if (Period() == 60) Dist = 3;
if (Period() == 240) Dist = 5;
if (Period() == 1440) Dist = 15;
if (Period() == 10080) Dist = 60;
if (Period() == 43200) Dist = 80;

Dist = Dist*40;


..........


На Gold выглядит прилично, а EUR/USD хромает, а на каждый инструмент отписывать эти условия, что то не то.

Я просто пытаюсь сделать, чтобы разные точки Демарка имели всегда одинаковый отступ от бара как и фракталы, тем более фрактал это частный случай точки Демарка.

ЗЫ. Может заоодно покритикуете первого индюка.

Файлы:
_demark.mq4  6 kb