38просмотров
82.6%от подписчиков
21 февраля 2026 г.
Score: 42
Судя по предоставленному коду, система не прогнозирует цену в классическом смысле (не предсказывает будущее значение цены). Вместо этого она прогнозирует будущее время, когда произойдет определенное событие, основываясь на сложной, жестко заданной математической модели, связанной с паттернами, которые пользователь отмечает на графике. Вот пошаговое объяснение того, как работает механизм, который в коде называется "прогнозом": 1. Исходные данные: Пары дат (Пользовательский ввод)
Пользователь вручную создает разметку на графике через диалог Управление парами дат (MarkerManager). Он выбирает две точки на графике: начало и конец некоего движения (тренда). Эти точки сохраняются в CSV-файлы (time_pairs_1m.csv, time_pairs_30m.csv и т.д.) с указанием времени, цены и индекса свечи. 2. Первичный расчет: Собака-Кот-Манул (DCM)
На основе отмеченных пользователем пар дат запускается расчет DCMResultsManager.calculate_dcm_results(). Этот метод берет временные индексы начала (idx1) и конца (idx2) из пары. Он применяет к ним серию жестко закодированных арифметических формул (например, FirstTimeGAS3 = idx2 + (idx2 - idx1), FirstFakeGAS15diff = ...). Результат: Для каждой пары дат генерируются три будущие временные метки (индексы), которые названы "Собака" (dog_time), "Кот" (cat_time) и "Манул" (manul_time). Эти результаты сохраняются в файлы dcm_results_.csv. На этом этапе предсказание — это просто результат применения формул к введенным пользователем точкам. 3. Усреднение: Выбор "животного"
Так как для одной и той же пары (например, для первой отмеченной позиции) есть результаты на разных таймфреймах (1м, 30м, 1ч, 4ч), программа их усредняет (AverageResultsManager). Пользователь выбирает, какие таймфреймы участвуют в усреднении. Для каждой позиции (1, 2, 3...) программа вычисляет среднее время для Собаки, Кота и Манула по всем выбранным таймфреймам. Ключевой момент: В диалоге усреднения пользователь должен выбрать, какое из трех животных (Собака, Кот или Манул) будет использоваться для финального прогноза по данной позиции, а также тип цепи (серия/параллель). Эти данные сохраняются в FINAL_RESULTS.csv. 4. Финальный прогноз: Корректировка
Самый сложный и, видимо, основной этап происходит в классе CorrectionDialog (кнопка "Корректировка: ГОЛОВА и КОНЕЧНОСТИ"). Ввод данных: Пользователь вводит номер позиции (ID) и загружает её. В интерфейсе появляются 8 групп полей для ввода дат (Группы 1-8), разбитые по категориям: ХВОСТ, ОРГАН, УСЫ, УШИ. Пользователь должен вручную заполнить эти поля датами, основываясь, вероятно, на внешних данных или своем анализе. Расчет разниц: Программа берет даты из этих 8 групп и вычисляет разницы между парами групп: diff12 (Группа 2 - Группа 1) — для ХВОСТА. diff34 (Группа 4 - Группа 3) — для УСОВ. diff56 (Группа 6 - Группа 5) — для ОРГАНА. (Это значение принудительно делается отрицательным). diff78 (Группа 8 - Группа 7) — для УШЕЙ. (Это значение принудительно делается отрицательным). Расчет тренда: Загружается информация о времени тренда для данной позиции из файлов пар дат (time_pairs_.csv). Вычисление "Остатка коррекции": Происходит ключевое вычисление, которое и дает итоговую цифру для прогноза. Берется половина времени тренда. Вычитается сумма абсолютных значений всех разниц групп (|diff12| + |diff34| + |diff56| + |diff78|). Результат — это remaining_correction (остаток коррекции в минутах), который может быть положительным или отрицательным. Он отображается в таблице результатов. Расчет прогнозного времени (метод calculate_forecast): Берется время выбранного животного для данной позиции из файла FINAL_RESULTS.csv. К этому времени прибавляется или вычитается общая разница (diff_total_minutes), в зависимости от животного: Собака или Манул: время_животного + общая_разница Кот: время_животного - общая_разница Далее применяется поправка, которая зависит от времени тренда: (время_тренда / 360) * 3.4046. Эта поправка всегда прибавляется к полученному выше времени. Итог: получается знач