Перерисовка индикатора: когда сигнал был доступен
Метка на историческом максимуме не доказывает, что она была видна в момент образования свечи. Запишите отдельно время самой свечи и время, когда условие впервые стало известно. Разница на экране требует проверки данных и правил, но сама по себе не доказывает обман или убыток.
Разделите расчет, рисунок и доступность
На незакрытом баре цена и рассчитанное по ней значение могут меняться. Метка pivot может появиться на прежней свече после того, как завершатся необходимые последующие свечи. Закрытие M5 не означает, что завершился часовой бар, который использует скрипт. Это разные механизмы и они не имеют одного универсального решения.
Запросите спецификацию: какое значение предварительное, какое считается подтвержденным, какие данные и сколько следующих баров нужны, может ли точка сдвигаться и когда создается уведомление. Название «без перерисовки» без этих условий не описывает поведение программы.
Проверьте причину, прежде чем делать вывод
В справке MetaTrader 5 для iPhone сказано, что последний сегмент ZigZag может меняться при поступлении данных. Это свойство описанной реализации, а не единый процентный порог для всех ZigZag и не доказательство поведения другого инструмента. Для Parabolic SAR (на английском) и пользовательского индикатора проверяйте отдельные правила и настройки.
Документация MQL5 описывает сброс prev_calculated при загрузке более глубокой истории или заполнении пропусков. Пересчет сам по себе не доказывает использование будущих цен: сначала сохраните версию программы, настройки и обе выгрузки входных баров.
Ошибка заглядывания вперед возникает, когда тест приписывает решение времени, на которое необходимые сведения еще не были доступны. Нарисовать точку на старой свече после подтверждения — графическое соглашение; принять ее за исполнимый вход в прошлом — отдельная ошибка времени.
Сохраните то, что поздний график может изменить
Выберите один инструмент и одну конфигурацию. Записывайте время наблюдения, время открытия бара и его состояние; фиксируйте первое появление, направление и значение сигнала. Сохраняйте поставщика данных, период, часовой пояс, настройки и версию. Не переписывайте старую запись под новый рисунок. Скриншот с инструментом и шкалой времени дополняет выгрузку, но не заменяет ее.
Сравните состояние во время формирования бара, после его закрытия, после закрытия требуемого старшего периода и после перезагрузки. Меняйте по одному условию. Пропуск в наблюдениях означает, что сигнал мог быть не записан; отсутствие записи не доказывает его отсутствия. Такой же журнал полезен при оценке платных сигналов.
Условный pivot: свеча 10:10, подтверждение 10:25
В вымышленной модели M5 максимум выбранной свечи должен быть строго выше максимумов двух завершенных соседних свечей слева и двух справа. Время ниже — начало свечи; предполагаются непрерывные данные без пропусков. Это заданное упражнение, а не проверка конкретного коммерческого индикатора. В этом примере все максимумы построены по Bid.
На узком экране прокрутите таблицу по горизонтали.
| Открытие | High | Что известно |
|---|---|---|
| 10:00 | 1.1000 | Первый левый сосед |
| 10:05 | 1.1010 | Второй левый сосед |
| 10:10 | 1.1040 | Свеча закрывается в 10:15; правых соседей еще нет |
| 10:15 | 1.1030 | Первый правый сосед закрывается в 10:20 |
| 10:20 | 1.1020 | Второй правый сосед закрывается в 10:25 |
Только в 10:25 можно подтвердить максимум 1.1040 по этому правилу. Метка может быть нарисована на 10:10 — на 15 минут раньше подтверждения. Сама свеча 10:10 закрылась в 10:15, то есть за 10 минут до подтверждения. Эти интервалы имеют разные точки отсчета.
Пусть первая доступная для условной продажи цена Bid после подтверждения равна 1.1018. Разница с историческим максимумом 1.1040 — 0.0022, или 22 пипса при пипсе 0.0001. Для 10 000 EUR это 22 USD разницы в ценовой составляющей результата до расходов. Цена выхода не задана: прибыль сделки здесь не рассчитана. Если максимум свечи 10:20 изменить на 1.1045 или на равные 1.1040, исходная точка не проходит строгое правило. Более высокий сосед сам еще не подтвержден новым pivot.
Изменился вход, а не обязательно алгоритм
Две условные выгрузки относятся к одним и тем же трем завершенным интервалам. В первой Close: 100, 102, 104; во второй: 100, 102, 101. Формула SMA(3) не меняется, но среднее становится 101 вместо 102. Причина корректировки данных не установлена и реальный поставщик не назван. Еще одна условная сверка: ряды 100, 102, 104 и 101, 101, 104 оба дают SMA(3) = 102. Результат совпал, хотя два входа изменились. Поэтому сравнение только конечной средней не доказывает неизменность исходных данных; сохраните и сопоставьте сами ряды.
На узком экране прокрутите схему по горизонтали.
Линии показывают версии входных цен; они не сравнивают два разных алгоритма. Изменился третий вход, формула осталась прежней.
Добавление данных, уведомления и Replay
Для append-теста сохраните завершенный префикс и результат, затем добавьте более поздние наблюдения, не изменяя ранние входы, и сравните значения, которые объявлены окончательными. Пример вымышленного правила: разделить каждую цену на максимум всего загруженного набора. При ранней цене 100 и максимуме 110 результат 100/110 ≈ 0.9091; после добавления 120 он становится 100/120 ≈ 0.8333. Ранний вход не изменился, но результат зависит от поздних данных. Если вместо этого использовать максимум, известный к каждому моменту, первое значение в обеих версиях равно 1. Один пройденный тест не проверяет все ветви кода.
В TradingView серверное уведомление использует сохраненную при его создании копию скрипта и настроек: последующее изменение графика не обновляет эту копию автоматически. Документация Bar Replay уточняет, что существующие серверные уведомления продолжают работать на данных реального времени. Поэтому запись из Replay нельзя автоматически считать историей серверных уведомлений.
Дополнительная условная проверка. На M15 в 10:30 завершилась свеча 10:15–10:30, но используемый часовой бар 10:00–11:00 еще формируется. Если правило требует его окончательный High, в 10:30 он еще не известен. Сопоставьте запись на 10:30 с записью после 11:00, сохранив версию входного ряда и настройки; само совпадение в одном случае не доказывает отсутствие иных расхождений.
Затем отделите доступность сигнала от исполнения: используйте фактическую доступную цену и отдельно учитывайте спред, возможное проскальзывание и расходы. См. проверку стратегии на исторических данных, walk-forward и определение SMA.
Формулируйте ограниченный вывод
В отчете укажите версию, набор и время данных, настройки, время появления и положение метки, а также точное изменение. Если ранний вход различается, сначала изучите его пересмотр; тест будущего дополнения требует одинакового префикса. Несколько неизменных наблюдений не доказывают постоянную стабильность, а стабильный сигнал не доказывает прибыльность после исполнения и затрат.
Следующий шаг
Проверка стратегии на исторических данных: сохраните исходные данные, версию программы и ограничения перед сравнением результатов.
Проверьте понимание
После перезапуска SMA изменилась, а выгрузка содержит другой Close той же завершенной свечи. Какой первый вывод обоснован?
Ответ и объяснения без JavaScript
Правильный ответ: Сохранить обе версии и отдельно выяснить изменение входных данных.
Доказано использование будущих цен.
Изменение входа само может изменить среднее. Для append-теста сохраните прежний префикс неизменным.
Доказано, что весь индикатор работает корректно.
Одна возможная причина расхождения не проверяет все ветви алгоритма.
Сохранить обе версии и отдельно выяснить изменение входных данных.
Верно. Сначала сверьте входы, затем исследуйте поведение программы на сопоставимом наборе.
Вопросы и ответы
Изменившаяся метка доказывает мошенничество?
Нет. Сначала проверьте правило, состояние свечи, момент подтверждения, версию и входной ряд. Разные механизмы могут давать похожую картинку.
Достаточно ли закрытия свечи на графике?
Не всегда. Условный pivot требует двух последующих закрытых свечей; старший период, используемый правилом, также может еще формироваться.
Короткая серия без изменений доказывает отсутствие repaint?
Нет. Она описывает только наблюденные условия. Сохраните исходные значения, проверьте неизменный префикс и сообщите границы теста.
Стабильный сигнал доказывает прибыльность?
Нет. Доступность сигнала, исполнение и расходы — разные вопросы. Цена выхода и стоимость должны быть определены для отдельного теста.
Источники и пределы применения
- TradingView Pine Script v6: Repainting
Открытые бары, запаздывающее нанесение меток, старший период и изменения набора данных; примеры этой статьи условные.
- MQL5 Reference: OnCalculate
Обнуление prev_calculated при загрузке глубокой истории или заполнении пропусков; не доказывает причину любого изменения.
- MetaTrader 5 для iPhone: ZigZag
Справка указанного приложения: последний сегмент может изменяться; другие реализации и параметры требуют отдельной проверки.
- TradingView Pine Script v6: Alerts
Копия скрипта и настроек создаваемого серверного уведомления и варианты частоты.
- TradingView: Bar Replay
Документация режима: существующие серверные уведомления используют данные реального времени.
- CFA Institute: Backtesting and Simulation
Открытое резюме упоминает look-ahead и survivorship bias; полный учебный текст не приписывается проверке.
- MQL5 Reference: Custom Indicators
Ссылка исходного материала; в этом узком проходе содержимое отдельно не проверялось.
- MQL5 Reference: Timeseries Access
Ссылка исходного материала; в этом узком проходе содержимое отдельно не проверялось.
- MQL5 Community: обсуждение repaint
Форум из исходной библиографии; не используется как доказательство утверждений о конкретном продукте.
Общие учебные примеры; свойства платформы указаны для названных документов и реализации. Условия конкретного поставщика и результат исполнения проверяются отдельно.