> For the complete documentation index, see [llms.txt](https://erikino.gitbook.io/skintellect-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://erikino.gitbook.io/skintellect-docs/sell-modules/steam-seller.md).

# Steam Seller

Документация использования модуля Steam Seller

**Steam Seller** — модуль автоматической продажи предметов на **Steam Community Market**: выставление листингов, перевыставление по цене, подтверждения через SDA и ограничение состава инвентаря по вашим правилам.

> Перед запуском убедитесь, что аккаунты в SDA активны, прокси настроены (если используете), и выбран корректный **источник продаж** — от него зависит, какие скины модуль вообще тронет.

***

### Общая информация

#### Информация о модуле

Краткий обзор: статус модуля, подписка, ссылка на документацию

<figure><img src="https://3875082345-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7f9eJnTLDfJUD5xYmYpJ%2Fuploads%2F7yMDpYHytnUk7PP5ZWwH%2Fimage.png?alt=media&amp;token=c1a97b2e-1eec-4c38-90c3-92d92ca9a642" alt=""><figcaption></figcaption></figure>

#### Статус модуля

* **Отключён** — фоновые процессы модуля остановлены.
* **Включить модуль** — запуск обработки после проверки аккаунтов и лимитов.

Подпись «Важно знать» поясняет: отключение **не удаляет** настройки и не отменяет оплаченную подписку

#### Подписка

* срок действия и дата оплаты;
* **автопродление** и дата следующего списания.

***

### Аккаунты

Список Steam-аккаунтов, на которых разрешена работа **Steam Seller**.

Для каждого аккаунта:

* **статус** (активен / отключён / отключён в SDA и т.п.);
* **переключатель** участия аккаунта в модуле;
* **прокси** — отдельно на аккаунт (карандаш для редактирования). Если «Не настроено», трафик идёт без прокси для этого аккаунта

<figure><img src="https://3875082345-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7f9eJnTLDfJUD5xYmYpJ%2Fuploads%2FoOBdnLHLndoBgjdBdPSA%2Fimage.png?alt=media&amp;token=5ec9cb19-3c28-4af7-9a81-d3c487962bc3" alt=""><figcaption></figcaption></figure>

***

### Настройки алгоритма

В этом разделе задаётся логика, по которой Steam Seller рассчитывает цену листинга, обновляет активные продажи и решает, когда нужно перевыставить предмет

Главная настройка здесь — **выбор алгоритма**. От выбранного алгоритма зависит, какие дополнительные параметры будут использоваться: fallback при отсутствии стакана, профиль агрессии, ручной метод расчёта, Gap Guard и поведение при перепрайсе

Steam Seller работает с ценой в логике **buyer total** — то есть с итоговой ценой, которую видит и платит покупатель на Steam Market. После расчёта модуль переводит её в сумму, которую получит продавец после комиссии Steam

***

#### Выбор алгоритма

Доступны три режима:

* **Smart** — умный режим с защитой прибыли и fallback-логикой
* **Fast** — быстрый режим, который старается следовать текущему sell-стакану
* **Manual** — ручной режим, где вы сами задаёте формулу расчёта от стакана

Каждый режим подходит под разные задачи

***

### Smart

**Smart** — основной рекомендуемый режим для большинства сценариев. Он пытается выставить предмет конкурентно по рынку, но при этом не даёт цене упасть ниже допустимых ограничений по прибыли и защитным данным.

Этот режим лучше всего подходит для предметов, которые были куплены через модули Skintellect и имеют понятную цену входа. Smart использует не только текущий sell-стакан Steam, но и дополнительные защитные уровни

#### Как Smart считает цену

Упрощённо процесс выглядит так:

1. Модуль получает актуальный sell-стакан Steam.
2. Применяет защиту от аномалий стакана (**Gap Guard**).
3. Определяет конкурентную цену по верхним sell-уровням.
4. Если включена **игра в копейку**, подрезает текущий sell-top на заданный шаг.
5. Проверяет, не ниже ли цена минимально допустимого уровня по прибыли.
6. При необходимости учитывает профиль агрессии по возрасту предмета.
7. Если стакан недоступен, использует fallback
8. Итоговая цена сравнивается с текущим листингом, и при достаточной разнице выполняется перевыставление.

То есть Smart — это не просто «поставить дешевле конкурента». Это режим, который пытается совместить рыночную конкуренцию и защиту от убыточной продажи.

<figure><img src="https://3875082345-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7f9eJnTLDfJUD5xYmYpJ%2Fuploads%2FgxAQoHXZkwHMXsTmNlJm%2Fimage.png?alt=media&amp;token=97283946-0b3a-4a95-aca2-d408b2a691ae" alt=""><figcaption></figcaption></figure>

***

#### Fallback при отсутствии стакана в Smart

Fallback используется, если sell-стакан пустой, недоступен или после фильтрации не дал нормальной цены.

В Smart доступны несколько вариантов поведения:

**Большее из predict / median24**

Модуль берёт максимум из двух источников:

* прогнозной цены (`predict`);
* медианы за 24 часа (`median24`).

Это самый осторожный вариант среди fallback-режимов, потому что он не выбирает более низкую оценку, если есть более высокая альтернатива.

Подходит, если вы не хотите продавать предмет слишком дёшево при временно пустом стакане.

**Price Median 24h**

Цена берётся от медианы продаж/оценок за последние 24 часа.

Это более стабильный источник, чем моментный стакан, но он может запаздывать за быстрым рынком.

Подходит для предметов, где стакан иногда пропадает, но исторические данные остаются достаточно свежими.

**Predict**

Цена берётся от прогнозной модели.

Этот вариант может быть полезен, если прогноз хорошо работает на ваших категориях предметов. Но стоит учитывать, что прогноз — это оценка, а не фактический текущий sell-стакан.

**Не выставлять**

Если стакана нет, модуль не создаёт листинг.

Это самый строгий вариант. Он подходит, если вы хотите продавать только тогда, когда есть актуальный рынок, и не доверяете fallback-источникам.

***

#### Профиль агрессии цены

Профиль агрессии — одна из ключевых настроек Smart.

Он задаёт, насколько агрессивно модуль может снижать минимально допустимую прибыль в зависимости от возраста предмета.

На графике по горизонтали указан возраст предмета в днях, а по вертикали — допустимое отклонение/минимальный уровень прибыли.

Смысл такой:

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

Например:

* в первые дни модуль может держать цену выше и ждать покупателя
* через 10–15 дней цена становится ближе к рынку
* к 25–30 дню модуль может сильнее снижать цену, чтобы ускорить продажу

Это особенно полезно для предметов, купленных под Steam: модуль понимает цену входа и может рассчитывать минимально допустимую цену продажи.

<figure><img src="https://3875082345-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7f9eJnTLDfJUD5xYmYpJ%2Fuploads%2FHjnway9vr7uPhF3ssNnw%2Fimage.png?alt=media&amp;token=c41c204f-2edf-4a27-a740-86353058dc68" alt=""><figcaption></figcaption></figure>

***

#### Учитывать прогнозный профит

Переключатель **«Учитывать прогнозный профит»** влияет на то, как Smart использует прогнозную цену при расчёте минимальной прибыли.

Если настройка выключена, модуль ориентируется на заданный профиль агрессии и минимальную прибыль.

Если настройка включена, модуль дополнительно смотрит на прогноз и может смягчить требования к прибыли, если прогноз показывает, что рынок сейчас ниже ожидаемого уровня.

Практический смысл:

* без этой настройки Smart строже держит заданную кривую прибыли
* с этой настройкой Smart становится гибче и может быстрее адаптироваться к реальному рынку

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

***

#### Smart и игра в копейку

В Smart может использоваться настройка **«Игра в копейку»**.

Если она включена, модуль старается выставить цену чуть ниже текущего лучшего sell-ордера, используя заданный шаг подрезания.

Например:

* лучший sell: `100.00`
* шаг подрезания: `1 minor`
* целевая цена: чуть ниже текущего топа

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

Важно: даже если игра в копейку включена, Smart всё равно не должен опускаться ниже защитных уровней по прибыли и медиане, если они применимы.

***

#### Когда выбирать Smart

Smart стоит выбирать, если:

* предметы были куплены через Skintellect и известна цена закупа
* вы хотите продавать конкурентно, но не уходить в минус
* нужен fallback при пустом стакане
* нужна автоматическая логика снижения цены со временем
* вы хотите баланс между скоростью продажи и защитой прибыли

Smart — лучший режим «по умолчанию» для аккуратной автоматической продажи.

***

### Fast

**Fast** — быстрый режим, который делает упор на текущий рынок и sell-стакан.

Он проще Smart: модуль старается выставить предмет конкурентно относительно текущих sell-уровней, но не применяет расширенные защитные уровни Smart.

Главная идея Fast: быстрее попасть в рынок и чаще быть конкурентным по цене.

***

#### Как Fast считает цену

Упрощённо:

1. Модуль получает sell-стакан Steam.
2. Применяет свой Gap Guard для Fast.
3. Берёт верхние sell-уровни.
4. Если включена игра в копейку, подрезает текущий sell-top на заданный шаг.
5. Если стакан недоступен, использует fallback Fast.
6. Проверяет порог перепрайса и при необходимости перевыставляет листинг.

В отличие от Smart, Fast не использует:

* профиль агрессии цены;
* защиту по минимальной прибыли от закупа;
* прогнозный профит;
* дополнительный пол по медиане.

То есть Fast больше доверяет текущему рынку.

***

#### Fallback при отсутствии стакана в Fast

В Fast fallback обычно проще, чем в Smart.

Доступные варианты:

**Price Median 24h**

Если sell-стакан пустой или недоступен, модуль использует медиану за 24 часа.

Это помогает не останавливать продажу полностью, если текущего стакана нет.

**Не выставлять**

Если стакана нет, модуль пропускает предмет.

Этот вариант строже и безопаснее: Fast будет работать только там, где есть актуальный sell-стакан.

***

#### Fast и игра в копейку

Fast хорошо сочетается с включённой **игрой в копейку**, потому что весь смысл режима — быстро конкурировать за позицию в стакане.

Если включён undercut:

* модуль смотрит на текущий верхний sell
* снижает цену на заданный шаг
* при следующем обновлении снова проверяет, нужно ли перевыставиться

Если undercut выключен, Fast становится менее агрессивным и ближе к простому следованию текущему sell-уровню.

***

#### Когда выбирать Fast

Fast стоит выбирать, если:

* предметы ликвидные
* важно быстро занимать конкурентную позицию
* вы готовы сильнее следовать рынку
* защита прибыли не так важна
* вы хотите меньше сложной логики, чем в Smart

Fast хорошо подходит для быстрой распродажи или для предметов, где важнее скорость выхода в рынок.

***

### Manual

**Manual** — ручной режим для тех случаев, когда вы хотите полностью контролировать формулу расчёта цены.

В этом режиме модуль не пытается сам решать, какая цена «умная» или «защищённая». Он берёт sell-стакан, применяет выбранный метод расчёта и добавляет заданное смещение.

Manual полезен, если вы понимаете структуру стакана и хотите предсказуемую механику.

<figure><img src="https://3875082345-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7f9eJnTLDfJUD5xYmYpJ%2Fuploads%2F8KOKnFGVQOAPhDrW6CIw%2Fimage.png?alt=media&amp;token=a25c6fd1-5e32-47cc-b8b9-0349db9f4583" alt=""><figcaption></figcaption></figure>

***

#### Как Manual считает цену

Процесс:

1. Модуль получает sell-стакан.
2. Применяет Manual Gap Guard.
3. Выбирает базовую цену одним из методов:
   * Position
   * Average top-N
   * Median top-N
4. Добавляет смещение (`offsetMinor`).
5. Проверяет технический минимум цены.
6. Использует результат как целевую цену листинга.

Важное отличие от Smart и Fast: в Manual нет отдельного fallback на медиану или прогноз. Если после Gap Guard стакан не дал уровней, модуль не сможет корректно рассчитать цену по manual-формуле.

***

#### Метод Position

**Position** берёт цену по конкретной позиции в sell-стакане.

Например:

* позиция `1` — верхний sell-уровень
* позиция `2` — второй sell-уровень
* позиция `3` — третий sell-уровень

После выбора позиции применяется смещение.

Пример:

* цена на позиции 1: `74.50`
* смещение: `-1 minor`
* итоговая цена: немного ниже выбранного уровня

Этот метод подходит, если вы хотите жёстко ориентироваться на конкретную позицию в стакане.

***

#### Метод Average top-N

**Average top-N** берёт первые N sell-уровней и считает среднее значение.

Например, если `N = 3`, модуль берёт первые три цены и усредняет их.

Плюсы:

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

Минусы:

* может реагировать медленнее, чем Position
* средняя цена может оказаться не такой конкурентной, как верх стакана

***

#### Метод Median top-N

**Median top-N** берёт первые N sell-уровней и считает медиану.

Медиана лучше защищает от выбросов, чем среднее.

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

Этот метод подходит, если стакан неровный, но вы всё равно хотите рассчитывать цену только по текущему sell-стакану.

***

#### Позиция (N)

Параметр **Позиция (N)** используется в методе Position.

Чем меньше позиция, тем ближе цена к верхушке стакана.

* `1` — самый агрессивный вариант
* `2–3` — чуть более осторожный
* большие значения — глубже в стакане, менее конкурентно

***

#### Смещение (minor)

**Смещение (minor)** — это ручная поправка к рассчитанной базовой цене

* отрицательное значение делает цену ниже базы
* положительное значение делает цену выше базы
* `0` оставляет цену равной базе

В интерфейсе видно подсказку, например: `-1 minor ≈ -0.01 RUB`

Практический смысл:

* `-1 minor` — аккуратно подрезать выбранный уровень
* `0` — выставиться ровно по рассчитанной базе
* положительное значение — поставить дороже выбранной базы

***

#### Manual Gap Guard

Manual использует свой отдельный **Gap Guard**.

Он нужен, чтобы защититься от аномального первого уровня в sell-стакане.

Например, стакан может выглядеть так:

* `74.50`
* `99.50`
* `100.00`

Первый уровень сильно ниже остальных. Если модуль слепо возьмёт позицию 1, цена может получиться слишком дешёвой. Gap Guard проверяет разрыв между первым и следующим уровнем и может:

* пропустить аномальный уровень и перейти к следующему
* либо полностью отказаться от расчёта, если выбран строгий режим

Manual Gap Guard особенно важен, потому что в Manual нет fallback-логики Smart/Fast.

***

#### Когда выбирать Manual

Manual стоит выбирать, если:

* вы хотите точную формулу
* нужно повторяемое поведение
* вы понимаете, как устроен sell-стакан
* вы хотите сами управлять позицией, top-N и смещением
* вы не хотите, чтобы Smart добавлял защитные полы по прибыли или медиане

Manual — режим для опытной настройки.

***

### Сравнение режимов

| Возможность                     | Smart           | Fast           | Manual                 |
| ------------------------------- | --------------- | -------------- | ---------------------- |
| Ориентация на sell-стакан       | Да              | Да             | Да                     |
| Игра в копейку                  | Да              | Да             | Через смещение вручную |
| Fallback при отсутствии стакана | Да, расширенный | Да, упрощённый | Нет                    |
| Профиль агрессии цены           | Да              | Нет            | Нет                    |
| Защита по цене закупа / прибыли | Да              | Нет            | Нет                    |
| Учёт изменения профита          | Да              | Нет            | Нет                    |
| Ручной выбор метода расчёта     | Нет             | Нет            | Да                     |
| Отдельный Gap Guard             | Да              | Да             | Да                     |
| Подходит для новичков           | Да              | Средне         | Нет                    |

***

### Обновление цен

После выбора алгоритма важно настроить, как часто модуль будет пересчитывать цену и когда выполнять перевыставление.

#### Интервал обновления цен

Определяет, как часто модуль проверяет текущий рынок и пересчитывает целевую цену.

Меньший интервал:

* быстрее реагирует на рынок
* чаще проверяет стакан
* может чаще делать remove + relist

Больший интервал:

* меньше нагрузка
* меньше лишних перевыставлений
* цена может дольше отставать от рынка

***

#### Порог перепрайса

Порог перепрайса — минимальная разница между текущей ценой листинга и новой целевой ценой, при которой модуль выполняет перевыставление.

Если разница меньше порога, модуль не трогает листинг.

Это защищает от слишком частых remove + relist из-за минимальных колебаний рынка.

***

### Автоматически подтверждать листинги

Если включено, модуль использует SDA mobile confirmations для подтверждения новых листингов и перевыставлений.

Это важно для полной автоматизации. Без этой настройки листинг может быть создан, но будет ждать подтверждения.

### Расписание продаж (Work Calendar)

Steam Seller позволяет гибко настроить время активности модуля с помощью специального календаря продаж. Эта функция нужна, чтобы продавать предметы только в самое выгодное или безопасное время суток.

Как это работает:\
• Активные часы: Если текущее время входит в выделенный зеленый интервал на календаре, модуль работает в штатном режиме (выставляет предметы, пересчитывает цены и перевыставляет листинги).\
• Снятие с продажи: Как только наступает час, который не выделен в календаре, модуль автоматически снимает все выставленные предметы с продажи (делает массовый анлист) и уходит в режим ожидания до следующего активного окна.

Ключевые особенности:\
• Строго по UTC: Все часы в календаре фиксированы по всемирному координированному времени (UTC). Это избавляет от путаницы с часовыми поясами вашего браузера или сервера и гарантирует, что модуль сработает ровно тогда, когда нужно.\
• Удобная настройка: Вы можете легко выбирать часы кликом, выделять сразу несколько часов протягиванием, а также использовать кнопку "Применить ко всем дням", чтобы в один клик скопировать расписание одного дня на всю неделю.

<figure><img src="https://3875082345-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7f9eJnTLDfJUD5xYmYpJ%2Fuploads%2FydgqMibXR9BifNMlBFGm%2Fimage.png?alt=media&amp;token=0b016fc5-1062-4455-aef4-e687766af1db" alt=""><figcaption></figcaption></figure>

***

#### Источник продаж (Sales source)

Определяет, **какие предметы из инвентаря** модуль имеет право продавать. Типичные варианты (как на скриншотах):

1. **Только купленные для Steam**\
   Только предметы, купленные через ваши модули **именно под Steam**. Личные и старые вещи не трогаются.
2. **Покупки + свои предметы**\
   Продажа покупок под Steam **и** своих предметов из инвентаря, если они не дешевле заданного порога (порог задаётся в схеме настроек модуля — см. поля вроде минимальной цены для untracked / floor).
3. **Весь инвентарь**\
   Любые подходящие позиции, включая старые и купленные ранее.

> Если в вашей сборке подписи плиток отличаются (например, режим «всё, кроме купленного под другие маркеты»), ориентируйтесь на текст подсказки под каждой плиткой — смысл тот же: ограничить или расширить охват инвентаря.

<figure><img src="https://3875082345-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7f9eJnTLDfJUD5xYmYpJ%2Fuploads%2FkOwtkckHORv4Vq95jQ9T%2Fimage.png?alt=media&amp;token=3721825a-114a-4630-8e0a-d7940bb50d96" alt=""><figcaption></figcaption></figure>

***

### Предметы (Фильтры)

#### Белый список предметов

Если список **не пустой**, модуль работает **только** с перечисленными предметами (поиск + популярные пресеты, как в UI).

#### Чёрный список предметов

Исключения: выбранные скины **никогда** не попадут в продажу модулем.

Практика:

* whitelist — узкая стратегия «торгуем только этим»;
* blacklist — «всё кроме мусора/рисковых коллекций».

<figure><img src="https://3875082345-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F7f9eJnTLDfJUD5xYmYpJ%2Fuploads%2Fg55tnl6jFygAHvW9FZvT%2Fimage.png?alt=media&amp;token=4f5d67c7-076e-4ed7-b793-09a5c5d392c8" alt=""><figcaption></figcaption></figure>

***

### Частые вопросы

**Модуль включён, но ничего не продаёт**\
Проверьте источник продаж, whitelist/blacklist, статус аккаунта, наличие подходящих предметов в инвентаре и текущее окно в расписании продаж (возможно, сейчас "тихий час" и продажи приостановлены).

**Частые remove+relist**\
Увеличьте порог перепрайса или интервал обновления.

**Цена «прыгает» или странная в Manual**\
Проверьте Gap Guard, `N`, смещение и preview стакана.

**Не подтверждаются листинги**\
Проверьте SDA, тумблер авто-подтверждения и мобильные подтверждения Steam.
