Одинаковая дистанция между стрелкой и ценой на любом таймфрейме

 

Может быть кто то знает как добиться одинакового расстояния между стрелками и ценой на любом таймфрейме? 

Такая простая строка не годится (т.к. при смене таймфрейма на более старший - визуальная дистанция уменьшается практически до нуля):

buffer[shift] = iLow(_Symbol,_Period,shift) - 15 * _Point;

Period M1:

Period MN:


Вот пример без смещения, стрелка накладывается на свечу:



Вот пример, индикатор Fractals. Расстояние везде одинаковое:

Period M1:

Period MN:


Надеюсь, сумел обозначить проблему. Спасибо за помощь.

 
buffer[shift] = iLow(_Symbol,_Period,shift) - GetArrowInterval(0.8);
double GetArrowInterval(double pr) {
  return((ChartGetDouble(0,CHART_PRICE_MAX)-ChartGetDouble(0,CHART_PRICE_MIN))/100*pr);
 }
 

Если для mql5 то поможет

PLOT_ARROW_SHIFT

Смещение стрелок по вертикали для стиля DRAW_ARROW

int

 
Vitaly Muzichenko:

Спасибо. Способ интересный - но все равно не до конца решает проблему, так как дистанция будет зависеть от масштаба на котором был запущен индикатор..


 
vvebus:

Спасибо. Способ интересный - но все равно не до конца решает проблему, так как дистанция будет зависеть от масштаба на котором был запущен индикатор..

При смене масштаба нужно сделать перестроение через OnChartEvent()

У меня это работает прекрасно уже несколько лет

 
Alexey Viktorov:

Если для mql5 то поможет

PLOT_ARROW_SHIFT

Смещение стрелок по вертикали для стиля DRAW_ARROW

int

К сожалению, надо для MT4

 
Vitaly Muzichenko:

При смене масштаба нужно сделать перестроение через OnChartEvent()

У меня это работает прекрасно уже несколько лет

  • CHARTEVENT_CHART_CHANGE ?

Я заметил интересную штуку в Fractals. Значение стрелки и High совпадают (смещения нет). Как добиться такого результата? (что бы значения буфера не изменялись изза масштаба и т.д.) 



 
vvebus:
  • CHARTEVENT_CHART_CHANGE ?

Я заметил интересную штуку в Fractals. Значение стрелки и High совпадают (смещения нет). Как добиться такого результата? (что бы значения буфера не изменялись изза масштаба и т.д.) 



Специальные коды стрелок, которые точно указывают на цену и время. Mогут быть следующими величинами:

Константа

Значение

Описание

 

1

Восходящая стрелка с подсказкой направо

 

2

Нисходящая стрелка с подсказкой направо

 

3

Треугольник указывающий налево

 

4

Символ черточки

SYMBOL_LEFTPRICE

5

Левая ценовая метка

SYMBOL_RIGHTPRICE

6

Правая ценовая метка

Специальные коды стрелок не могут использоваться в пользовательских индикаторах при установке значения стрелки для линий, имеющих стиль DRAW_ARROW.

https://book.mql4.com/ru/appendix/objects

Типы и свойства графических объектов - Приложения - Учебник по MQL4
Типы и свойства графических объектов - Приложения - Учебник по MQL4
  • book.mql4.com
Тип объекта Значение Описание Трендовая линия по углу. Использует 2 координаты, либо первую координату и угол. Для установки угла линии (свойство OBJPROP_ANGLE) используется функция ObjectSet(). Линия Ганна. Использует 2 координаты, но ценовая составляющая второй координаты игнорируется. Для установки соотношения между временной и ценовой...
 
Алексей Тарабанов:

Специальные коды стрелок, которые точно указывают на цену и время. Mогут быть следующими величинами:

Константа

Значение

Описание

 

1

Восходящая стрелка с подсказкой направо

 

2

Нисходящая стрелка с подсказкой направо

 

3

Треугольник указывающий налево

 

4

Символ черточки

SYMBOL_LEFTPRICE

5

Левая ценовая метка

SYMBOL_RIGHTPRICE

6

Правая ценовая метка

Специальные коды стрелок не могут использоваться в пользовательских индикаторах при установке значения стрелки для линий, имеющих стиль DRAW_ARROW.

https://book.mql4.com/ru/appendix/objects

Не могли бы вы подробнее рассказать как это может решить мою проблему, ведь как минимум:

"Специальные коды стрелок не могут использоваться в пользовательских индикаторах при установке значения стрелки для линий, имеющих стиль DRAW_ARROW."

 
vvebus:

Может быть кто то знает как добиться одинакового расстояния между стрелками и ценой на любом таймфрейме? 

 

Для точного рисования стрелок используйте OBJ_TEXT

 
vvebus:

Не могли бы вы подробнее рассказать как это может решить мою проблему, ведь как минимум:

"Специальные коды стрелок не могут использоваться в пользовательских индикаторах при установке значения стрелки для линий, имеющих стиль DRAW_ARROW."

Отображать показания при помощи графических объектов. У графических объектов типа "текст" есть возможность выбирать точку привязки (свойство OBJPROP_ANCHOR). К примеру, для верхнего фрактала выбирается точка привязки снизу посередине. Соответственно, для нижнего фрактала - сверху посередине. 

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