Bot Settings: Trade Conditions and Entry Filters
The Trade Conditions section is the gatekeeper of the bot form: every setting here decides whether an entry is allowed to happen at all, from daily trade caps to market-based entry filters.
Trade limits and entry gates
The top of the section is a row of independent gates. Each one has its own Enabled toggle, and a trade must pass every enabled gate before it opens.
Entry Filters
The master switch for the underlying, VIX, and custom entry filters further down the section. When it is off, none of those filters are evaluated. The Event Day Filter has its own separate Enabled toggle. When Enter By in Trade Entry is set to When Triggered, the Entry Filters toggle is locked: entry filters are not evaluated for webhook and Launch Now entries, so switch Enter By back to Bot Settings if you want them.
Daily and concurrency caps
| Setting | Range | What it limits |
|---|---|---|
| Max Concurrent Trades | 1 to 15 | Total open trades allowed at once, including webhook and launch-on-stop entries. Especially important for Multi-Entry bots and Staggered Days entries, which can hold several positions at the same time. Webhook entries also draw on an account-wide pool shared by all your bots, described in Control Bots Remotely with Webhooks; whichever limit is reached first stops the entry. |
| Max Trades Per Day | 1 to 50 | How many trades the bot may open in one day. Does not include trades you launch yourself. |
| Max Profit Targets Per Day | 1 to 50 | How many profit targets may fill before the bot stops opening new trades for the day. |
| Max Stops Per Day | 1 to 50 | How many stop loss closings may occur before the bot stops opening new trades for the day. |
Min Trade Value and Max Trade Value
Dollar bounds on the value of the position itself. The bot will only attempt to open a trade whose price is at or above the minimum and at or below the maximum. These price checks run against live pricing on every entry, including webhook, Launch Now, and triggered entries.
Short/Long Ratio Limit
Min and Max bounds on the short/long ratio: the sum of the mark price of all short legs divided by the sum of the mark price of all long legs. A ratio of 2.0 means the shorts are worth twice the longs; 0.5 means half. The trade only enters when the ratio at entry pricing is greater than the Min bound and less than the Max bound. Leave either bound blank to ignore it. Like the trade value bounds, this is checked on every entry type.
Check Closed First
A safety switch. When enabled, the bot only opens a new trade after every trade opened that day has closing trades assigned to it, so the bot is certain the previous trade actually closed rather than the position simply going missing from a brokerage report. If a trade was closed outside tradeSteward, you may need to assign the closing trade to the bot's strategy on the Trade Log page (see Your Account Trade Log) before the bot will open again. Disable it if you want the bot to fire a new order whenever a position is detected as missing or closed. On a Multi-Entry bot this runs per entry time, so each entry waits only on its own trades, not on the other entries.
Open as Credit or Debit
Choose Any, Credit, or Debit. Credit only opens the trade if it would fill for a net credit; Debit only for a net debit; Any opens regardless.
Opening Quote
Chooses which tick counts as the underlying's opening quote for the day: the 9:30:05 tick or the First Tick of the day. This applies to every entry filter that references the open and to the opening quote recorded for the bot's trade. The two values can differ meaningfully on gap mornings; Opening Quote: First Tick vs 9:30:05 covers why, with the data behind the choice.
Event Day Filter
Its Enabled toggle reveals the mode and event selections described next, independently of the Entry Filters toggle. Off means this filter does not restrict trading on any day.
Event Day Filter modes and selections
Shown when Event Day Filter is enabled. Under Filter Behavior, choose the rule the event boxes are the exception to:
- Do Not Trade Selected Days (the default): every day passes this filter except the event days you select, which are skipped.
- Only Trade Selected Days: every day is blocked except the event days you select, which are the only days that pass this filter.
Then select the events the mode applies to:
- FOMC Press Conferences, Monthly CPI Report, Monthly OPEX, Monthly Jobs Report, and GDP Release: each offers Day Before, Day Of, and Day After toggles.
- Last Trading Day of the...: separate toggles for the Non-Quarter-End Month and the Quarter. A month that ends a quarter counts only as the Quarter, never as both.
- First Trading Day of Month and Early Close Day: single toggles, with no Day Before or Day After.
This filter gates the bot's scheduled entries. Launch on Stop, Launch Now, webhook and add-to-serial entries, and partial fill completions, are not blocked by it.
For a bot that skips FOMC and CPI release days, leave Filter Behavior on Do Not Trade Selected Days and select only their Day Of boxes. For a bot that trades only on CPI release days, choose Only Trade Selected Days and select only Monthly CPI Report: Day Of. There is no separate All Other Days toggle; Filter Behavior controls every day outside your selections.
With no events selected, Do Not Trade Selected Days does not restrict trading, and Only Trade Selected Days cannot be saved because the bot would never open a trade. Selecting every event under Only Trade Selected Days still skips ordinary days. The key above the event boxes names both outcomes, and the live summary under the selections describes the finished rule.
The calendar of event days themselves lives on the Event Days and Market Holidays page.
Underlying Entry Filters
Shown when Entry Filters is enabled. Most filters here share one pattern: a Greater Than bound and a Lower Than bound, each with its own On switch, so you can require a move above a floor, below a ceiling, or inside a band. For the change-based filters, input the change from the first time to the second time: positive if up, negative if down.
Intraday Change, One-Day Change, and Overnight Gap
Underlying Intraday Change compares the current price to today's open. Underlying One-Day Change compares to the prior close a full day back. Underlying Overnight Gap compares the prior close to today's open. All three take percent bounds.
Underlying Market Value Range
Plain price bounds: only enter when the underlying trades above the Greater Than value, below the Lower Than value, or between the two.
Underlying Moving Average Range
Only enter when the price sits a chosen percent above or below a moving average you define:
- Moving Average Type: Simple or Exponential.
- Period Type: Daily at Close, Daily at Current Time, Hourly, or Minute.
- Periods: how many periods build the average.
- Period Length: the duration of each period, only for Hourly and Minute period types. For a moving average on 5 minute candles, set it to 5.
Then set the bounds: open the trade when the underlying market price is greater than or less than your chosen percent above (below) the moving average.
Underlying Moving Average Crossover
Builds two moving averages with a shared type and period type: Periods in Moving Average 1 and Periods in Moving Average 2. The trade opens only while Moving Average 1 is Above or Below Moving Average 2, your pick of direction.
Underlying RSI
Gates entry on the relative strength index. Choose the RSI Type (Wilders, Simple, or Exponential), the Period Type, the Periods, and the Period Length for Hourly and Minute periods, then open the trade when the RSI is greater than or less than your bounds.
Underlying Opening Range Breakout
The ORB filter watches the range the underlying sets right after the open, then gates entries on whether price has escaped it.
- Breakout Direction: base the breakout on the Opening Range Higher side, the Lower side, Either side, or Both sides.
- Opening Time Period: minutes after the open used to build the range; the high and low marks during this window become the Opening Range High and Low. The bot will not enter until this period has elapsed. For one hour, enter 60.
- ORB percentage range: the minimum percent beyond the range high or low that price must move before entry. Positive values sit beyond the range, negative values sit inside it, and 0 simply requires the range to be breached.
- Breakout Condition: the state the market must be in at entry time.
| Breakout Condition | Meaning |
|---|---|
| Is Broken Out (Current Quote) | The current quote must be outside the range. Disables the Both direction option. |
| Has Broken Out (Since Opening Range) | Any quote since the range opened must have crossed the threshold. |
| Is Not Broken Out (Current Quote) | The current quote must be inside the range. Disables the Either direction option. |
| Has Not Broken Out (Since Opening Range) | No quote since the range opened may have crossed the threshold. Disables the Either direction option. |
Volatility Index (VIX) Entry Filters
Six filters mirror the underlying set, but read the VIX instead of your symbol: Intraday Change, One-Day Change, Overnight Gap, Range (open the trade when the market value of the VIX is within your bounds), Moving Average Range, and Moving Average Crossover. The moving average controls work exactly as described above. There is no VIX version of the RSI or Opening Range Breakout filters.
Decimal Places in Filter Values
Each filter bound keeps a fixed number of decimal places. If you enter more, the value is rounded when you save the bot, and the rounded value is the one the bot checks.
| Filter | Decimal places | Allowed range |
|---|---|---|
| Intraday Change, One-Day Change, and Overnight Gap (underlying and VIX) | 3 | -999.999% to 999.999% |
| Moving Average Range (underlying and VIX) | 3 | 0% to 999.999% |
| Market Value Range (underlying and VIX) | 3 | Up to 9,999,999.999 |
| RSI | 2 | 0 to 100 |
| ORB percentage range | 2 | -99.99% to 99.99% |
For example, an ORB percentage range of 0.126 is saved as 0.13, and an Intraday Change bound of 0.4567 is saved as 0.457.
Filter the Day
Filter the Day sits directly below the VIX filters. When it is Enabled, the first time an underlying or VIX filter fails, or your User-Hosted Entry Filter returns a filterStatus of false, the bot makes no more automated entry attempts that day. When it is disabled, the bot keeps re-checking its filters on every attempt through the entry window and enters once they pass.
Only a real "no" ends the day. If market data is not available, a moving average or RSI cannot be calculated, or your endpoint cannot be reached or returns an invalid response, the bot tries again on its next attempt. Overnight Gap filters always end the day's attempts when they fail, with or without this setting, because the gap cannot change after the open.
Custom Entry Filters
User-Hosted Entry Filters lets the bot ask a service you run whether to enter. Enable the toggle and fill in the User-Hosted Entry Filter Endpoint with a full URL including the http:// or https:// prefix. At entry time the bot queries your endpoint, which can compute anything you like before answering.
The endpoint must return a valid JSON document containing a key named filterStatus set to true (allow the entry) or false (block it). An invalid JSON response results in an error and the bot will not open a trade on that attempt; it asks your endpoint again on its next attempt.
This page is the field-by-field reference. For a practical tour of choosing and combining filters, see Entry Filters: Underlying, VIX, and Custom Conditions, and for the settings that control when the bot tries to enter in the first place, see Bot Settings: Trade Entry and Multi-Entry.