Встретил классного советника — не будь идиотом, проверяй как следует!

Встретил классного советника — не будь идиотом, проверяй как следует!

7 февраля 2026, 23:29
Sergey Porphiryev
2
4
📅 Shift Dates Scripts – Руководство пользователя

⚠ Важно: Остерегайтесь манипуляций в бэктестах

К сожалению, существуют мошеннические схемы, при которых разработчики встраивают в советник скрытую логику, позволяющую управлять тем, в какие исторические периоды он торгует, а в какие — нет.

Такая манипуляция может выборочно включать или отключать торговлю в определённые даты, создавая искусственно впечатляющую историю тестирования.

В результате стратегия выглядит крайне прибыльной в тестере стратегий, хотя реальная эффективность не соответствует показанной.

Хорошая новость: подобную манипуляцию очень легко выявить, если знать, что именно проверять.

Сдвигая исторические данные на другой временной период (с сохранением структуры дней недели), можно быстро проверить — действительно ли советник адаптируется к рынку или же опирается на жёстко прописанные фильтры дат.

Представленные ниже скрипты позволяют выполнить такую проверку безопасно и самостоятельно.

📌 Обзор

Данные скрипты позволяют сдвигать даты в CSV-файлах MQL5 (как формата Bars, так и Ticks) на заданное количество недель с сохранением дня недели.

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

✨ Основные возможности

  • Поддержка форматов Bars (OHLC) и Ticks (Bid/Ask)
  • Сдвиг по неделям (понедельник → понедельник)
  • Поддержка сдвига вперёд и назад
  • Работа с большими файлами (>3GB)
  • Отображение прогресса при длительной обработке
  • Автоматическое определение формата файла
  • Сохранение кодировки и окончания строк

📦 Доступные версии

🐍 Версия на Python

  • shift_dates.py

🖥 Версия PowerShell (Windows)

  • shift_dates.ps1 – см. в комментариях

🚀 Batch-запуск

  • shift_dates.bat – см. в комментариях

⚙ Требования

Python

  • Python 3.x
  • Дополнительные пакеты не требуются

PowerShell

  • Windows PowerShell 5.1 или PowerShell 7+
  • Дополнительные модули не требуются

▶ Использование

Python

Базовый запуск:

python shift_dates.py

С указанием файла:

python shift_dates.py filename.csv

PowerShell

.\shift_dates.ps1

.\shift_dates.ps1 filename.csv


📄 Поддерживаемые форматы

Bars (OHLC)

<DATE> <TIME> <OPEN> <HIGH> <LOW> <CLOSE> <TICKVOL> <VOL> <SPREAD>
2020.01.02 01:00:00 1517.97 1521.37 1517.95 1518.41 3598 0 2

Ticks (Bid/Ask)

<DATE> <TIME> <BID> <ASK> <LAST> <VOLUME> <FLAGS>
2026.02.05 01:00:00.523 4965.59 4968.23 6

Формат определяется автоматически по заголовку файла.


🧠 Принцип работы

  1. Поиск файла – сканируются CSV-файлы (кроме *_shifted.csv)
  2. Выбор файла – автоматический или интерактивный
  3. Определение формата – Bars или Ticks
  4. Обработка дат – используется timedelta(weeks=N)
  5. Выходной файл – создаётся файл с суффиксом _shifted.csv

📊 Производительность

  • <100MB: обработка за секунды
  • 1–3GB: несколько минут (с индикатором прогресса)
  • >3GB: оптимизированная буферизация (1MB блоки)

📌 Типовые сценарии использования

  • Проверка стратегий на разных периодах
  • Сравнение год к году (сдвиг на 52 недели)
  • Выравнивание данных из разных источников
  • Проверка на манипуляции датами

⚠ Ограничения

  • Поддерживается только формат YYYY.MM.DD
  • Версия PowerShell может иметь ограничения >2GB
  • Сдвиг только по неделям
  • Обрабатывается один файл за раз

💡 Рекомендации

  • Всегда делайте резервную копию исходного файла
  • Сначала протестируйте на небольшом файле
  • Для больших файлов используйте Python-версию
  • Проверьте выходной файл перед импортом в MT5


Файлы: