Свойства индикаторных буферов

 
Привет всем! Есть задача, сделать фракталы по ценам закрытия... Все довольно просто и решение не составило проблем, но... так как я не часто работаю с кодом индикаторов как-то упустил такой момент: если индикаторный буфер установлен как стрелка (шрифт Wingdings) можно задавать ему точку привязки? Сейчас фрактал у меня рисуется прямо по цене закрытия а мне нужно верхний фрактал чуть поднять а нижний - опустить... Добавлять настройку смещения не практично так как при изменении ТФ его постоянно нужно корректировать... Надеюсь я понятно описал суть:)  
 
Кто знает как это реализовано в индикаторе "Фракталы Вильямса"?
 
Maksim Neimerik:
Привет всем! Есть задача, сделать фракталы по ценам закрытия... Все довольно просто и решение не составило проблем, но... так как я не часто работаю с кодом индикаторов как-то упустил такой момент: если индикаторный буфер установлен как стрелка (шрифт Wingdings) можно задавать ему точку привязки? Сейчас фрактал у меня рисуется прямо по цене закрытия а мне нужно верхний фрактал чуть поднять а нижний - опустить... Добавлять настройку смещения не практично так как при изменении ТФ его постоянно нужно корректировать... Надеюсь я понятно описал суть:)  

Я это делаю так

ExtMapBuffer01[i]=iHigh(NULL,period02, Bar)+uppoint*Point;
ExtMapBuffer02[i]=iLow(NULL,period02, Bar)-dwpoint*Point;
 
MakarFX:

Я это делаю так

Ну по факту вы просто добавляете смещение... При смене ТФ буфер смещается. Я имею ввиду если на М5 два пункта это допустим 20-30 пикселей, а на Н1 тех самых два пункта уже 3-5 пикселей... Понимаете о чем я? 

 
Maksim Neimerik:

Ну по факту вы просто добавляете смещение... При смене ТФ буфер смещается. Я имею ввиду если на М5 два пункта это допустим 20-30 пикселей, а на Н1 тех самых два пункта уже 3-5 пикселей... Понимаете о чем я? 

Я понял, но к сожалению других вариантов не знаю.

или можете создать case

 
Maksim Neimerik:

Ну по факту вы просто добавляете смещение... При смене ТФ буфер смещается. Я имею ввиду если на М5 два пункта это допустим 20-30 пикселей, а на Н1 тех самых два пункта уже 3-5 пикселей... Понимаете о чем я? 

ExtMapBuffer01[i]=iHigh(NULL,period02, Bar)+GetArrowInterval(2);

//=========== Функция =================================================================
double GetArrowInterval(double pr) { // pr - процент
  return((ChartGetDouble(0,CHART_PRICE_MAX)-ChartGetDouble(0,CHART_PRICE_MIN))/100*pr);
}
 

В индикаторных буферах этого никак не сделать. Разве что постоянно контролировать текущий масштаб графика и вычислять процент, как это выше показал Виталий. Чтобы уйти от этого способа, придется использовать стрелки в виде графических объектов. Там можно задать точку привязки.

Фракталы Билла Вильямса - это стандартный индикатор, который использует возможности самого терминала, недоступные в чистом MQL4.

 
Вариант с процентным соотношением вроде неплохо работает! Спасибо!
Причина обращения: