Скачать MetaTrader 5

Ещё раз: ох уж эта функция IndicatorCounted()! Попила кровушки! Будьте бдительны! Индикаторы врут!

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Следи за новостями. Заходи на официальный канал нашей компании!
Aleksandr Chugunov
4817
Aleksandr Chugunov 2011.01.11 16:12 

В общем история началась с типового ЗигЗага. Появлялись у него периодически "горбы" и несовпадение с ценовыми экстремумами. Можно было списать на глюки алгоритма.

Но позже стало это проявляться и на других алгоритмах ЗигЗага:


Написал я быстренько сервисный индикатор (он немного не доработанный - содержит мелкие ошибки) и с его помощью выявил, что при кратковременных разрывах связи с сервером (около 1-2 минут) или же просто при обновлении котировок задним числом (факт скользкий, до конца не изученный), функция IndicatorCounted() никак не реагирует на изменение цены баров, уже просчитанных данной функцией.

А вообще, что эта за функция и с чем её едят?

В штатном режиме IndicatorCounted() всегда на 1 единицу меньше Bars на тике старого бара и на 2 меньше на первом полученном тике нового бара.


Так вот! Анализ показывает, что на пришедшем тике для нашей ситуации IndicatorCounted()=10, Bars=11 могут быть изменены цены (любые - и Close и Open и т.д.) для уже просчитанных баров - 4, 5 и даже 10! Вот к примеру лог, сгенерированный индикатором:

GetTickCount;Bars;IndicatorCounted;Nom;Open;High;Low;Close;Volume
195079749;66175;66173;1;1.29427;1.29429;1.29416;1.29423;33
195079749;66175;66173;8;;1.29433;;;43

Его трактовка такова: был когда то бар с индексом 1 и перечисленными ценами. И через некоторое время он уже стал баром номер 8 (естественный процесс при открытых торгах по инструменту)))))), с другой ценой High бара и при этом это произошло в обход функции IndicatorCounted()!!!

Такие ситуации не частое явление. Некоторые индикаторы (МА к примеру) будут просто содержать чуть не корректные данные (до полного пересчета). Но для некоторых индикаторов эти ситуации становятся смертельными (как например для ЗигЗага с верхнего скрина)!!!

В один из своих индикаторов я встроил защиту от такого безобразия... Но оно как Вы понимаете отнимает несколько индикаторных буферов и требует дополнительных вычислений на новом тике/баре.

Aleksandr Chugunov
4817
Aleksandr Chugunov 2011.01.11 16:14  
Примечание: в основном это касается конечно же периода М1 ....
Петр
6084
Петр 2011.01.11 16:19  
Алекс. Эта тема уже неоднократно обсуждалась. Что вы хотите услышать? Вопрос в чем?
Sergey Sartakov
1287
Sergey Sartakov 2011.01.11 16:20  
AlexSTAL:

"Будьте бдительны! Индикаторы врут!"


Вот так новость !

Что же теперь делать ?



Aleksandr Chugunov
4817
Aleksandr Chugunov 2011.01.11 16:26  
Svinozavr:
Алекс. Эта тема уже неоднократно обсуждалась. Что вы хотите услышать? Вопрос в чем?

Да собственно ни в чём...

Хотелось бы конечно, что бы разработчики подправили данную ситуацию, но МТ5 поставил жирный крест на МТ4...

Петр
6084
Петр 2011.01.11 16:36  
AlexSTAL:

Да собственно ни в чём...

Хотелось бы конечно, что бы разработчики подправили данную ситуацию, но МТ5 поставил жирный крест на МТ4...

Ясно. "Люди. Я любил вас. Будьте бдительны." // Ю.Фучек
Aleksandr Chugunov
4817
Aleksandr Chugunov 2011.01.12 16:20  
Svinozavr:
Ясно. "Люди. Я любил вас. Будьте бдительны." // Ю.Фучек


Админ
1402
Renat 2011.01.12 17:09 2011.01.12 17:09:23 #

Спасибо, будем проверять.

Мы как раз на следующей неделе готовимся выпустить накопительное обновление для МТ4. Постараемся разобраться.
hrenfx
3672
hrenfx 2011.01.13 14:02  

На MQL5 забанен, поэтому пишу здесь насчет "накопительного обновления для MT4".

Цитата отсюда:

Renat:

Я вчера, когда смотрел код, неверно выразился по поводу разной стоимость пункта в зависимости от направления.

Точнее сказать, что TickValue при конвертации в целевую валюту зависит от того, убыточна она или нет. То есть, если мы получили убыток в 1 пипс, то нам надо его выкупить по цене Ask, а если прибыль в 1 пипс, то продать по цене Bid. Оценочная функция MODE_TICKVALUE использует только один вариант.

Сегодня после проверок нашли проблему в конвертации кроссов в валюту депозита - спасибо за расследование. В МетаТрейдер 5 такой проблемы нет.

Мы исправим ошибку в крупном обновлении платформы MetaTrader 4 в феврале (нужно многое сделать синхронно).

Мне очень стыдно, извините.

Запустил представленный там проверочный скрипт на текущем билде MT4. Ничего не изменилось:

  1. MODE_TICKVALUE считается неправильно.
  2. Утверждения разработчиков, что параметр TickValue является оценочным по прежнему не соответствует действительности. Именно по этому параметру MT4 до сих пор считает прибыль. А это значит из п.1., что до сих пор MT4 считает прибыль неправильно.
  3. При перестановке входных параметров в функции OrderCloseBy меняется прибыль:
OrderCloseBy(Ticket1, Ticket2); // Если поменять местами тикеты, прибыль будет иной - ошибка!

MT5 не проверял. Замечу, что в тестере MT5 параметр для расчета прибыли TickValue зафиксирован. Т.е. результаты MT5-тестера носят оценочный характер не только из-за эмуляции тиковой истории, но и из-за неправильного расчета TickValue.

Например, если вы прогоняете советник на EURGBP в MT5 тестере, то для корректного расчета прибыли вам нужно иметь также данные по GBPUSD, чтобы конвертить GBP-прибыль в USD (валюта депозита). Этого, к сожалению, нет.

В альтернативном тестере по тикам такого не происходит. Т.е. если вы хотите тестировать EURGBP, то обязательно подцепится и GBPUSD.

P.S. Если кого-то волнуют данные казусы, скопируйте на MQL5-форум.

Виктор
Модератор
6559
Виктор 2011.01.13 21:33  
hrenfx:

На MQL5 забанен, поэтому пишу здесь насчет "накопительного обновления для MT4".


Проверьте, я не вижу, чтобы ник hrenfx был забанен на MQL5.
hrenfx
3672
hrenfx 2011.01.13 21:37  
granit77:
Проверьте, я не вижу, чтобы ник hrenfx был забанен на MQL5.
Там тоньше настраиваются права, нежели здесь: у меня нет права там отвечать публично, в ЛС и в сервисдеск. Остальное - не пробовал.
o_o
Модератор
23693
o_o 2011.01.13 21:44  
hrenfx:
Там тоньше настраиваются права, нежели здесь: у меня нет права там отвечать публично, в ЛС и в сервисдеск. Остальное - не пробовал.
а какие варианты остались?
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий