Разработчикам: прокомментируйте Исправление котировок задним числом - страница 2

 
joo:

Ну как, по вашему, возможно исправление истории котировок "передним" числом? :)

Если ДЦ поменял историю, что ж тут поделаешь, история синхронизируется. А как же иначе то?

Вопрос был совсем не об этом, а вот о чем:

Как сильно могут отличаться результаты эксперта при прогоне на серьезно измененной истории от реальной?

 
Jager:

1) Вопрос был совсем не об этом,

2) а вот о чем:

Как сильно могут отличаться результаты эксперта при прогоне на серьезно измененной истории от реальной?

1) Мой пост был адресован топикстартеру.

2) Возможно, Вы имели в виду "Как сильно могут отличаться результаты эксперта при прогоне на старой истории от серьезно измененной реальной?". Ведь изменённая история это и есть реальная история. Зависит от ТС. Разница может быть катастрофической, для депозита разумеется. :)

Ну что тут скажешь - нужно искать ДЦ, который поменьше "шалит" с котировками, вот и всё - это хотите услышать от разработчиков?

 
joo:

Ну как, по вашему, возможно исправление истории котировок "передним" числом? :)

Если ДЦ поменял историю, что ж тут поделаешь, история синхронизируется. А как же иначе то?

Вы как-то вопрос не поняли... В MT4 нет ни одного механизма, который позволит Вам это отследить!

Пускай правят на здоровье! Главное - это инструмент, который может это отследить.

Ещё я сейчас локализовал очередной баг в МТ4, сейчас оформлю и выложу

 
AlexSTAL:

Вы как-то вопрос не поняли... В MT4 нет ни одного механизма, который позволит Вам это отследить!

В МетаТрейдер 4 работает точно такой же механизм (IndicatorCounted), как в МТ5.

Но в МетаТрейдер 4 уровень контроля изменений истории слабее. Именно ради тотального контроля истории мы и запретили в МТ5 использование собственной истории (она будет постоянно перезаписываться с сервера).


 
joo:

1) Мой пост был адресован топикстартеру.

2) Возможно, Вы имели в виду "Как сильно могут отличаться результаты эксперта при прогоне на старой истории от серьезно измененной реальной?". Ведь изменённая история это и есть реальная история. Зависит от ТС. Разница может быть катастрофической, для депозита разумеется. :)

Ну что тут скажешь - нужно искать ДЦ, который поменьше "шалит" с котировками, вот и всё - это хотите услышать от разработчиков?

1. Извини, не заметил.

2. Дааа, чувствуется вопрос философский.

Я так понимаю реальная история для всех (абсолютно для всех!) разная, и не важно по какой причине, а есть история истинная или ( серьезно измененная ;) ), но одинаковая для всех.

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

При прогоне в тестере, на истинной истории результат будет отличаться, от результата торговли онлайн, то есть от реальной истории.

 
Renat:

В МетаТрейдер 4 работает точно такой же механизм (IndicatorCounted), как в МТ5.

Но в МетаТрейдер 4 уровень контроля изменений истории слабее. Именно ради тотального контроля истории мы и запретили в МТ5 использование собственной истории (она будет постоянно перезаписываться с сервера).

Я про это и говорю. Что встречаются моменты, когда алгоритмы MT4 дают сбой. Это доказано. Отрицать бессмысленно (Вы и не отрицаете). Эти моменты влияют только на другие определённые моменты. Так что рядовые пользователи с этим либо не сталкиваются, либо списывают на глюки.

Я же человек упёртый, и пока досконально не разберусь во всём - в покое не оставлю. У меня серьёзный подход к проблеме любого масштаба.


Теперь далее. Что бы не открывать на форуме MT5 новую ветку, напишу здесь. Надеюсь на Ваши комментарии.

Суть в чём. Берём терминал MT4, открываем график М1 (для скорости). В начале функции start() любого индикатора прописываем следующий код (буферы подправить под конкретный индикатор):

   int counted_bars = IndicatorCounted(), i;
   
   // Проверим и обнулим при необходимости индикаторные буферы
   if ( counted_bars != 0 )
      for (i = (Bars-counted_bars-2); i >= 0; i--)
        {
         if (UP[i] != EMPTY_VALUE)
           {
            Print("Фигня! А значение то в буфере UP не пустое! И равно оно: ", DoubleToStr(UP[i], Digits));
            UP[i] = EMPTY_VALUE;
           }
         if (DN[i] != EMPTY_VALUE)
           {
            Print("Фигня! А значение то в буфере DN не пустое! И равно оно: ", DoubleToStr(DN[i], Digits));
            DN[i] = EMPTY_VALUE;
           }
         if (OB[i] != EMPTY_VALUE)
           {
            Print("Фигня! А значение то в буфере OB не пустое! И равно оно: ", DoubleToStr(OB[i], Digits));
            OB[i] = EMPTY_VALUE;
           }
        }

и кидаем его на график. Через какое-то время (у меня получается что после определённого порога 127 баров) начинается сервисная процедура терминала по обрезанию истории:


при этом IndicatorCounted() как и положено становится равным 0.

Но на следующих барах выясняется, что в буфере добавленного нулевого бара может содержаться старое значение. Другими словами не происходит принудительная инициализация в ноль или EMPTY_VALUE.

Конечно же, Вы скажете, что программист должен сам обнулять переменные, но почему такое происходит только после сервисной процедуры урезания баров?

Т.е. в обычный момент (когда просто добавляются бары после открытия графика) все буферы принудительно проинициализированы. Можно конечно подумать, что выделяется заранее больший буфер и он инициализируется, а потом как будет, так будет....

 
Renat:

В МетаТрейдер 4 работает точно такой же механизм (IndicatorCounted), как в МТ5.

Но в МетаТрейдер 4 уровень контроля изменений истории слабее. Именно ради тотального контроля истории мы и запретили в МТ5 использование собственной истории (она будет постоянно перезаписываться с сервера).

Оба на! Вот это мне подфортило со скринами то!

Началась какая-то свистопляска:

Начали пропадать бары на графиках со скрина (появлялась надпись ожидание обновления). Индикаторы то появлялись, то исчезали.

И тут на тебе:

А такое как я выяснил ещё в MT4 - когда IndicatorCounted() не реагирует на какие-то изменения истории при малом периоде отключения (1-2 минуты): https://www.mql5.com/ru/forum/131128


Что делать будем?

 
AlexSTAL:

Что делать будем?

Четко формулировать проблемы и четко описывать в чем дело.

Я ничего не понял.

 
Renat:

Четко формулировать проблемы и четко описывать в чем дело.

Я ничего не понял.

Спасибо, что отвечаете!

Суть проблемы для MT4 детально описана в ветке: https://www.mql5.com/ru/forum/131128

По текущей ситуации я могу сказать, что выход за пределы чего-то произошёл:

при чём только по одной паре и сразу всех индикаторов, в том числе и типового ZigZag.

Писать в сервис-деск? Только о чём писать то?


Посмотрел - везде обращение к индикаторным буферам происходит

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

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

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


Причина обращения: