Trading settings
The Trading strategy tab controls how the automation runner buys and sells, which profit target it uses, how it protects against bad market conditions, and how aggressively it acts.
These settings can place real Steam buy orders, create listings, accept confirmations, and remove or reprice listings. No automation can promise returns, account safety, or stable market conditions. Start with low exposure, small item scopes, and conservative delays before scaling live trading.
This guide follows the same sections you see in the UI. Where helpful, the internal setting key is shown in code, but the UI label is the primary reference.
Do not configure every field manually on day one. Choose Safe, Balanced, or Aggressive, then tune only the settings you understand and need.
Scope: account or group
The selector in the top-right chooses where settings apply:
- Default — account-wide settings.
- Group · name — overrides for one item group only.
Group settings are layered on top of account settings, so one Steam account can run different strategies for different item sets.
How price is calculated
Pricing has two stages: a market algorithm calculates the base price, then Steam fees, target profit, and minimum-profit clamps are applied.
The sell price shown and sent to Steam is the amount the seller receives after Steam fees. The buyer pays the higher gross amount. Sending gross as the listing price would overprice the listing by roughly the fee.
Sale history is built from price snapshots collected every 6–8 hours, not from one-off Steam calls per item. Order-book data for OG and live guards is fetched at decision time.
Main settings
Game
| UI label | Meaning | Units | Default |
|---|---|---|---|
Game (appid) | Item catalog and game-specific guards. CS2 is 730, Rust is 252490. | select | account game |
Profit targets
| UI label | Meaning | Units | Empty / 0 means |
|---|---|---|---|
Target profit (profitPercent) | Desired margin on top of the base price. | % | no markup |
Min. profitability (profitPercentMin) | Lower margin bound. | % | no lower bound |
Min. profit (minProfit) | Absolute minimum profit per trade. Uses major currency units, not cents. | currency | no absolute minimum |
Financial protection
| UI label | Meaning | Units | Empty / 0 means |
|---|---|---|---|
Max total exposure (maxOrderExposure) | Hard cap for the value of all open buy orders. | currency | automatic balance-only guard |
If this cap is not set, the main guard is wallet balance × platform multiplier. When wallet balance is unknown, the planner treats it as 0 and skips buying.
Selling
| UI label | Meaning | Empty / 0 means |
|---|---|---|
Algorithm (sellAlgorithm) | Sell price algorithm. | — |
Price coefficient (sellAlgorithmCoefficient) | Multiplier applied to the algorithm result. | 1 |
Auto-undercut (removeFromSaleIfCompetitor) | Remove a listing when a competitor undercuts it, so the next sell cycle can relist. | off |
Buying
| UI label | Meaning | Empty / 0 means |
|---|---|---|
Algorithm (buyAlgorithm) | Buy price algorithm. | — |
Price coefficient (buyAlgorithmCoefficient) | Multiplier applied to the algorithm result. | 1 |
Order-book price offset (orderBidOffset) | For OG: percentage below the top buy order. Negative values bid above the top. | exactly at top buy order |
Order size, % mode (orderQuantityPercent) | Quantity = monthly sales × percent / 100, capped by max items per order. | preset/default |
Order size, fixed mode (orderFixedQuantity) | Fixed item count, ignoring liquidity percentage and cap. | 1 |
Position limit (maxInventory) | Max owned + open-order quantity per item. | no limit |
When Steam reports a full inventory or insufficient funds, buying is paused temporarily while selling continues. Item-level flags are not changed.
Market filters
| UI label | Meaning | Empty / 0 means |
|---|---|---|
Min. monthly sales (cntSalesMonth) | Liquidity filter. Missing sales data fails closed. | no liquidity filter |
Buy queue depth (ordersPlace) | Buy depth gate: limit = monthly sales × ordersPlace / 100. | off for 0, -1, or empty |
Sell queue depth (listingPlace) | Sell-side depth gate. | 0 = off |
Max items per order (maxItemsForOrders) | Cap for % order-size mode. | defaults to 1 |
Analysis depth
| UI label | Meaning | Empty / 0 means |
|---|---|---|
Price history days (countDayHistoryGraph) | Days of sale history used by algorithms. | default |
Outlier filter % (percentLimit) | Drops abnormal points outside a corridor. | no outlier filter |
Check buy orders (checkHistogramBeforeBuy) | Verify the live order book before buying. | off |
Check sell listings (checkHistogramBeforeSell) | Verify live listings before selling and undercut when safe. | off |
Trend protection
Trend thresholds are percentages. A strong downward trend blocks buying; selling existing inventory can continue.
| UI label | Meaning | Empty / 0 means |
|---|---|---|
| Month → Drop % / Growth % | Monthly trend thresholds. | off |
| Week → Drop % / Growth % | Weekly trend thresholds. | off |
| Day → Drop % / Growth % | Daily trend thresholds. | off |
Maintenance and safety
Maintenance runs automatically about once per hour.
| UI label | Meaning | Empty / 0 means |
|---|---|---|
Cancel if profit exceeds % (cancelOrderIfProfitMoreThen) | Cancels a stale buy order when potential profit becomes suspiciously high. Use high values such as 50%+. | off |
Reprice deviation % (repriceDeviationPercent) | Removes a listing whose price drifted from fresh market price; next sell cycle relists it. | 0 = repricing off |
Remove from sale after N days (removeFromSaleDays) | Removes live Steam listings older than N days, including listings created outside SteamMarketRunner. | off |
Cancel buy orders after N days (cancelBuyOrderDays) | Cancels old buy orders. | off |
| Remove even with active order | Allows old-listing removal even when a buy order exists for the item. | off |
| Keep sticker items | Do not auto-remove old listings with stickers. | off |
| Cancel orders on overstock | Cancel buy orders when your position is too large. | off |
CS2 sticker and float guards
These controls are shown for CS2 (appid 730) only.
| UI label | Meaning | Empty / 0 means |
|---|---|---|
Do not sell if stickers $ > (dontSellIfStickersPrice) | Block selling when sticker value exceeds the threshold. Uses major currency units. | no threshold |
| Do not sell if sticker streak > | Block when N identical stickers appear in a row. | off |
| Float guard | Enable float range checks. | off |
| Float min / Float max | Allowed float range; one boundary is enough. | no bound |
Sticker/float guards only fire when enrichment data exists. Without inspect data they are safe no-ops.
Trading intensity
| UI label | Meaning | Empty / 0 means |
|---|---|---|
Items per cycle (maxCandidates) | How many items one buy/sell cycle processes. Platform caps apply. | default 25 |
Delay between actions (requestDelayMs) | Pause between Steam mutations inside a cycle. Higher is safer but slower. | fastest allowed |
Choosing an algorithm
| Code / UI label | Basis | Best for |
|---|---|---|
| MS — most frequent price | mode of sale graph | stable liquid items |
| HG — high, median of daily highs | median daily high | selling near the upper range |
| HSG — safe high | minimum daily high | more conservative selling than HG |
| AVG — weighted median | sales center of mass | balanced buy/sell |
| LG — low, median of daily lows | median daily low | quick sell or cheap buy |
| BG — buy from daily lows | daily lows as buy price | aggressive low buying |
| OG — order book | top buy order plus offset | queueing relative to live top buy order |
Buy and sell algorithms are chosen separately.
Strategy presets
| Field | Safe | Balanced | Aggressive |
|---|---|---|---|
| Target profit | 12% | 8% | 4% |
| Min. profitability | 8% | 4% | 2% |
| Sell algorithm | HG | HG | AVG |
| Buy algorithm | LG | HG | HG |
| Order-book offset | 0.5 | 0 | -0.5 |
| Min. monthly sales | 20 | 5 | 1 |
| Week drop threshold | 10 | 15 | 30 |
| Day drop threshold | 3 | 5 | 10 |
What maintenance does
About once per hour, SteamMarketRunner can:
- cancel unprofitable or suspiciously stale buy orders;
- remove drifted listings for repricing by the next sell cycle;
- remove old listings after a configured age;
- cancel old buy orders.