<p>Понимаю, что бюджет маленький, но возможно кому-то будет действительно интересно заняться этой задачей.<br /><br />Техническое задание v1.0</p><p>Торговый бот для <a href="http://Pump.fun">Pump.fun</a> (торговля после миграции)</p><p>1. Общая концепция</p><p>Бот автоматически:</p><p>отслеживает токены, прошедшие миграцию (Graduated) на <a href="http://Pump.fun">Pump.fun</a></p><p>фильтрует их по заданным параметрам</p><p>ищет оптимальную точку входа не выше цены миграции</p><p>автоматически открывает позицию</p><p>управляет позицией (TP / SL / Time Exit)</p><p>ведёт детальное логирование и статистику</p><p>Поддерживается одновременная торговля несколькими токенами.</p><p></p><p>2. Источники данных</p><p>2.1 Список мигрировавших токенов</p><p>GET <a href="https://advanced-api-v2.pump.fun/coins/graduated?sortBy=creationTime">https://advanced-api-v2.pump.fun/coins/graduated?sortBy=creationTime</a></p><p>Данные сохраняются в структуру (JSON / in-memory / БД — на усмотрение разработчика)</p><p>***RPC задаётся из конфига.<br /></p><p>2.2 Данные по конкретному токену</p><p>GET <a href="https://frontend-api-v3.pump.fun/coins/{coinMint}">https://frontend-api-v3.pump.fun/coins/{coinMint}</a></p><p></p><p>3. Цена / Market Cap миграции</p><p>Приоритет: использовать официальный endpoint <a href="http://Pump.fun">Pump.fun</a>, если он существует (где отражается MarketCap миграции)</p><p>Fallback (обязательный):</p><p>migration_marketcap = SOL_price (её нужно подтягивать с любого источника, который отдаёт курс) * 410,8</p><p>Если официальный источник не найден — расчётная цена считается истиной</p><p></p><p>4. Фильтрация токенов (задаётся в конфиге)</p><p>Фильтры работают по логике AND.</p><p>Каждый фильтр может быть включён / отключён через конфиг.</p><p>4.1 Доступные фильтры</p><p>Время с момента миграции:</p><p>от X до Y секунд (по правилам площадки)</p><p>Market Cap:</p><p>от A $ до B $</p><p>Количество холдеров:</p><p>от C до D</p><p>Volume:</p><p>за всё время</p><p>от E до F</p><p>Если подходящих монет нет — бот продолжает polling.</p><p></p><p>5. Выбор монет и параллельность</p><p>Разрешена торговля несколькими монетами одновременно</p><p>Лимит на количество открытых позиций — опциональный, задаётся в конфиге</p><p>Приоритет выбора монет:</p><p>По времени (самые ранние)</p><p></p><p>6. Поиск точки входа</p><p>6.1 Мониторинг</p><p>Частота обновления: настраиваемая (по умолчанию 2 раза в секунду) (из конфига)</p><p>При задержках или ошибках API — логировать</p><p>6.2 Условия входа</p><p>Возможные режимы (выбор в конфиге):</p><p>Просадка от цены миграции (задаём в конфиге процент отката)</p><p>Агрессивный вход по маркету</p><p>6.3 Агрессивный вход</p><p>Если: отката(просадки) нет</p><p>цена(мкап) текущего токена ? цены(мкап) миграции<br /></p><p>7. Открытие позиции (покупка)</p><p>7.1 BID (размер позиции)(задаём в конфиге)</p><p>Поддерживаются:</p><p>Фиксированный BID</p><p>Динамический BID</p><p>7.2 Dynamic BID — Hybrid mode</p><p>Определения</p><p>start_bank — банк на старте сессии (чекается из кошелька для основного режима, для бэктест мода, задаётся из конфига)</p><p>wallet_value:</p><p>SOL_balance+ (стоимость всех открытых позиций по текущему Market Cap)</p><p>floor_wallet:</p><p>start_bank * floor_pct</p><p>Формула</p><p>effective_wallet = max(wallet_value, floor_wallet)</p><p>bid = effective_wallet * dynamic_bid_pct</p><p>bid = min(bid, max_bid_sol)<br />(Можно предложить свой вариант подсчёта динамического бида)</p><p>Правила</p><p>BID пересчитывается перед каждой покупкой</p><p>BID не может превышать max_bid_sol (задаём в конфиге)</p><p>Если SOL_balance < bid = остановить бота\уведомить о сливе</p><p>7.3 Дополнительно (задаём в конфиге)</p><p>Slippage — из конфига<br />Размер комиссии</p><p>MEV-защита — глобальная настройка (если доступна)</p><p>Частично исполненная покупка:</p><p>считается открытой позицией</p><p>допокупка остатка не производится</p><p>***что происходит с открытыми позициями при закрытии/краше бота ? <br />***возврат ботом комиссии за открытие аккаунта</p><p></p><p>8. Управление позицией (выход)</p><p>8.1 Условия выхода (приоритет)</p><p>Take Profit</p><p>Stop Loss</p><p>Time Exit</p><p>Все проценты считаются от Market Cap входа.</p><p>8.2 Take Profit</p><p>Возможна частичная продажа</p><p>% продажи задаётся в конфиге (то есть несколько тейк профитов)</p><p>8.3 Stop Loss</p><p>Всегда закрывает всю позицию</p><p>8.4 Time Exit</p><p>Срабатывает, если TP и SL не достигнуты по истечении заданного времени</p><p>8.5 Дополнительные возможности</p><p>Продать все позиции</p><p>Продать все позиции больше X $ (значение из конфига)</p><p>***механизм распродажи мунбегов ? Если остались монеты</p><p>9. Ограничения</p><p>Повторный вход в одну и ту же монету — ?</p><p>Дроблённый вход — ?</p><p></p><p>10. Логирование и аналитика</p><p>10.1 Формат</p><p>JSON\БД (на усмотрение разраба)</p><p>10.2 Для каждой позиции логировать (и в консоль и в файл\бд)</p><p>Token (mint, название)</p><p>Время входа и выхода</p><p>Размер позиции (SOL)</p><p>Market Cap входа и выхода</p><p>Тип выхода (TP / SL / Time)</p><p>Все комиссии:</p><p>сеть</p><p>покупка</p><p>продажа</p><p>MEV</p><p>Итоговый PnL</p><p>***Все покупки и продажи падают в тг</p><p>10.3 Статистика</p><p>Количество сделок</p><p>Winrate</p><p>Общий PnL</p><p></p><p>11. Конфигурация</p><p>Все параметры задаются через config-файл</p><p>Горячее изменение параметров — ?</p><p>Комиссии покупки / продажи задаются явно</p><p></p><p>12. Режимы работы</p><p>1-Основной режим (mainnet)</p><p>2-Simulation / Paper Trading (В идеале единственное отличие должно быть в отсутствии реальных транзакций)</p><p> ***восстанавливаемый ли процесс работы бота ?<br />***как бот будет реагировать если я руками продам позицию после его покупки ?<br />***многопоточность и параллельная работа с позициями ( объяснить\обсудить логику?) <br />***</p><p>13. Обработка ошибок</p><p>API ошибки ? retry</p><p>Недоступность данных ? лог + увед в телеграм</p>