Quant price analysis for agents: TheStrat price action, multi-timeframe signals, simultaneous breaks
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. 'Bearer sk_strat_...' free key (email only) for a 60 s cooldown instead of the keyless trial; credits skip the cooldown.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Buy list and sell list: reversal signals in force across timeframes (technical signals screener on your own data). Buy: hammer, 2d-2u, 3-2u, 1-2u in force. Sell: shooter, 2u-2d, 3-2d, 1-2d in force. Continuations (2u-2u, 2d-2d) do not count. Per timeframe: symbols, count, % of basket, trigger, target and level of reclaim; plus which timeframes each symbol is on.
Bars per timeframe, then per symbol: {"M": {"AAPL": [...], ...}, "W": {...}}. Up to 4 timeframes; 60 symbols and 500 bars per symbol each.
Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock.
Optional ISO time. Use only bars that start at or before this time (replay a past bar).
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Buy list and sell list: reversal signals in force across timeframes (technical signals screener on your own data). Buy: hammer, 2d-2u, 3-2u, 1-2u in force. Sell: shooter, 2u-2d, 3-2d, 1-2d in force. Continuations (2u-2u, 2d-2d) do not count. Per timeframe: symbols, count, % of basket, trigger, target and level of reclaim; plus which timeframes each symbol is on.
| Argument | Type | Description |
|---|---|---|
| now | any | Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock. |
| as_of | any | Optional ISO time. Use only bars that start at or before this time (replay a past bar). |
| basket_by_timeframe* | object | Bars per timeframe, then per symbol: {"M": {"AAPL": [...], ...}, "W": {...}}. Up to 4 timeframes; 60 symbols and 500 bars per symbol each. |
{
"type": "object",
"title": "buy_sell_listArguments",
"required": [
"basket_by_timeframe"
],
"properties": {
"now": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Now",
"default": null,
"description": "Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock."
},
"as_of": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "As Of",
"default": null,
"description": "Optional ISO time. Use only bars that start at or before this time (replay a past bar)."
},
"basket_by_timeframe": {
"type": "object",
"title": "Basket By Timeframe",
"description": "Bars per timeframe, then per symbol: {\"M\": {\"AAPL\": [...], ...}, \"W\": {...}}. Up to 4 timeframes; 60 symbols and 500 bars per symbol each.",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {}
}
}
}
}
}Label every bar as TheStrat scenario 1, 2u, 2d or 3 (Truth #1). Rule: compare each bar with the bar before it. Took the prior high only = 2u. Took the prior low only = 2d. Took both = 3. Took neither = 1 (inside bar). Equal to the prior high/low is NOT a take-out (still a 1). The first bar has no scenario (null). Also returns color, hammer/shooter shape, failed-2 flags (2u red / 2d green = potential 3) and 3u/3d when the bar has first_side data. Use this instead of reading a chart.
| Argument | Type | Description |
|---|---|---|
| bars* | array | OHLC bars, oldest first. Each bar is an object {t, o, h, l, c, v?} (also accepts open/high/low/close/time) or a row [t, o, h, l, c, v?]. t = bar START time, ISO 8601 (New York time if no offset). Daily bars may use a date only. |
{
"type": "object",
"title": "classify_barsArguments",
"required": [
"bars"
],
"properties": {
"bars": {
"type": "array",
"items": {},
"title": "Bars",
"description": "OHLC bars, oldest first. Each bar is an object {t, o, h, l, c, v?} (also accepts open/high/low/close/time) or a row [t, o, h, l, c, v?]. t = bar START time, ISO 8601 (New York time if no offset). Daily bars may use a date only."
}
}
}Define a TheStrat term with a quote from the docs and its source_url (67-term glossary: definition, machine_rule where the docs state one, status "needs Alex" where the docs conflict). If the term is not in the glossary, returns the best docs_search hits.
| Argument | Type | Description |
|---|---|---|
| term* | string | A TheStrat word, e.g. 'FTFC', 'rev strat', 'level of reclaim'. |
{
"type": "object",
"title": "define_termArguments",
"required": [
"term"
],
"properties": {
"term": {
"type": "string",
"title": "Term",
"description": "A TheStrat word, e.g. 'FTFC', 'rev strat', 'level of reclaim'."
}
}
}Multi-timeframe price analysis in plain language for one symbol (quant price action, technical signals, timeframe continuity) from your own bars. Returns `text` (one short line per timeframe, e.g. "SPY day: 2u, above the day open (green). Last 3 bars: 2d 1 2u. In force: bullish 2-1-2 ...") and the same facts as JSON: scenario, color, last 3 bars, signals in force, setups, and FTFC (M W D 60). Start here, then quote the text to the user. On the hosted server a free key has a short cooldown per call; credits skip it (the reply says how many seconds to wait).
| Argument | Type | Description |
|---|---|---|
| now | any | Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock. |
| symbol* | string | Ticker, e.g. SPY. |
| bars_by_timeframe* | object | Bars per timeframe, e.g. {"M": [...], "W": [...], "D": [...], "60": [...]}. Give at least 3 bars per timeframe; more gives more signals. |
{
"type": "object",
"title": "describe_priceArguments",
"required": [
"symbol",
"bars_by_timeframe"
],
"properties": {
"now": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Now",
"default": null,
"description": "Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock."
},
"symbol": {
"type": "string",
"title": "Symbol",
"description": "Ticker, e.g. SPY."
},
"bars_by_timeframe": {
"type": "object",
"title": "Bars By Timeframe",
"description": "Bars per timeframe, e.g. {\"M\": [...], \"W\": [...], \"D\": [...], \"60\": [...]}. Give at least 3 bars per timeframe; more gives more signals.",
"additionalProperties": {
"type": "array",
"items": {}
}
}
}
}Search TheStrat docs (titles and descriptions from https://thestrat.ai/llms.txt, cached 24 h). Returns title, URL, section and description. Read the URL for detail.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results. |
| query* | string | Words to find, e.g. 'shooter trigger' or 'full timeframe continuity'. |
{
"type": "object",
"title": "docs_searchArguments",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 5,
"description": "Max results."
},
"query": {
"type": "string",
"title": "Query",
"description": "Words to find, e.g. 'shooter trigger' or 'full timeframe continuity'."
}
}
}Exhaustion risk: how much time is left in the signal's bar (session minutes, wall-clock minutes, sessions left, fraction left), and until when the fire stays active. Docs example: a 60-minute hammer that triggers at 9:32 has 58 minutes; at 10:25 it has 5. Once the bar closes, the signal is gone. The tool reports time; it does not grade it.
| Argument | Type | Description |
|---|---|---|
| now | any | Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock. |
| signal* | object | A signal from find_signals, or {"timeframe": "60", "trigger_bar_t": "2026-10-23T09:30:00-04:00"}. |
{
"type": "object",
"title": "exhaustionArguments",
"required": [
"signal"
],
"properties": {
"now": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Now",
"default": null,
"description": "Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock."
},
"signal": {
"type": "object",
"title": "Signal",
"description": "A signal from find_signals, or {\"timeframe\": \"60\", \"trigger_bar_t\": \"2026-10-23T09:30:00-04:00\"}.",
"additionalProperties": true
}
}
}Find TheStrat actionable signals on one timeframe. Patterns: 2-2 reversal, 1-2-2 rev strat, 3-2-2, 2-1-2, 3-1-2, 3-2, hammer, shooter, momo hammer/shooter, inside bar, outside bar reversal (2d-3u / 2u-3d), 1-3 rev strat, 1-3-2, I-O-I. Each signal has: trigger, target (magnitude, null if the pattern has none), level_of_reclaim, invalidation, status, sequence, kind (reversal/continuation) and source_url (the docs page for the rule). Status: setup (trigger not taken), in_force (taken, target not hit, still active), triggered (taken, bar closed, no target), hit_target, failed. Timing: a signal is in force only while its bar is open; D fires stay active until the next session open; the W is closed from Friday close to Monday open.
| Argument | Type | Description |
|---|---|---|
| now | any | Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock. |
| bars* | array | OHLC bars, oldest first. Each bar is an object {t, o, h, l, c, v?} (also accepts open/high/low/close/time) or a row [t, o, h, l, c, v?]. t = bar START time, ISO 8601 (New York time if no offset). Daily bars may use a date only. |
| timeframe | string | Timeframe of the bars: 5, 15, 30, 60, D, W, M, Q or Y. |
| include_history | boolean | Also list older setups and what happened to them (evidence of participation). |
{
"type": "object",
"title": "find_signalsArguments",
"required": [
"bars"
],
"properties": {
"now": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Now",
"default": null,
"description": "Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock."
},
"bars": {
"type": "array",
"items": {},
"title": "Bars",
"description": "OHLC bars, oldest first. Each bar is an object {t, o, h, l, c, v?} (also accepts open/high/low/close/time) or a row [t, o, h, l, c, v?]. t = bar START time, ISO 8601 (New York time if no offset). Daily bars may use a date only."
},
"timeframe": {
"type": "string",
"title": "Timeframe",
"default": "D",
"description": "Timeframe of the bars: 5, 15, 30, 60, D, W, M, Q or Y."
},
"include_history": {
"type": "boolean",
"title": "Include History",
"default": false,
"description": "Also list older setups and what happened to them (evidence of participation)."
}
}
}Rules the docs do not state exactly, with the default this server uses. Read this before you present a borderline result as a rule.
No arguments.
{
"type": "object",
"title": "open_decisionsArguments",
"properties": {}
}Potential signals for the next bar across a basket: every setup whose trigger the next bar (or the open bar) can take, grouped by direction and pattern, with trigger, target and level of reclaim per symbol. A price action watchlist for agents.
| Argument | Type | Description |
|---|---|---|
| now | any | Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock. |
| as_of | any | Optional ISO time. Use only bars that start at or before this time (replay a past bar). |
| basket* | object | Bars per symbol on ONE timeframe, oldest first: {"XLE": [...], "XOM": [...], ...}. Same bar format as find_signals. Limits: 60 symbols, 500 bars per symbol (10 to 50 are enough). Swing: a sector ETF + its holdings on W. Intraday: SPY QQQ DIA IWM on 30 or 60. |
| timeframe | string | Timeframe of the bars: 5, 15, 30, 60, D, W, M, Q or Y. |
{
"type": "object",
"title": "potential_signals_next_barArguments",
"required": [
"basket"
],
"properties": {
"now": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Now",
"default": null,
"description": "Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock."
},
"as_of": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "As Of",
"default": null,
"description": "Optional ISO time. Use only bars that start at or before this time (replay a past bar)."
},
"basket": {
"type": "object",
"title": "Basket",
"description": "Bars per symbol on ONE timeframe, oldest first: {\"XLE\": [...], \"XOM\": [...], ...}. Same bar format as find_signals. Limits: 60 symbols, 500 bars per symbol (10 to 50 are enough). Swing: a sector ETF + its holdings on W. Intraday: SPY QQQ DIA IWM on 30 or 60.",
"additionalProperties": {
"type": "array",
"items": {}
}
},
"timeframe": {
"type": "string",
"title": "Timeframe",
"default": "D",
"description": "Timeframe of the bars: 5, 15, 30, 60, D, W, M, Q or Y."
}
}
}Build higher-timeframe bars from smaller bars (US equities session 09:30-16:00 New York; 60-minute bars start at 09:30; extended hours are dropped; a partial first period is dropped). Each bar gets first_side (which prior side it took first) for 3u/3d.
| Argument | Type | Description |
|---|---|---|
| bars* | array | OHLC bars, oldest first. Each bar is an object {t, o, h, l, c, v?} (also accepts open/high/low/close/time) or a row [t, o, h, l, c, v?]. t = bar START time, ISO 8601 (New York time if no offset). Daily bars may use a date only. |
| to_timeframe* | string | 60, 30, 15, D, W, M, Q or Y. |
| from_timeframe | any | Input timeframe: 1, 5, 15, 30, 60 or D. |
{
"type": "object",
"title": "resample_barsArguments",
"required": [
"bars",
"to_timeframe"
],
"properties": {
"bars": {
"type": "array",
"items": {},
"title": "Bars",
"description": "OHLC bars, oldest first. Each bar is an object {t, o, h, l, c, v?} (also accepts open/high/low/close/time) or a row [t, o, h, l, c, v?]. t = bar START time, ISO 8601 (New York time if no offset). Daily bars may use a date only."
},
"to_timeframe": {
"type": "string",
"title": "To Timeframe",
"description": "60, 30, 15, D, W, M, Q or Y."
},
"from_timeframe": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "From Timeframe",
"default": null,
"description": "Input timeframe: 1, 5, 15, 30, 60 or D."
}
}
}Sector rotation by participation: a sector ETF + its holdings on one timeframe. Returns the ETF's own state (scenario, color, last 3 bars, signals in force), the most-2s split of the holdings (1 / 2u / 2d / 3, 2u red, 2d green), simultaneous breaks and simultaneous setups across ETF + holdings with majority flags, and a `text` summary.
| Argument | Type | Description |
|---|---|---|
| etf* | string | The sector ETF ticker, e.g. XLE. Include its bars in the basket. |
| now | any | Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock. |
| as_of | any | Optional ISO time. Use only bars that start at or before this time (replay a past bar). |
| basket* | object | Bars per symbol on ONE timeframe, oldest first: {"XLE": [...], "XOM": [...], ...}. Same bar format as find_signals. Limits: 60 symbols, 500 bars per symbol (10 to 50 are enough). Swing: a sector ETF + its holdings on W. Intraday: SPY QQQ DIA IWM on 30 or 60. |
| timeframe | string | Timeframe of the bars: 5, 15, 30, 60, D, W, M, Q or Y. |
{
"type": "object",
"title": "sector_analysisArguments",
"required": [
"etf",
"basket"
],
"properties": {
"etf": {
"type": "string",
"title": "Etf",
"description": "The sector ETF ticker, e.g. XLE. Include its bars in the basket."
},
"now": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Now",
"default": null,
"description": "Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock."
},
"as_of": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "As Of",
"default": null,
"description": "Optional ISO time. Use only bars that start at or before this time (replay a past bar)."
},
"basket": {
"type": "object",
"title": "Basket",
"description": "Bars per symbol on ONE timeframe, oldest first: {\"XLE\": [...], \"XOM\": [...], ...}. Same bar format as find_signals. Limits: 60 symbols, 500 bars per symbol (10 to 50 are enough). Swing: a sector ETF + its holdings on W. Intraday: SPY QQQ DIA IWM on 30 or 60.",
"additionalProperties": {
"type": "array",
"items": {}
}
},
"timeframe": {
"type": "string",
"title": "Timeframe",
"default": "W",
"description": "Timeframe of the bars: 5, 15, 30, 60, D, W, M, Q or Y."
}
}
}Technical signals in force across a basket: every TheStrat actionable signal whose trigger is taken while its bar is open, grouped by direction and pattern, with % of basket and the trigger, target and level of reclaim per symbol.
| Argument | Type | Description |
|---|---|---|
| now | any | Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock. |
| as_of | any | Optional ISO time. Use only bars that start at or before this time (replay a past bar). |
| basket* | object | Bars per symbol on ONE timeframe, oldest first: {"XLE": [...], "XOM": [...], ...}. Same bar format as find_signals. Limits: 60 symbols, 500 bars per symbol (10 to 50 are enough). Swing: a sector ETF + its holdings on W. Intraday: SPY QQQ DIA IWM on 30 or 60. |
| timeframe | string | Timeframe of the bars: 5, 15, 30, 60, D, W, M, Q or Y. |
{
"type": "object",
"title": "signals_in_forceArguments",
"required": [
"basket"
],
"properties": {
"now": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Now",
"default": null,
"description": "Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock."
},
"as_of": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "As Of",
"default": null,
"description": "Optional ISO time. Use only bars that start at or before this time (replay a past bar)."
},
"basket": {
"type": "object",
"title": "Basket",
"description": "Bars per symbol on ONE timeframe, oldest first: {\"XLE\": [...], \"XOM\": [...], ...}. Same bar format as find_signals. Limits: 60 symbols, 500 bars per symbol (10 to 50 are enough). Swing: a sector ETF + its holdings on W. Intraday: SPY QQQ DIA IWM on 30 or 60.",
"additionalProperties": {
"type": "array",
"items": {}
}
},
"timeframe": {
"type": "string",
"title": "Timeframe",
"default": "D",
"description": "Timeframe of the bars: 5, 15, 30, 60, D, W, M, Q or Y."
}
}
}Simultaneous breaks: find which symbols in a basket broke their setup bar in the same direction in the same bar (2d-2u, 1-2u, 3-1-2u up / 2u-2d, 1-2d down). Quant price action and sector rotation from your own OHLC data, no third-party feed. Docs: "A simultaneous break is multiple correlated assets breaking 2 in the same direction at the same time." No threshold: the count and the % of the basket, ranked. At 80%+ the group gets the label "80%+ concentration: evidence of algorithmic buying (selling) in this group". Returns a ranked list per direction with count, % of basket, symbols, and per symbol the trigger, target and level of reclaim, plus the as-of time and a `text` line to quote.
| Argument | Type | Description |
|---|---|---|
| now | any | Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock. |
| as_of | any | Optional ISO time. Use only bars that start at or before this time (replay a past bar). |
| basket* | object | Bars per symbol on ONE timeframe, oldest first: {"XLE": [...], "XOM": [...], ...}. Same bar format as find_signals. Limits: 60 symbols, 500 bars per symbol (10 to 50 are enough). Swing: a sector ETF + its holdings on W. Intraday: SPY QQQ DIA IWM on 30 or 60. |
| timeframe | string | Timeframe of the bars: 5, 15, 30, 60, D, W, M, Q or Y. |
| strict_setup_bar | boolean | True (default): count only the setup bars on the owner list (2d green / 2d hammer for longs, 2u red / 2u shooter for shorts, inside bars both ways). False: any docs reversal setup. |
Simultaneous setups (before the break): a concentration of setup bars in one direction across a basket of symbols. A technical signals screener on your own data, any timeframe. Docs: "A concentration of signals in the same sector or index identifies a potential simultaneous break: it fires if all of the signals go in force." Returns a ranked list per direction: count, % of basket, symbols, each with trigger, target and level of reclaim.
| Argument | Type | Description |
|---|---|---|
| now | any | Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock. |
| as_of | any | Optional ISO time. Use only bars that start at or before this time (replay a past bar). |
| basket* | object | Bars per symbol on ONE timeframe, oldest first: {"XLE": [...], "XOM": [...], ...}. Same bar format as find_signals. Limits: 60 symbols, 500 bars per symbol (10 to 50 are enough). Swing: a sector ETF + its holdings on W. Intraday: SPY QQQ DIA IWM on 30 or 60. |
| timeframe | string | Timeframe of the bars: 5, 15, 30, 60, D, W, M, Q or Y. |
| strict_setup_bar | boolean | True (default): count only the setup bars on the owner list (2d green / 2d hammer for longs, 2u red / 2u shooter for shorts, inside bars both ways). False: any docs reversal setup. |
{
"type": "object",
"title": "sim_setupsArguments",
"required": [
"basket"
],
"properties": {
"now": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Now",
"default": null,
"description": "Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock."
},
"as_of": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "As Of",
"default": null,
"description": "Optional ISO time. Use only bars that start at or before this time (replay a past bar)."
},
"basket": {
"type": "object",
"title": "Basket",
"description": "Bars per symbol on ONE timeframe, oldest first: {\"XLE\": [...], \"XOM\": [...], ...}. Same bar format as find_signals. Limits: 60 symbols, 500 bars per symbol (10 to 50 are enough). Swing: a sector ETF + its holdings on W. Intraday: SPY QQQ DIA IWM on 30 or 60.",
"additionalProperties": {
"type": "array",
"items": {}
}
},
"timeframe": {
"type": "string",
"title": "Timeframe",
"default": "W",
"description": "Timeframe of the bars: 5, 15, 30, 60, D, W, M, Q or Y."
},
"strict_setup_bar": {
"type": "boolean",
"title": "Strict Setup Bar",
"default": true,
"description": "True (default): count only the setup bars on the owner list (2d green / 2d hammer for longs, 2u red / 2u shooter for shorts, inside bars both ways). False: any docs reversal setup."
}
}
}Full timeframe continuity (FTFC, Truth #2): is the last sale above (up) or below (down) the open of every timeframe in the group, or mixed (conflict)? Returns per-timeframe side, color and aggression (above an open: buyers more aggressive, willing to buy at higher prices; below: sellers more aggressive), state up/down/mixed, override (day and 60 agree against the week/month) and the profit-taking note (only the 60 red). FTFC is a state, not a signal.
| Argument | Type | Description |
|---|---|---|
| group | string | standard = M W D 60 (default), intraday = 60 30 15 5, investing = Y Q M W, all = Y Q M W D 60 30 15 5. |
| opens* | object | Open price of the CURRENT bar per timeframe, e.g. {"M": 650.1, "W": 662.0, "D": 665.2, "60": 666.0}. |
| price* | number | The last sale. |
{
"type": "object",
"title": "timeframe_continuityArguments",
"required": [
"price",
"opens"
],
"properties": {
"group": {
"type": "string",
"title": "Group",
"default": "standard",
"description": "standard = M W D 60 (default), intraday = 60 30 15 5, investing = Y Q M W, all = Y Q M W D 60 30 15 5."
},
"opens": {
"type": "object",
"title": "Opens",
"description": "Open price of the CURRENT bar per timeframe, e.g. {\"M\": 650.1, \"W\": 662.0, \"D\": 665.2, \"60\": 666.0}.",
"additionalProperties": {
"type": "number"
}
},
"price": {
"type": "number",
"title": "Price",
"description": "The last sale."
}
}
}{
"type": "object",
"title": "sim_breaksArguments",
"required": [
"basket"
],
"properties": {
"now": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Now",
"default": null,
"description": "Current time, ISO 8601. Decides if the last bar is still open. Default: the server clock."
},
"as_of": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "As Of",
"default": null,
"description": "Optional ISO time. Use only bars that start at or before this time (replay a past bar)."
},
"basket": {
"type": "object",
"title": "Basket",
"description": "Bars per symbol on ONE timeframe, oldest first: {\"XLE\": [...], \"XOM\": [...], ...}. Same bar format as find_signals. Limits: 60 symbols, 500 bars per symbol (10 to 50 are enough). Swing: a sector ETF + its holdings on W. Intraday: SPY QQQ DIA IWM on 30 or 60.",
"additionalProperties": {
"type": "array",
"items": {}
}
},
"timeframe": {
"type": "string",
"title": "Timeframe",
"default": "W",
"description": "Timeframe of the bars: 5, 15, 30, 60, D, W, M, Q or Y."
},
"strict_setup_bar": {
"type": "boolean",
"title": "Strict Setup Bar",
"default": true,
"description": "True (default): count only the setup bars on the owner list (2d green / 2d hammer for longs, 2u red / 2u shooter for shorts, inside bars both ways). False: any docs reversal setup."
}
}
}