Skip to content

Configuration overview

WS Terminal's behavior is driven by a single configuration file (config_product.py) that the dashboard's Config page reads and writes for you. You rarely need to edit the file by hand — the Config page exposes every field as a form input with validation, save, and revert.

This page is the map: what the 12 sections are, which fields each tier can edit, and where your settings actually live on disk.

The two parameter-by-parameter walkthroughs are:

The 12 config sections

The Config page is laid out in the same order as the underlying file. Top to bottom:

# Section What it controls
1 Connection Broker host, port (paper vs live), client ID
2 Futures contract Symbol (/NQ default, /MNQ, /ES, /CL, etc.) and tick size
3 Trading schedule Detection window, trade window, end-of-day time
4 FVG detection Candle timeframe, min FVG size, entry depth, inverse mode
5 FVG selection How many FVGs to scan, which to skip, first-vs-sequential
6 Risk management Stop loss, take profit, breakeven, trailing stop
7 Multi-entry Pyramid count, add-on quantities, add-on SL mode
8 Daily limits Max trades per day, daily net stop
9 Position sizing First-entry contracts, max total contracts
10 Monitoring Heartbeat URL (uptime ping)
11 Dashboard & logging Dashboard port, log file, log level
12 App settings Auto-start on launch, trade log file

A 13th internal section ("Cloud API") governs whether completed trades sync to the public track-record page. That toggle is on by default and isn't surfaced on the Config page.

Tier gating — what Basic vs Pro can edit

Both tiers see the full Config page, but Basic licenses can only save changes to a small subset of fields. The rest of the form renders as read-only and shows the active preset's values.

What Basic can edit:

  • Section 1 — Connection (host, port, client ID)
  • Section 2 — Futures contract (symbol, tick size)
  • Section 9 — Position sizing (initial contracts, max contracts, per-add-on quantities)
  • Section 11 — Dashboard port and log level
  • Section 12 — Auto-start toggle

What Basic cannot edit (Pro unlocks all of these):

  • Section 3 — schedule changes
  • Section 4 — FVG detection settings, entry depth, inverse mode
  • Section 5 — FVG selection / first-vs-sequential
  • Section 6 — every risk parameter (stop type, TP type, breakeven, trailing)
  • Section 7 — pyramid policy (max add-ons, gating, add-on SL mode)
  • Section 8 — daily limits and net stop

The Config page surfaces a banner at the top on Basic licenses explaining the lock and linking to the upgrade flow. The bot otherwise runs identically — both tiers can use either of the two shipping presets without restriction.

Presets

Two presets ship with the bot:

  • WS Terminal Standard — the default recommended preset. ATR-scaled stop, fixed 200-point take-profit, ATR-scaled trailing stop, equal-risk pyramid add-ons.
  • WS Terminal Max — same FVG strategy, tuned for higher absolute returns at the cost of larger drawdowns. Tighter trailing activation; add-ons keep the original stop instead of recomputing for equal risk.

Both tiers can switch between these from the Config page's preset picker. Switching loads the preset's values into the form; you can review and click Save changes to apply.

Pro licenses additionally see custom presets. Pro can save the current form as a named preset, rename it, delete it, and switch between any number of custom presets. They live alongside the two built-ins in the picker. Basic does not see a save-preset button.

Where your config lives on disk

WS Terminal uses two locations:

Location What it stores
<install>\config_product.py The bot's compiled-in defaults (ships with the .exe)
%APPDATA%\WSTerminal\last_active_config.json Your live edits — overrides the defaults
%APPDATA%\WSTerminal\presets.json Your custom presets (Pro only)

The bot reads last_active_config.json first; any field not present there falls back to the compiled-in default from config_product.py. That means clearing last_active_config.json is a safe "reset to factory" — you don't lose anything except your custom overrides.

%APPDATA%\WSTerminal\ on most machines resolves to:

C:\Users\<your-username>\AppData\Roaming\WSTerminal\

This is the same folder that holds your license.json and trade_log.json (covered in Installation → Where the bot stores your data).

What survives an update — and what doesn't

When a new version of WS Terminal ships, you download the new zip and extract it (typically over your existing C:\WSTerminal\ folder, or to a fresh one).

Survives the update (lives in %APPDATA%\WSTerminal\):

  • Your active config (last_active_config.json)
  • Your custom presets (presets.json — Pro only)
  • Your license activation (license.json)
  • Your trade history (trade_log.json)
  • Your legal acknowledgments (acknowledgments.json)

Does not survive (replaced by the new zip's copy):

  • The two shipping presets (Standard / Max) — these may be retuned between releases. If a new release retunes them and you had one loaded, your last_active_config.json still holds your previous values until you re-load the new preset.
  • config_product.py itself — but only the defaults that you haven't overridden are affected.

Migrating to a new machine

Copy the entire %APPDATA%\WSTerminal\ folder from the old machine to the new one's %APPDATA%\WSTerminal\. Install the bot on the new machine and it picks up where you left off — license, config, presets, and history all intact.

Editing while the bot is running

Most fields can be saved while the bot is running and take effect immediately. The Config page surfaces an inline warning on any field that requires a restart or a stop-then-start.

The two notable restart-required cases:

  • Dashboard port — the dashboard can't hot-swap its own port. Save, then close and relaunch the app.
  • Active license tier change — if you upgrade or downgrade your Whop subscription mid-session, restart the bot to pick up the new tier's edit rights.

For risk and strategy changes, a safer pattern is stop the bot, edit, save, start again — that way no live trade is mid-flight when the new parameters become active.

Where to go next