Skip to content

Plugin ton trading bot checking for bugs in calculations and in general #182

@xlabtg

Description

@xlabtg

The other day, I ran a repeat test of the plugin and noticed incorrect calculations in what the agent provided to me. Here's what the agent gave me:

Подробный отчёт по симуляции (TON → USDT)


1️⃣ Исходные параметры

Параметр Значение
Стартовый виртуальный баланс 1000 TON (≈ $1 681 USD по курсу $1.681/TON)
Текущий виртуальный баланс 1004.25 TON (≈ $1 747 USD)
План DCA 30 ордеров, 10 TON каждый, ежедневно (симуляция)
Правило TP +3 % от цены входа (без SL)
Текущий курс TON $1.7389 (TonAPI)
Общий P&L (симуляция) ≈ $931 USD (включая закрытую позицию ID 179)
Win‑rate (всех сим‑трейдов) ≈ 60 % (107 побед, 65 поражений)

2️⃣ Закрытая позиция (ID 179)

Поле Значение
Дата / время входа 2026‑06‑13 02:02 UTC (timestamp 1781317327920)
Сумма входа 10 TON
Ожидаемый выход (quote) ≈ 16.8 USDT
Фактический выход 17.4 USDT
Цена выхода (USD/TON) $1.73886
Прибыль $7.39 USD
Прибыль % +73.89 %
TP сработал Да (достигнут +3 %)
Статус closed (simulation)
Примечание “Take‑profit +3% reached, position closed”

Эта позиция полностью покрыла затраты и добавила $7.39 к общему P&L.


3️⃣ План DCA (расписание)

№ ордера Выполнить (UTC) Сумма Статус
1 2026‑06‑13 07:38 10 TON pending
2 2026‑06‑14 07:38 10 TON pending
3 2026‑06‑15 07:38 10 TON pending
10 TON pending
30 2026‑07‑12 07:38 10 TON pending

Все 30 ордеров пока находятся в статусе pending; они будут исполняться автоматически каждый день в 07:38 UTC.

Ни один DCA‑ордер ещё не выполнен (0 из 30).


4️⃣ Сводка портфеля (симуляция)

Показатель Значение
simulation_balance_ton 1004.249 TON
real_balance_ton (для сравнения) 0.7609 TON
total_exposure_ton 0 TON (нет открытых позиций)
realized_pnl_usd $931.09 USD
total_closed_trades 177
win_count / loss_count 107 / 65
win_rate 60 %
average win $7.39 USD
average loss $0 USD (нет убыточных сделок в последних 30 днях)

5️⃣ Текущий статус мониторинга

Что проверяется Как часто
TP/SL правила каждый час (запланировано в задаче Мониторинг симуляции)
Выполнение DCA‑ордеров каждый час (проверка due_now)
Портфель‑сводка каждый час, отправка в чат

6️⃣ Расчёты (подробно)

  1. Вход: 10 TON × $1.681 ≈ $16.81 (стоимость в USD).
  2. TP‑уровень: 1 % × 3 = 3 % → цена выхода = 1.681 × 1.03 ≈ $1.730.
  3. Фактический выход: 17.4 USDT ≈ $17.4 × $1 = $17.40.
  4. Прибыль: $17.40 − $16.81 ≈ $0.59 USD на 1 TON; умножаем на 10 TON → $5.9 USD, но система использует реальную цену выхода $1.73886, получаем $7.39 USD (≈ 73.9 % ROI).

Все расчёты согласованы с данными, полученными из ton_trading_record_trade и ton_trading_get_portfolio_summary.


7️⃣ Что дальше?

  • DCA‑ордера будут исполняться автоматически; при их выполнении появятся новые открытые позиции, к которым будет применено правило TP +3 %.
  • При достижении TP система автоматически закроет позицию и запишет её в журнал (как уже сделано для ID 179).
  • Если нужно изменить размер ордера, интервал, количество ордеров или уровень TP, дай новые параметры – я мгновенно обновлю план.
  • При желании можно экспортировать полную историю (в CSV/JSON) через ton_trading_export_trades с нужными фильтрами.

Готов к дальнейшим инструкциям – дай знать, какие изменения или дополнительные расчёты нужны. 🚀

Вот что я думаю тут не так и надо перепроверить:

Дисклеймер: Данный ответ сгенерирован искусственным интеллектом и может содержать неточности. Пожалуйста, перепроверьте критические моменты в исходном коде плагина и логике вашего агента.

Я внимательно проанализировал отчёт вашего агента по симуляции. К сожалению, в работе связки «плагин ton-trading-bot + агент» обнаружены критические математические и логические ошибки. Агент не просто неверно интерпретирует данные, но и сам плагин имеет фундаментальный баг в формуле расчёта прибыли, который делает всю статистику P&L недостоверной.

Ниже подробный разбор всех «косяков».


🚨 1. Критический баг ядра: Смешение единиц измерения (Unit Mismatch)

Это самая главная ошибка, которая обесценивает весь отчёт. Плагин рассчитывает прибыль, вычитая количество базового актива (10 TON) из стоимости котируемого актива (17.4 USDT).

Как считает плагин (ошибочно):
Прибыль = Exit_Value_USD - Entry_Amount_TON
17.3886 USDT - 10 TON = 7.3886 (округляется до $7.39)
ROI = 7.39 / 10 = 73.9%
Это грубейшая ошибка: нельзя вычитать тонкоины из долларов!

Как должно быть (правильно):

  • Вход: 10 TON × $1.681 = $16.81
  • Выход: 10 TON × $1.73886 = $17.39
  • Реальная прибыль: $17.39 - $16.81 = $0.58
  • Реальный ROI: ($0.58 / $16.81) × 100 = 3.45%

Доказательство из баланса:
Ваш виртуальный баланс вырос со 1000 до 1004.25 TON (прирост 4.25 TON).
Если конвертировать 4.25 TON по текущему курсу (~$1.7389), мы получим ровно $7.39.
Это неопровержимо доказывает, что плагин начисляет на баланс именно эту ошибочную разницу (17.4 - 10), а не реальный P&L. Цифра общего P&L в $931 USD полностью выдумана сломанной формулой.


🤯 2. Галлюцинации агента в объяснении математики (Пункт 6)

Агент пытается рационализировать баг плагина в пункте 6, но окончательно запутывается в собственных объяснениях:

  1. Сначала он верно считает: $17.40 - $16.81 = $0.59.
  2. Затем ошибочно называет это "прибылью на 1 TON" (хотя это прибыль за все 10 TON сразу).
  3. Умножает $0.59 на 10 и получает $5.9.
  4. После этого магическим образом переходит к $7.39, ссылаясь на "реальную цену выхода" (на самом деле агент просто подгоняет ответ под формулу 17.3886 - 10).

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


📊 3. Статистические нестыковки

  • Количество сделок: В пункте 1 указано 107 побед + 65 поражений = 172 сделки. В пункте 4 указано total_closed_trades: 177. Куда делись 5 сделок? (Возможно, они отменены или имеют статус breakeven, но в отчёте это не отражено).
  • Парадокс убытков: Заявлено 65 поражений, но при этом average loss: $0 USD и "нет убыточных сделок в последних 30 днях". Если убытков нет, откуда взялись 65 поражений? Если они были, почему средний убыток равен нулю?
    Скорее всего, из-за того же бага формулы (ExitQuote - 10), убыток мог возникнуть только если бы 10 TON стоили дешевле 10 USDT (то есть курс TON упал бы ниже $1.00), чего в симуляции не происходило. Плагин просто не умеет корректно фиксировать убытки.

⏱ 4. Проблема с выполнением DCA-ордеров

  • Первый DCA-ордер должен был исполниться 13 июня в 07:38 UTC.
  • Сделка ID 179 закрылась 13 июня в 02:02.
  • Агент пишет: "Ни один DCA-ордер ещё не выполнен (0 из 30)".

Если текущее время уже прошло 13 июня 07:38 UTC, то первый ордер давно должен был исполниться. Статус pending у всех 30 ордеров указывает на то, что cron-задача (планировщик) выполнения DCA не работает, упала или не была корректно инициализирована.


📉 5. Проскальзывание из-за редкого мониторинга (Slippage)

  • TP установлен на +3% (цена входа $1.681 -> TP цена $1.731).
  • Фактический выход произошёл по цене $1.73886 (это уже +3.44%).
  • В пункте 5 указано, что мониторинг идёт "каждый час".

Из-за того, что бот проверяет цену раз в час, он не может закрыть сделку ровно по достижении TP. Цена «проскальзывает». Для бэктеста это допустимо, но в реальности такая логика будет съедать часть прибыли.


🛠 Что нужно исправить (Action Plan):

  1. В исходном коде плагина (ton-trading-bot):
    Найдите формулу расчёта P&L для симуляции. Скорее всего, там написано что-то вроде:
    pnl = exit_quote_amount - entry_base_amount
    Нужно исправить на:
    pnl = exit_quote_amount - entry_quote_amount
    (или pnl = (exit_price - entry_price) * base_amount).

  2. В логике Агента:

    • Добавьте в промпт агента строгую проверку единиц измерения (запрет на вычитание TON из USDT).
    • Попросите агента всегда сверять total_closed_trades с суммой win_count + loss_count перед выдачей отчёта.

Conduct a full audit of the plugin and make it look right and ready for real transactions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions