Скачать MetaTrader 5

iCastom запаздывает

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Evgeny Potapov
1682
Evgeny Potapov  

Я написал советника на основе собственного индикатора, но почему-то

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

 Периодически возникает запаздывание: В момент, когда бар готов, советник обращается к содержимому нулевого элемента буфера индикатора и извлекает, например, ноль, хотя на экране 1.

А если на следующем баре обратиться к 1-му элементу буфера из советника, то там, как и положено: 1. 

 

Видимо индикатор не успевает обновитьбуфер до обращения советника.

 

Как это исправить? 

Dmitry Fedoseev
47055
Dmitry Fedoseev  
Вечная тема. Бедный iCustom()!
Evgeny Potapov
1682
Evgeny Potapov  
Integer:
Вечная тем. Бедный iCustom()!


Так дайте ссылку, где она раскрывается!

Я уже начитался всяких "особенностей написания индикаторов", но толку мало.

Что делать с запаздыванием обновления значения индикатора в буфере   - не нашёл.

Или может,   iCustom() - вообще нерабочая ф-ия?

Проще переписать индик. в функцию? 

Evgeny Potapov
1682
Evgeny Potapov  
Integer:
Вечная тема. Бедный iCustom()!


Если необходимо переделать индикатор в функцию, то как это делается:

1) Может ли функция в MQL4 возвращать  массив double чтобы передавать через него все линии, которые считает индикатор?

2) Корректно ли работает такая передача массива (или там опять спрятан  свой подвох)? 

3) Какова практика? Как практически вы решаете этот вопрос? 

Dmitry Fedoseev
47055
Dmitry Fedoseev  
А у меня нет проблем с iCustom().
Victor Nikolaev
Модератор
15945
Victor Nikolaev  
Eugene1:


Если необходимо переделать индикатор в функцию, то как это делается:

1) Может ли функция в MQL4 возвращать массив double чтобы передавать через него все линии, которые считает индикатор?

2) Корректно ли работает такая передача массива (или там опять спрятан свой подвох)?

3) Какова практика? Как практически вы решаете этот вопрос?


Лучше всего привести код индикатора в порядок, но .....Если индикатор перерисовывает, то все ваши сигналы исчезнут

Анатолий
645
Анатолий  
Как вариант, индюк рассчитывается по Close советник тестируется по Open
Victor Nikolaev
Модератор
15945
Victor Nikolaev  
storm:
Как вариант, индюк рассчитывается по Close советник тестируется по Open

Вернее всего что просто перерисовывает
Evgeny Potapov
1682
Evgeny Potapov  
Vinin:


Лучше всего привести код индикатора в порядок, но .....Если индикатор перерисовывает, то все ваши сигналы исчезнут


Вот я и мечтаю привести индикатор в порядок, но не знаю как...

Сейчас я просто делаю так:

  int i, // Индекс бара
  Counted_bars=IndicatorCounted(); // Количество просчитанных баров
  i=Bars-Counted_bars-1; // Индекс первого непосчитанного

while(i>=0) // Цикл по непосчитанным барам
{

 

 Но не всегда получаю свежий результат

 

А в советнике у меня:

 

if (SETORDERS && NewBar()) {

 

где: 

int NewBar() {
  if (ttt== Time[0]) return (0);
  ttt= Time[0];
  return (1);
}

Что мне исправить чтобы иметь всегда свежий результат от индикатора? 

Victor Nikolaev
Модератор
15945
Victor Nikolaev  
Eugene1:


Вот я и мечтаю привести индикатор в порядок, но не знаю как...

Сейчас я просто делаю так:

int i, // Индекс бара
Counted_bars=IndicatorCounted(); // Количество просчитанных баров
i=Bars-Counted_bars; // Индекс первого непосчитанного

if (i>1) i=....

while(i>=0) // Цикл по непосчитанным барам
{

}

Но не всегда получаю свежий результат

А

Что мне исправить чтобы иметь всегда свежий результат от индикатора?

Evgeny Potapov
1682
Evgeny Potapov  

Vinin:

int i, // Индекс бара

Counted_bars=IndicatorCounted(); // Количество просчитанных баров 
i=Bars-Counted_bars; // Индекс первого непосчитанного

if (i>1) i=i-1; else return(0);

while(i>=0) // Цикл по непосчитанным барам
{

}

Если я правильно понял - это имеется в виду

Растолкуйте, пожалуйста, подробнее!

Я не могу понять самостоятельно.

В моём понимании это исправление приведёт лишь к тому, что индикатор не будет пересчитываться на каждом тике - только и всего.

Он пересчитатся только с приходом нового бара.

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

Или (скорее всего) я по-крупному чего-то не понимаю. 

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий