Как проверить актуальность имеющейся в наличии истории котировок?

 
Недавно обнаружил следующую неприятную особенность МТ4.
Время от времени происходит выборочное исчезновение части истории котировок.
Например сегодня из минутной истории за последние 1,5 года внезапно исчезли котировки за февраль. При этом за январь и далее за март котировки присутствовали.
Это было обнаружено случайно после того как оптимизируя параметры эксперта затем захотелось посмотреть график баланса. При полученных оптимальных параметрах эксперта во время оптимизации и при записи соответствующих данных по оптимизации (кол-во сделок, прибыльность, математическое ожидание выигрыша и т.д.) я запустил эксперта для построения графика баланса и обнаружил резкое расхождение. То есть расхождение оказалось не только в разнице полученной прибыли (примерно в 2 раза), но также и в самом кол-ве сделок и так далее! При просмотре результатов работы эксперта было обнаружено, что сделок за февраль этого года вообще не было, хотя стратегия имеет в среднем 1-2 сделки в день. Потом посмотрев на график котировок я увидел, что котировок февраля НЕТ!!! Куда они делись, если вчера во время оптимизации были? Я естественно восстановил котировки от февраля месяца из архива. Но проблема от этого разумеется не исчезла. Примерно такая же ситуация была у меня уже неделю назад когда тестер начал показывать какой-то резко отфонарный результат по непонятной причине. И тогда также восстановление истории котировок решило проблему. Может быть для МТ4 история M1 размером чуть более полумиллиона баров является излишне чрезмерной? Какие могут быть предположения у разработчиков? Почему время от времени исчезает часть истории котировок? Если какие-то проблемы с жёстким диском, то почему не рушится весь файл котировок сразу? Никакие другие программы на компьютере проблем чтения-записи файлов пока что не показывают.

В связи с этим у меня возник такой вопрос. Можно ли каким-либо способом определить актуальность имеющейся истории котировок? То есть например запустить какой-нибудь скрипт, который мог бы входить в стандартный набор МТ4, который мог бы показать сколько баров истории отсутствует по непонятной причине и создать файл по отсутствующим барам. Проблем с созданием такого скрипта будет вполне достаточно, но его существование сможет сэкономить кучу времени, потраченного на оптимизацию параметров по некорректной истории котировок.

А может быть такие проблемы существуют только на моём компьютере и никто более с ними не встречался? Брокер InterbankFX. Сразу отмечу, что проблемы с исчезновением части истории котировок начали возникать с того самого дня, когда они запустили новый сервер в конце марта. Раньше таких проблем я не замечал! Что можно предположить в таком случае?
 
Пропадание котировок подтверждаю.
При включении терминала вдруг выяснилось, что пропал некоторый последний период (точно сказать не могу, что-то ок. месяца) Событие произошло в середине марта.
 
Я пока что для себя даже сделал простейший скрипт, который планирую запускать перед каждой оптимизацией дабы не терять зря время:
//+------------------------------------------------------------------+
//|                                                      history.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net"
  
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {int number_kotirovok=506231;
//----
    if(iBars("EURUSDm",PERIOD_M1)<number_kotirovok) MessageBox("Пропали котировки. Должно быть "+number_kotirovok+" Имеется в наличии "+iBars("EURUSDm",PERIOD_M1));
    else MessageBox("Всё в порядке с котировками!");
//----
   return(0);
  }
//+------


number_kotirovok - это число баров котировок после восстановления из бэкапа и подкачки свежих данных.
Его буду просто вносить в скрипт ежедневно перед началом тестирования.

Конечно же этот скрипт - это полнейший примитив, сделанный как превентивная мера для своевременного обнаружения исчезновения котировок. А так в перспективе хотелось бы иметь нормальный скрипт с интеллектом, который бы точно знал по дням недели когда котировки точно должны быть, а когда нет. То есть он должен иметь какие-то внешние файлы с записью допустимых пропусков истории (например выходные дни и время сбоев на сервере брокера по историческим данным). И соответсвенно при поступлении новых данных он бы записывал времена пропусков во внешний файл а потом при своём запуске говорил бы о возможных пропажах котировок. Может быть кто-то мог бы такое сделать? Это было бы полезно всем!

"Вопрос о взаимосвязи котировок разных таймфреймов"

 
По теме дырявости котировок уже имеется приятный скрипт:
Я хотел добавить комментарий к нему на том сайте, но почему-то не удаётся добавить комментарий туда, хотя вроде бы и залогинился и окошко для ввода имеется. Ну да ладно, надеюсь, что автор скрипта Bagadul и этот форум читает также. Если этот скрипт доработать таким образом, чтобы он мог выводить данные по разрывам в следующем виде, представленном на картинке, то можно было очень просто обнаруживать внезапные потери котировок по какому-либо одному таймфрейму. То есть если на старшем таймфрейме котироки отсутсвуют, а на младшем имеются, то налицо аномальное явление (на картинке обведено красным).



Я конечно же потестировал работу скрипта на имеющейся истории и увидел, что в принципе дыры на разных ТФ в основном соответствуют друг другу. Я использовал следующие параметры, на мой взгляд наиболее рациональные для поиска разрывов. То есть минимальное время для разрыва выбрано в 10 минут.
extern int bars_ignore_M1 = 10;//3 // (по умолчанию)
extern int bars_ignore_M5 = 2;//3
extern int bars_ignore_M15 = 1;//2
extern int bars_ignore_M30 = 1;//2
Если данный скрипт будет доведён до реализации описанной выше идеи, то его наличие в МТ4 станет просто НЕЗАМЕНИМОЙ вещью для тех, кто действительно хочет получать при оптимизации экспертов актуальные параметры, а не что-то отфонарное, поскольку лично я уже 2 раза потратив достаточное количество времени на оптимизацию в результате имею неопределённость, а не ответ на вопрос об оптимальных параметрах эксперта. А всё это произвошло из-за поздно обнаруженной выборочной потери части данных котировок.
 
То есть если на старшем таймфрейме котироки отсутсвуют, а на младшем имеются, то налицо аномальное явление (на картинке обведено красным).

Ув. solandr
Это не аномалия
"Вопрос о взаимосвязи котировок разных таймфреймов"
Renat 10.04.06 13:19

1. Если все нормально, то все данные для всех таймфреймов синхронизированы. НО каждый таймфрейм живет своей жизнью. Если кто-то удалит M1, то это никак не коснется остальных периодов.

поэтому нет необходимости представления всех таймфреймов в одном отчете, имхо

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

Скрипт holes_history_data_v2.mq4 реализован для представления отчета в формате .txt
 
Я тоже раньше так думал:
1. Если все нормально, то все данные для всех таймфреймов синхронизированы. НО каждый таймфрейм живет своей жизнью. Если кто-то удалит M1, то это никак не коснется остальных периодов.

Но в свете обнаружения непонятных исчезновений части котировок этим "кто-то" является МТ4. И мне лично задача по контролю исчезновений котировок нужна точно также как и собаке пятая нога. Возможно это особенности исключительно билда 191 и в 192 билде такого наблюдаться уже не будет? Но ведь мне нужно знать ответ на вопрос о достоверности результатов оптимизации именно сейчас, используя имеющиеся в реальности средства, а не то, что разработчики когда-нибудь пофиксят!

поэтому нет необходимости представления всех таймфреймов в одном отчете, имхо

На самом деле я сейчас делаю следующее. Время от времени я распечатываю дыры по разным таймфреймам и сравниваю их совпадение держа в руках несколько листков бумаги. Если даже такого никогда не обнаружится (выпадение старших ТФ при наличии более младших), то в любом случае отчёт хуже от этого не станет, а наглядность представления данных только улучшится.


Скрипт holes_history_data_v2.mq4 реализован для представления отчета в формате .txt

Действительно скрипт сделан для формата txt. И я прекрасно понимаю, что корректировка этого скрипта для вывода в указанную выше таблицу (CSV файл) по объёму работ сопоставима с созданием с самого начала уже написанного скрипта! Но если автор этого скрипта сможет написать новый скрипт для вывода данных в удобном виде, то данный скрипт будет ОЧЕНЬ востребован! И я думаю, что со стороны разработчиков будет очень рационально включить такой скрипт в стандартную поставку МТ4.
 
На самом деле я сейчас делаю следующее. Время от времени я распечатываю дыры по разным таймфреймам и сравниваю их совпадение держа в руках несколько листков бумаги.

Не вижу разницы в количестве листов при распечатывании n-листов (данные по M1+M5+M15+M30+H1+H4) с одного файла от распечатывании n-листов с (данные по M1,M5,M15,M30,H1,H4) 6 файлов, получим теже n-листов
Если даже такого никогда не обнаружится (выпадение старших ТФ при наличии более младших), то в любом случае отчёт хуже от этого не станет, а наглядность представления данных только улучшится.

С этим не соглашусь, отчет от этого только усложнится и станет неудобочитаем, расположение дыр разных таймфреймов в горизонтальной плоскости отчета станет неэффективным за счет разности временных интервалов (представь, что на одну дырку в H4 может приходиться до 120 дыроr M1)
Но если автор этого скрипта сможет написать новый скрипт для вывода данных в удобном виде...

Данный скрипт носит информативный характер и не предполагает "раздачу" данных отчета для МТС, поэтому реализовываться в (CSV файл) не будет, почему?Если кто-нибудь использует данные несуществующих в чарте баров для МТС, то это больше похоже на подгонку МТС под историю, но это уже отдельная тема.
Если Ваша система устойчива, то ей до бороды небольшие дыры в короткие интервалов (для этого и существует в скрипте фильтр), а вот если реагирует, то тут три варианта, первый: эта МТС - полное дрм, второй: выкинуть или заштопать историю (загрузить новую), третий: неправильный.
С уважением.
 
С этим не соглашусь, отчет от этого только усложнится и станет неудобочитаем, расположение дыр разных таймфреймов в горизонтальной плоскости отчета станет неэффективным за счет разности временных интервалов (представь, что на одну дырку в H4 может приходиться до 120 дыроr M1)

Ваша оценка данного вопроса сильно преувеличена. При поиске дыр в котировках больших 10 минут Вашим скриптом (параметры
extern int bars_ignore_M1 = 10;
extern int bars_ignore_M5 = 2;
extern int bars_ignore_M15 = 1;
extern int bars_ignore_M30 = 1; )
мы имеем следующие результаты  :
за период 10.2004-04.2006
H4: 6 дыр
H1: 15 дыр
M30: 18 дыр
М15: 24 дыры
M5: 28 дыр
М1: 28 дыр
Если Н4 имеет действительно немного дыр (часть из которых можно даже ещё и удалить списав на праздники), то количество дыр по остальным ТФ отличаются не более чем в 2 раза! А это вполне укладывается в достаточную наглядность представления данных. Для того чтобы организовать 120 дыр на М1 (длительностью от 10 минут и более) на 1 дыру в Н4 нужно специально преднамеренно это организовывать! Никакие случайные события, случившиеся самым естественным образом, такое количество дыр организовать не в состоянии (по данным за последние 1,5 года брокера InterbankFX).

Если кто-нибудь использует данные несуществующих в чарте баров для МТС, то это больше похоже на подгонку МТС под историю, но это уже отдельная тема.
Если Ваша система устойчива, то ей до бороды небольшие дыры в короткие интервалов (для этого и существует в скрипте фильтр), а вот если реагирует, то тут три варианта, первый: эта МТС - полное дрм, второй: выкинуть или заштопать историю (загрузить новую), третий: неправильный.

Я действительно не хотел бы поднимать эту уже измусоленно-зафлуженную тему о реагировании МТС на различные выборки котировок (при начале её обсуждения сразу же в течение короткого периода времени будет получено 3 страницы флуда в лучшем случае с повторением прописных истин, о которых уже неоднократно писалось в том числе и на этом форуме). Я в данной ветке поднял тему о контроле АКТУАЛЬНОСТИ (ДОСТОВЕРНОСТИ) котировок данных в свете обнаружения необъяснимых выборочных исчезновений котировок в МТ4. А это действительно очень РАЗНЫЕ темы! Поясню чуть подробнее для чего это нужно (хотя на мой взгляд уже и в самом первом посте это было описано). Представим себе до предела упрощённую ситуацию что имеется какая-то стратегия, которую оптимизируют на тестере (период М1(все тики)). При этом не обращают никакого внимания на то, что "кто-то" что-то "нечаянно" подтёр в котировках. Сидим, тратим изрядное количество времени на оптимизацию. И в итоге к примеру получаем оптимизированные параметры для прибыли стратегии в 45% годовых. Далее после этого мы так же "случайно" обнаруживаем, что в котировках имеются странные дыры, которых раньше определённо не было. Мы восстанавливаем отсутствующие котировки из бэкапа истории и проводим повторную оптимизацию параметров, тратя ещё раз такое же изрядное количество времени. В итоге мы имеем немного изменённые параметры (в пределах 5%) при которых стратегия даёт 60% годовых (670 сделок за 1,5 года). Вопрос следующий "Какие параметры стратегии выберете Вы для игры на РЕАЛЬНЫЕ деньги?" Или же для вас разница в 15% годовых абсолютно ничего не значит? В банках люди держат деньги всего лишь за 7% в год, а здесь мы можем выбросить на ветер целых 15% только из-за того, что "кто-то" что-то "нечаянно" подтёр в котировках! Не знаю как Вам, но я лично при наличии такого факта не остановлю поиски оптимальных параметров системы до тех пор пока не буду уверен в том, что имея в наличии только те возможности, которыми располагаю в НАСТОЯЩЕЕ время (текущий билд МТ4), что МТС с такими-то параметрами ДЕЙСТВИТЕЛЬНО могла получить такую-то прибыль на таком периоде времени. Ведь при наличии дыр в истории котировок параметры стратегии будут затачиваться под те же самые дыры, которых в РЕАЛЬНОСТИ в тот самый период не было! И соответсвенно в итоге вы получите НЕДОСТОВЕРНЫЕ данные, отличающиеся от того, что могло бы БЫТЬ В РЕАЛЬНОСТИ! Вот и всего навсего (То есть вопрос о том сливает стратегия или не сливает при разных подборках котировок в данной ветке вообще не ставился.)
Причина обращения: