Задолбался уже. Спецы, объясните, пожалуйста!

 

Проблемма с индикатором Force Index (стандарным)! 

 Пытался его немного изменить и ни фига не выходит (вернее выходит да не то))). А обнаружил вот что!

 

Берем стандартный  Force Index и ничего не меняем в нем, а просто изменяем его название и бросаем в терминал как "другой" индикатор. 

Дальше вызываем оба индикатора из пустого советника советника, состоящей только из start() функции, но один через iForce(), а другой - через iCustom().

Печатаем в Print(); ! Соответственно, период, сглаживание и цена в обоих индикаторах соответствуют.

int start()
  {
//----
   double fi = iForce(NULL, 0, 1440,MODE_EMA,PRICE_CLOSE,1);
   double fic = iCustom(NULL, 0, "Force Index_test", 1440, 1, 0, 0, 1);

   Print("fi= "+DoubleToStr(fi,7)+"; ficustom="+DoubleToStr(fic,7));

//----
   return(0);
  }

 

Но в результате: данные обоих индикаторов совпадают, но только на малых периодах. Точно не определял, но скажем, до 1000.

А с периодом больше 1000 iCustom() выдает значение EMPTY_VALUE, тоесть:

21:54:27 2012.12.03 00:00 Force Index_test EURUSD,M1: loaded successfully
21:54:27 2012.12.03 00:00 eEmpty-for_testing EURUSD,M1: fi= -0.0001837; ficustom=2147483647.0000000
21:54:27 2012.12.03 00:00 eEmpty-for_testing EURUSD,M1: fi= -0.0001837; ficustom=2147483647.0000000
21:54:27 2012.12.03 00:00 eEmpty-for_testing EURUSD,M1: fi= -0.0001837; ficustom=2147483647.0000000
21:54:27 2012.12.03 00:00 eEmpty-for_testing EURUSD,M1: fi= -0.0001837; ficustom=2147483647.0000000
21:54:27 2012.12.03 00:00 eEmpty-for_testing EURUSD,M1: fi= -0.0001837;  

В дальнейшем через несколько тысяч записей показания индикаторов обратно начинают совпадать:

21:54:29 2012.12.13 23:57 eEmpty-for_testing EURUSD,M1: fi= 0.0000301; ficustom=0.0000301
21:54:29 2012.12.13 23:57 eEmpty-for_testing EURUSD,M1: fi= 0.0000301; ficustom=0.0000301
21:54:29 2012.12.13 23:57 eEmpty-for_testing EURUSD,M1: fi= 0.0000301; ficustom=0.0000301
21:54:29 2012.12.13 23:57 eEmpty-for_testing EURUSD,M1: fi= 0.0000301;

На периодах, то что я проверил, со значением 144 - показания обеих индикаторов совпадают всегда!

Вопрос к знающим. В чем может быть загвоздка?  Идентичные индикаторы, идентичные показатели, но на маленьких периодах.

 

2147483647=2^31-1  
Число Марена Мерсенна.

https://docs.mql4.com/ru/basis/types/integer

 
Период 1440. Наверно начальное значене для EMA разное. У одного наверно ноль или цена, у другого EMPTY_VALUE. Надо баров раз в 20 больше, чем период, тогда значения выровняются.
 
Integer:
Я только про вас подумал и тут вы.
 
Надо поgробовать в Force Index_test в инит добавить SetIndexEmptyValue(,0);
 
DmitriyN:
Я только про вас подумал и тут вы.



:) Дмитрий, сможете на фоно изобразить (https://www.youtube.com/watch?v=Vz10C6SlruE)  с 24-ой по 45-ую секунды?
 
Integer:
:) Дмитрий, сможете на фоно изобразить (https://www.youtube.com/watch?v=Vz10C6SlruE)  с 24-ой по 45-ую секунды? 
Лизанька растрепала. Только ей я говорил, больше никому. И сама пропала. Или вы действительно обладаете суперспособностями. 
 
DmitriyN:
Лизанька растрепала. Только ей я говорил, больше никому. И сама пропала. Или вы действительно обладаете суперспособностями. 


Да не, просто диедуктивный метод. Вы как то выкладывали ролик от пиратов, они мне нравятся, значит схожие вкусы. Эта композиция мне нравится, значит вероятно и вам понравится, а еще читал, что вы играете на фоно... воть! Никакой мистики. 
 
Integer:
Надо поgробовать в Force Index_test в инит добавить SetIndexEmptyValue(,0);



Спасибо за совет. В моем случае проблема была с кодом самого советника. Я так понял, что в индикаторе хоть  Марен Мерсенн, хоть нули (или нет) все равно будут. Но от SetIndexEmptyValue(,0) быстрее выход на правильные значения индикатора, чем при  EMPTY_VALUE  (здесь если принтить() все подряд, то на 40 мб текстовых строк на один запуск))))  . Проблема затрагивала только старт во время тестирования в тестере. 

А вот вызов начальных значений (потом выравниваются) через iForce() и iCustom(ForceIndex) - глючит вторая - отличаются, возможно и всязи с EMA. Непонятная странность.