Как сделать невидимую линию не влияющую на масштабирование индикатора - страница 3

 

Вот я взял Ваш индикатор и набросил на график


Взял как есть, ничего не меняя. Что не так с масштабом?

Менял символ на GBPCHF, как у Вас. Ставил разные периоды. Просматривал разные участки истории на графике, скроллил туда-сюда. В масштабировании только две линии участвуют.

Вы на каком билде свои скриншоты делали?

 
stringo:

Вот я взял Ваш индикатор и набросил на график


Взял как есть, ничего не меняя. Что не так с масштабом?

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

"Взял как есть" - значит #property indicator_buffers 3 и   IndicatorBuffers(4) - то есть последний буфер скрыт, как раз тот что масштаб искажает )))

Теперь сделайте #property indicator_buffers 4, не меняя ничего другого иии масштаб улетает...

 
evillive:

"Взял как есть" - значит #property indicator_buffers 3 и   IndicatorBuffers(4) - то есть последний буфер скрыт, как раз тот что масштаб искажает )))

Теперь сделайте #property indicator_buffers 4, не меняя ничего другого иии масштаб улетает...

Вообще-то не 3, а 2

#property copyright "Copyright 2014, Vitalie Postolache"
#property link      "https://login.mql5.com/ru/users/evillive"
#property description "MQL4 version of Fisher and Inverse Fisher Transform indicator"
#property version   "1.0"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_level1 0
#property indicator_levelcolor Silver
#property indicator_type1         DRAW_LINE
#property indicator_color1        Crimson
#property indicator_width1 2
#property indicator_type2         DRAW_LINE
#property indicator_color2        SteelBlue
#property indicator_style2        STYLE_DOT
#property indicator_width2 1
#property indicator_type3         DRAW_NONE
#property indicator_color3        clrNONE
#property indicator_width3 1
#property indicator_type3         DRAW_NONE
#property indicator_color3        clrNONE
#property indicator_width3 1

Изменил на 4 и увидел проблему с масштабированием.

Вставьте всего одну строчку. Именно это я демонстрировал в своём примере

int OnInit()
{
//--- indicator buffers mapping
  IndicatorBuffers(4);
  SetIndexBuffer(0,Fisher,INDICATOR_DATA);
  SetIndexBuffer(1,Trigger,INDICATOR_DATA);
  SetIndexBuffer(2,Value1,INDICATOR_CALCULATIONS);
  SetIndexBuffer(3,ma,INDICATOR_CALCULATIONS);
  SetIndexStyle(3,DRAW_NONE);
  //SetIndexBuffer(3,iFisher,INDICATOR_DATA);
  SetIndexLabel (0, "Fish");
  SetIndexLabel (1, "Trigger");
  //SetIndexLabel (3, "iFish");

И будет вам щястье

 

Начал думать, а почему это так?

А вот почему

#property indicator_type4         DRAW_NONE
#property indicator_color4        clrNONE
#property indicator_width4 1

У Вас ошибка копипаста в исходнике. Вы не назначили 4-ой линии стиль DRAW_NONE

 
stringo:

Начал думать, а почему это так?

А вот почему

У Вас ошибка копипаста в исходнике. Вы не назначили 4-ой линии стиль DRAW_NONE

То есть по-вашему вот это 

#property indicator_type4         DRAW_NONE
#property indicator_color4        clrNONE
#property indicator_width4 1

не равно вот этому:

SetIndexStyle(3,DRAW_NONE,EMPTY,1,clrNONE);

да? 

Функционально вроде как одно и то же. 

 
evillive:

То есть по-вашему вот это 

не равно вот этому:

да? 

Функционально вроде как одно и то же. 

Вы не совсем поняли. Я сначала, не разбираясь, воткнул вызов SetIndexStyle. Только потом увидел ошибку копипаста, исправил её, и убрал SetIndexStyle

И так, и так работает одинаково. Проверьте сами.

Первый вариант, как и все #property, записывает константные значения в заголовок ex4. При загрузке индикатора эти данные переносятся из заголовка в память индикатора, отведённую для свойств

Второй вариант позволяет управлять свойствами программно.

 
stringo:

Вы не совсем поняли. Я сначала, не разбираясь, воткнул вызов SetIndexStyle. Только потом увидел ошибку копипаста, исправил её, и убрал SetIndexStyle

И так, и так работает одинаково. Проверьте сами.

Первый вариант, как и все #property, записывает константные значения в заголовок ex4. При загрузке индикатора эти данные переносятся из заголовка в память индикатора, отведённую для свойств

Второй вариант позволяет управлять свойствами программно.

Да, вся проблема была в копипастовой ошибке, исправил, проблема с масштабом ушла.
Причина обращения: