Обсуждение статьи "Индикатор тепловой карты рынка на основе плотности простых чисел"

 

Опубликована статья Индикатор тепловой карты рынка на основе плотности простых чисел:

Инновационный индикатор на основе теории простых чисел помогает находить сильные уровни разворота, которые не видят другие трейдеры. Тестирование на 10 активах показало: развороты в математически значимых зонах происходят в 1.5-1.8 раза чаще. Пять практических сценариев применения с конкретными правилами для фильтрации ложных пробоев и точного входа в рынок.

Каждая цена на графике — это число. 1.0850 для EUR/USD. 2147.50 для золота. 67432 для Bitcoin. Мы привыкли думать о них как о результате спроса и предложения, но забываем простую истину: у каждого числа есть математические свойства, существующие независимо от рынка.

Простые числа распределены в числовом ряду неравномерно. Есть области, где они густо концентрируются, и есть "пустоты", где их почти нет. Эта неравномерность подчиняется глубоким математическим законам, которые математики изучают столетиями. Что если эта скрытая структура чисел влияет на поведение цены?

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

Автор: Yevgeniy Koshtenko

 
Здравствуйте. Как приобрести?
 
Besla #:
Здравствуйте. Как приобрести?
Никак. Это ведь статья. В ней есть исходник. Скачиваете, компилируете и получаете бесплатно.
 
Что-то прозрачность ни на что не влияет.
 
Как можно писать статью про круглые уровни цен и отрезать шкалу цен у всех скриншотов???
 

Недостатки исходной тепловой карты «Prime Density»

Предпосылка

  1. В расчёте не учитывались рыночные данные вообще. prime_density была чистой функцией MathRound(price × PriceMultiplier). В расчёт не входили данные о барах, объёмах или ценовом движении.
  2. Результатом был статичный «фоновый рисунок». Каждый прямоугольник охватывал интервал от startTime до TimeCurrent(), поэтому каждая ценовая строка имела один фиксированный цвет на всем графике. Ваши два скриншота точно это и демонстрируют — полосы, не зависящие от тренда, бокового движения или разворота цены.
  3. PriceMultiplier был произвольным и определял результат. Значения 10 000 и 100 000 дают совершенно разные наборы зон «высокой плотности простых чисел» при одинаковых ценовых данных. Реальная структура не должна меняться в зависимости от десятичного масштабирования.
  4. Местная плотность простых чисел практически не изменяется. Она следует закону ~1/ln(n) (теорема о простых числах), который остается практически постоянным в пределах торгового диапазона любого инструмента. Видимые полосы представляли собой шумы выборки в окне радиусом 100, отображенные с помощью палитры цветов, чтобы выглядеть целенаправленными.
  5. Параметр AnalysisPeriod носил почти чисто декоративный характер. Он изменял лишь масштаб рисования и ценовой диапазон — но никогда не влиял на оценку, поскольку оценка полностью игнорировала ценовые бары.
  6. Указанные механизмы не подтверждаются. Психология «круглых чисел» существует, но не связана с простотой; утверждение «алгоритмы используют числа» верно для любого индикатора; абзац о китайской теореме об остатках не имеет отношения к ценообразованию.
  7. Утверждение о соотношении 55–58 % к 35 % в опубликованном виде не поддаётся опровержению — отсутствуют данные о размере выборки, определении разворота и разделении данных на выборку и вневыборку.

Реализация

  1. Кэш простых чисел оказался бесполезным при указанных настройках. Максимальный размер кэша ограничен 100 000, но в документации рекомендуется PriceMultiplier = 100000 для 5-значных котировок → EURUSD достигает ~108 500, что превышает maxCachedPrime, поэтому каждый запрос переходил к пробовому делению по каждому числу. Для XAUUSD это ~21 000 000 — кэш вообще никогда не применяется.
  2. CountPrimesInRange линейно просматривал кэш, начиная с индекса 0, на каждом уровне. Очевидным решением был бинарный поиск по отсортированному массиву.
  3. Непоследовательная нормализация. minPrimeDensity вычислялся с фильтром > 0, поэтому уровни с нулевой плотностью исключались из минимального значения, но всё равно окрашивались в соответствии с ним.
  4. Прозрачность не давала никакого эффекта. Она лишь выбирала между STYLE_DOT и STYLE_SOLID — никогда не изменяла непрозрачность.
  5. Функция `ClearPreviousObjects ` использовала `StringFind(...) >= 0`, находя подстроку в любом месте имени, а не в качестве префикса.
  6. 500 объектов удалялись и создавались заново при каждом столбце, без вызова ChartRedraw().

    Реальные улучшения в финальной версии

    • Оценка рассчитывается на основе четырёх измеримых компонентов: отклонения тени (тень достигла линии, а тело — нет), консолидация тела (принята/пробита), распределённый тиковый объём и явный, включаемый бонус за круглые числа.
    • Пересчёт производится по скользящему окну закрытых баров, поэтому зоны фактически перемещаются вместе с ценовым движением.
    • Нормализация по минимуму-максимуму для каждого компонента с автоматическим исключением компонентов, не несущих информации, и индикатором activeComponents.
    • AutoScalePalette — установите значение false, и тусклая карта честно покажет вам, что структуры нет.
    • Совокупный спред, отображаемый в информационной панели в качестве проверки на вырожденность.
    • Реальная прозрачность за счет смешивания с фоном; повторное использование объектов вместо их постоянного обновления; ChartRedraw(); фиксаторы с однократным предупреждением.

Файлы: