Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Что такое социальный трейдинг? Прочти статью и узнай!
peco
443
peco 2012.12.14 20:39 

Проблемма с индикатором 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 - показания обеих индикаторов совпадают всегда!

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

DmitriyN
2316
DmitriyN 2012.12.14 21:19  

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

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

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



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


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



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

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

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