@pineforge/codegen-mcp 0.8.7 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -1
- package/dist/coverage.js +707 -0
- package/dist/coverage.js.map +1 -0
- package/dist/server.js +137 -5
- package/dist/server.js.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ bundles the [`pineforge-codegen`](https://github.com/pineforge-4pass/pineforge-c
|
|
|
7
7
|
transpiler, so Pine → C++ → backtest run with no host Docker daemon. **No API
|
|
8
8
|
key, nothing leaves the box.**
|
|
9
9
|
|
|
10
|
-
[](https://glama.ai/mcp/servers/pineforge-4pass/pineforge-codegen-mcp)
|
|
11
11
|
|
|
12
12
|

|
|
13
13
|
|
|
@@ -21,6 +21,9 @@ key, nothing leaves the box.**
|
|
|
21
21
|
| `backtest_pine_grid` | in-process | Cartesian sweep of `inputs` × `overrides` reusing one compile |
|
|
22
22
|
| `fetch_binance_ohlcv` | Binance public API | Write a backtest-ready CSV from Binance spot or USDT-perp klines |
|
|
23
23
|
| `binance_symbols` | Binance public API | List / filter Binance symbols (5-min in-process cache) |
|
|
24
|
+
| `list_coverage_topics` | local (no I/O) | Every Pine v6 coverage topic with a one-line status + summary |
|
|
25
|
+
| `check_pine_feature` | local (no I/O) | Look up whether a Pine identifier/namespace is supported in PineForge |
|
|
26
|
+
| `get_coverage_topic` | local (no I/O) | Full detail + supported/unsupported feature lists for one coverage topic |
|
|
24
27
|
| `engine_info` | local (no I/O) | Report the bundled engine: mode, baked-in flag, version |
|
|
25
28
|
|
|
26
29
|
## Install
|
|
@@ -36,6 +39,21 @@ docker run --rm -i -v "$PWD:/work" ghcr.io/pineforge-4pass/pineforge-codegen-mcp
|
|
|
36
39
|
Only requirement: Docker, and outbound network for the Binance fetch tools.
|
|
37
40
|
Wire it into your MCP client below.
|
|
38
41
|
|
|
42
|
+
### Hosted (no-install) alternative
|
|
43
|
+
|
|
44
|
+
Want the fastest try with no Docker and no API key? Paste the Streamable HTTP
|
|
45
|
+
endpoint into any MCP client:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
https://mcp.pineforge.dev/mcp
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Tradeoff vs this repo: the hosted server is **metered** (per-IP weekly quota on
|
|
52
|
+
`backtest_pine` + Cloudflare edge rate-limiting) and runs against a **fixed,
|
|
53
|
+
sealed crypto data-lake** (Binance spot + USDT-perp). This local repo is
|
|
54
|
+
**unmetered, runs offline, and lets you bring your own CSVs and run grid
|
|
55
|
+
sweeps**. Repo: [`pineforge-mcp-public`](https://github.com/pineforge-4pass/pineforge-mcp-public).
|
|
56
|
+
|
|
39
57
|
## Client configuration
|
|
40
58
|
|
|
41
59
|
Mount a directory at `/work`; point `fetch_binance_ohlcv` / `backtest_pine` at
|
package/dist/coverage.js
ADDED
|
@@ -0,0 +1,707 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PineForge Pine v6 coverage dataset — hand-authored canonical copy.
|
|
3
|
+
*
|
|
4
|
+
* Data sourced from pineforge-engine/docs/coverage.md +
|
|
5
|
+
* pine_v6_coverage_detail.md and embedded here as a TS object literal (no
|
|
6
|
+
* runtime fetch). This is the single source the MCP coverage tools serve.
|
|
7
|
+
*
|
|
8
|
+
* IMPORTANT: this is a hand-authored canonical copy. Updating it requires a
|
|
9
|
+
* MANUAL re-sync across BOTH pineforge-codegen-mcp AND pineforge-mcp-public —
|
|
10
|
+
* the two MCP surfaces carry their own copy of this dataset and they must not
|
|
11
|
+
* drift. When coverage.md / pine_v6_coverage_detail.md change, edit this file
|
|
12
|
+
* here and mirror the identical change in pineforge-mcp-public.
|
|
13
|
+
*/
|
|
14
|
+
export const COVERAGE = {
|
|
15
|
+
coverage_version: "2026-06-04 / 0fccede",
|
|
16
|
+
legend: {
|
|
17
|
+
supported: "The Pine feature has a dedicated runtime class or function in libpineforge.a that fully implements its behavior end-to-end.",
|
|
18
|
+
partial: "The feature is implemented in the runtime but with documented gaps or restrictions (e.g. some sub-features, configuration paths, or variants are missing or rejected).",
|
|
19
|
+
unsupported: "The feature is not implemented anywhere in PineForge; it is parsed-and-skipped or rejected, producing no runtime behavior (e.g. drawing, plotting, and live alerts).",
|
|
20
|
+
via_transpiler: "The feature has no dedicated runtime module, but PineForge's PineScript-to-C++ transpiler emits it inline against the C++ standard library or generated structs, so it still works end-to-end.",
|
|
21
|
+
},
|
|
22
|
+
topics: [
|
|
23
|
+
{
|
|
24
|
+
id: "engine_lifecycle",
|
|
25
|
+
title: "Engine / strategy lifecycle",
|
|
26
|
+
status: "supported",
|
|
27
|
+
summary: "BacktestEngine with three run(...) overloads, per-bar on_bar hook, and ReportC/SecurityDiagC reporting are fully implemented in the runtime.",
|
|
28
|
+
detail: "The runtime owns the full strategy lifecycle. BacktestEngine is an abstract base; the consumer compiler emits a strategy subclass that derives from it and implements on_bar(const Bar&). Three run(...) overloads are exposed: a bare (bars, n) form, a TF-aware form (input_tf/script_tf + magnifier args), and a full form that also injects a SymInfo, the input map, and a StrategyOverrides struct (NaN/-1 mean leave-default). The TF-aware overload auto-detects input_tf via detect_timeframe when empty and defaults script_tf to input_tf.\n\nStrategyOverrides only carries a fixed set of fields (initial_capital, commission_value, default_qty_value, pyramiding, slippage, commission_type, default_qty_type, process_orders_on_close, close_entries_rule); anything else (currency, margin, risk thresholds) must be set by the generated subclass — there is no runtime entry point. Per-input overrides go through set_input/clear_inputs before run(...); magnifier density via set_magnifier_volume_weighted.\n\nLifecycle reporting is via fill_report(ReportC*) which populates closed-trade summaries (TradeC[]), bar counters, magnifier work counters, TF/aggregation diagnostics, and per-security SecurityDiagC. The public C ABI exposes exactly 10 symbols: strategy_create/strategy_free, run_backtest, run_backtest_full, report_free, plus input/override/magnifier/trace setters and pf_version_get. indicator() is parse-and-skip (strategy-only engine); library() is unsupported. Note on barstate: the runtime DOES track barstate.islast (the barstate_islast_ flag is true on the genuine last bar of the batch run) — what is unsupported is live/realtime barstate semantics (barstate.isrealtime, barstate.islastconfirmedhistory are always false in batch).",
|
|
29
|
+
supported: [
|
|
30
|
+
"BacktestEngine",
|
|
31
|
+
"run / run_backtest / run_backtest_full",
|
|
32
|
+
"on_bar",
|
|
33
|
+
"strategy()",
|
|
34
|
+
"StrategyOverrides",
|
|
35
|
+
"SymInfo / strategy_set_input / strategy_set_override",
|
|
36
|
+
"fill_report (ReportC / SecurityDiagC)",
|
|
37
|
+
"strategy_create / strategy_free / report_free",
|
|
38
|
+
"detect_timeframe",
|
|
39
|
+
"barstate.islast (barstate_islast_; true on last batch bar)",
|
|
40
|
+
],
|
|
41
|
+
unsupported: [
|
|
42
|
+
"indicator() (parse-and-skip; strategy-only engine)",
|
|
43
|
+
"library() / import / export (library system not implemented)",
|
|
44
|
+
"calc_on_every_tick / calc_on_order_fills (no live feed)",
|
|
45
|
+
"barstate.isrealtime / barstate.islastconfirmedhistory realtime semantics (always false in batch)",
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: "strategy_orders",
|
|
50
|
+
title: "Strategy orders",
|
|
51
|
+
status: "supported",
|
|
52
|
+
summary: "All strategy order commands (entry/order/exit/close/close_all/cancel/cancel_all) are runtime-implemented with OHLC-path fills, OCA, pyramiding, slippage, commissions, margin gates, trailing stops, and TV deferred-flip carry.",
|
|
53
|
+
detail: "The runtime owns strategy_entry, strategy_order, strategy_exit, strategy_close, strategy_close_all, strategy_cancel, and strategy_cancel_all. Pending orders resolve on every process_pending_orders(bar) call along a 4-waypoint OHLC path (O->H->L->C or O->L->H->C depending on open proximity to high vs low), handling stop/limit priority, gap fills, opposing-stop arbitration, OCA siblings, and trail levels. slippage_ (ticks) and syminfo_mintick_ round all fills; stop entries use directional mintick snapping (long stops up, short stops down) to match TradingView.\n\nPriced strategy.entry orders track TradingView's deferred-flip carry rule: an opposite priced entry placed while a position is open, firing later from flat after a close, opens qty + carried_position_qty; source order within a single on_bar matters. strategy_exit reserves a slice of the open position (partial exits one-shot per live position) and accepts profit/loss/limit/stop/trail_* params, but does not itself enforce that at least one is set. strategy_close does FIFO close by entry id (or all when empty), honouring close_entries_rule_any_ for ANY-mode partial close, with an immediately flag to bypass pending resolution.\n\nSizing uses QtyType {FIXED, PERCENT_OF_EQUITY, CASH} and default_qty_value_; commission uses CommissionType {PERCENT, CASH_PER_ORDER, CASH_PER_CONTRACT}. Margin checks use margin_long_/margin_short_ percentages from the subclass; if implied required capital exceeds equity the fill is silently rejected (matching TV). All strategy.* order constants (oca.*, commission.*, fixed/cash/percent_of_equity, long/short, default_entry_qty) are runtime-backed. strategy.convert_to_account/symbol are transpiler identity (no FX conversion).",
|
|
54
|
+
supported: [
|
|
55
|
+
"strategy.entry",
|
|
56
|
+
"strategy.order",
|
|
57
|
+
"strategy.exit",
|
|
58
|
+
"strategy.close",
|
|
59
|
+
"strategy.close_all",
|
|
60
|
+
"strategy.cancel / strategy.cancel_all",
|
|
61
|
+
"strategy.default_entry_qty",
|
|
62
|
+
"strategy.oca.* / strategy.commission.*",
|
|
63
|
+
"strategy.long / strategy.short",
|
|
64
|
+
"QtyType / CommissionType",
|
|
65
|
+
"slippage, pyramiding, margin_long_/margin_short_ gates",
|
|
66
|
+
],
|
|
67
|
+
unsupported: [
|
|
68
|
+
"strategy.convert_to_account / strategy.convert_to_symbol (transpiler identity, no FX adjustment)",
|
|
69
|
+
"strategy.exit requirement that >=1 price param is set (policy lives outside runtime)",
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: "strategy_state",
|
|
74
|
+
title: "Strategy state / accessors",
|
|
75
|
+
status: "supported",
|
|
76
|
+
summary: "Position/equity/drawdown/runup tracking, win/loss counts, and the full closed- and open-trade accessor sets are wired directly on BacktestEngine.",
|
|
77
|
+
detail: "The runtime tracks position state, equity/drawdown/runup, win/loss counts, and an intraday fill counter. strategy.closedtrades.* accessors are defined inline: profit, profit_percent, commission, entry/exit_bar_index, entry/exit_comment, entry/exit_id, entry/exit_price, entry/exit_time, size, max_runup(_percent), max_drawdown(_percent). strategy.opentrades.* mirrors the closed set minus the four exit_* fields. Pine v6 has no closedtrades/opentrades.direction(...) accessor — direction is encoded in the sign of size (positive=long, negative=short) — and the support checker rejects any direction(...) call.\n\nAggregate state methods on the engine: net_profit/gross_profit/gross_loss (and _percent), avg_trade/avg_winning_trade/avg_losing_trade (and _percent), count_wintrades/count_losstrades, current_equity, open_profit(price), open_trades_capital_held, and signed_position_size. Strategy state variables like strategy.equity, strategy.netprofit, strategy.position_size, strategy.position_avg_price, max_drawdown/max_runup, max_contracts_held_*, and eventrades are all runtime-backed. margin_liquidation_price() always returns na<double>().\n\nBar metadata helpers decompose current_bar_.timestamp (UTC) into year/month/dayofmonth/hour/minute/second/dayofweek/weekofyear with scalar accessors. barstate flags map onto three engine flags (is_first_tick_, is_last_tick_, barstate_islast_) with documented batch-mode approximations (islast always false, ishistory always true, isrealtime always false).",
|
|
78
|
+
supported: [
|
|
79
|
+
"strategy.closedtrades.* / strategy.opentrades.* accessors",
|
|
80
|
+
"strategy.equity / netprofit / grossprofit / grossloss",
|
|
81
|
+
"strategy.position_size / position_avg_price",
|
|
82
|
+
"strategy.max_drawdown / max_runup (_percent)",
|
|
83
|
+
"strategy.wintrades / losstrades / eventrades",
|
|
84
|
+
"strategy.max_contracts_held_*",
|
|
85
|
+
"current_equity / open_profit / signed_position_size",
|
|
86
|
+
],
|
|
87
|
+
unsupported: [
|
|
88
|
+
"strategy.closedtrades.direction / strategy.opentrades.direction (no such Pine v6 accessor; rejected by support checker — use sign of size)",
|
|
89
|
+
"strategy.margin_liquidation_price (always returns na)",
|
|
90
|
+
"barstate.islast/isrealtime/islastconfirmedhistory realtime semantics (batch-mode placeholders)",
|
|
91
|
+
],
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
id: "strategy_risk",
|
|
95
|
+
title: "Strategy risk",
|
|
96
|
+
status: "partial",
|
|
97
|
+
summary: "Runtime fields cover position-size cap, drawdown cap (abs/%), intraday-loss cap (abs/%), consecutive losing days, intraday filled-order cap, and direction allow-list — but none are exposed via StrategyOverrides.",
|
|
98
|
+
detail: "BacktestEngine tracks risk fields and gates entries through check_risk_allow_entry(is_long) and update_risk_state(). The covered strategy.risk.* surface: allow_entry_in (risk_direction_: BOTH/LONG_ONLY/SHORT_ONLY), max_position_size (blocks new entries when position_qty_ >= cap), max_drawdown (+_is_pct_, halts on peak-to-trough drawdown crossing abs $ or % of peak equity), max_intraday_loss (+_is_pct_, halts on running intraday P&L; day boundary uses month/day-of-month, not session), max_cons_loss_days (halts after N consecutive losing days), and max_intraday_filled_orders (skips fills past the per-day cap; counter resets on new day-of-year).\n\nRisk halt is one-way: once risk_halted_ is set, no new entries are accepted for the rest of the run. The reason this topic is partial rather than supported: the summary table marks Strategy risk as 'Partial', and critically none of these risk fields are exposed via StrategyOverrides — its fixed override set excludes risk thresholds, so they must all be set directly by the generated subclass, with no runtime/ABI entry point for configuring them. The strategy.direction.* constants map to RiskDirection enum values.",
|
|
99
|
+
supported: [
|
|
100
|
+
"strategy.risk.allow_entry_in",
|
|
101
|
+
"strategy.risk.max_position_size",
|
|
102
|
+
"strategy.risk.max_drawdown",
|
|
103
|
+
"strategy.risk.max_intraday_loss",
|
|
104
|
+
"strategy.risk.max_cons_loss_days",
|
|
105
|
+
"strategy.risk.max_intraday_filled_orders",
|
|
106
|
+
"strategy.direction.all/long/short (RiskDirection enum)",
|
|
107
|
+
],
|
|
108
|
+
unsupported: [
|
|
109
|
+
"No StrategyOverrides / C-ABI entry point for any risk field (must be set in generated subclass)",
|
|
110
|
+
"Risk thresholds not configurable at runtime via strategy_set_override",
|
|
111
|
+
],
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
id: "inputs",
|
|
115
|
+
title: "Inputs",
|
|
116
|
+
status: "supported",
|
|
117
|
+
summary: "All input.* kinds work via a string injection map plus typed getters; only UI metadata is dropped.",
|
|
118
|
+
detail: "Inputs are stored as a std::unordered_map<std::string,std::string> on BacktestEngine. Generated code reads them through typed getters (get_input_double / _int / _bool / _string) that fall back to the Pine default on a missing key or parse failure. get_input_bool accepts \"true\"/\"1\" and \"false\"/\"0\" (anything else returns the default); the numeric getters route through std::stod / std::stoi with try/catch. The runtime is agnostic about the input *kind* — every input.* variant (float, int, bool, string, source, color, timeframe, enum, price, session, symbol, text_area, time) is presented as a string and the call-site getter decides the parse. The C ABI exposes strategy_set_input to override a value before run(...); internally this is set_input(key, value) / clear_inputs() on BacktestEngine. All 14 input.* functions are classified Runtime in the detail audit. UI metadata (group, inline, tooltip, display, confirm, options, min/max/step) has no runtime backing and is the consumer's problem.",
|
|
119
|
+
supported: [
|
|
120
|
+
"input()",
|
|
121
|
+
"input.float()",
|
|
122
|
+
"input.int()",
|
|
123
|
+
"input.bool()",
|
|
124
|
+
"input.string()",
|
|
125
|
+
"input.source()",
|
|
126
|
+
"input.color()",
|
|
127
|
+
"input.timeframe()",
|
|
128
|
+
"input.enum()",
|
|
129
|
+
"input.session()",
|
|
130
|
+
"input.symbol()",
|
|
131
|
+
"input.price()",
|
|
132
|
+
"input.text_area()",
|
|
133
|
+
"input.time()",
|
|
134
|
+
"get_input_double",
|
|
135
|
+
"get_input_int",
|
|
136
|
+
"get_input_bool",
|
|
137
|
+
"get_input_string",
|
|
138
|
+
"strategy_set_input",
|
|
139
|
+
],
|
|
140
|
+
unsupported: [
|
|
141
|
+
"group",
|
|
142
|
+
"inline",
|
|
143
|
+
"tooltip",
|
|
144
|
+
"display",
|
|
145
|
+
"confirm",
|
|
146
|
+
"options",
|
|
147
|
+
"min/max/step (UI metadata, no runtime backing)",
|
|
148
|
+
],
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
id: "ta",
|
|
152
|
+
title: "ta.*",
|
|
153
|
+
status: "supported",
|
|
154
|
+
summary: "59 ta.* functions + 8 volume ta.* series variables backed by stateful runtime classes, plus a free pivot_point_levels(); the ta.vwap 3-tuple bands form is now runtime-backed (Sprint B), with only pivot anchor/developing params left to the compiler.",
|
|
155
|
+
detail: "ta.hpp (split across ta_moving_averages/oscillators/volatility_trend/extremes_volume/misc.cpp) implements 59 official Pine v6 ta.* functions plus 8 volume ta.* series variables as stateful classes, each exposing compute(...) (advance state) and recompute(...) (re-run on the same bar without disturbing permanent history, used by the magnifier and security intrabar paths). The consumer compiler allocates one instance per call site. Coverage spans moving averages (sma, ema, rma, wma, hma, vwma, alma, swma), oscillators/momentum (rsi, stoch, cci, mfi, mom, roc, cmo, tsi, wpr, cog, tr, atr, rci), bands/widths (bb, kc, bbw, kcw), trend/pivots (supertrend, dmi, sar, pivothigh, pivotlow), cross/state machines (crossover, crossunder, cross, rising, falling, barssince, valuewhen, change), windowed stats (stdev, variance, median, mode, range, dev, highest, lowest, percentrank, correlation, linreg), volume series variables (obv, accdist, nvi, pvi, pvt, wad, wvad, iii) and ta.vwap. ta.vwap now has both overloads: the single-value VWAP class and the 3-tuple VWAPBands class (VWAPBandsResult{vwap,upper,lower}, running variance via cum_pv_sq_) added in Sprint B for ta.vwap(src, anchor, stdev_mult).",
|
|
156
|
+
supported: [
|
|
157
|
+
"ta.sma",
|
|
158
|
+
"ta.ema",
|
|
159
|
+
"ta.rsi",
|
|
160
|
+
"ta.atr",
|
|
161
|
+
"ta.macd",
|
|
162
|
+
"ta.bb",
|
|
163
|
+
"ta.kc",
|
|
164
|
+
"ta.supertrend",
|
|
165
|
+
"ta.dmi",
|
|
166
|
+
"ta.sar",
|
|
167
|
+
"ta.stoch",
|
|
168
|
+
"ta.linreg",
|
|
169
|
+
"ta.vwap",
|
|
170
|
+
"ta.vwap 3-tuple bands (src, anchor, stdev_mult)",
|
|
171
|
+
"ta.obv",
|
|
172
|
+
"ta.accdist",
|
|
173
|
+
"ta.tr",
|
|
174
|
+
"ta.pivothigh",
|
|
175
|
+
"ta.pivotlow",
|
|
176
|
+
"pivot_point_levels()",
|
|
177
|
+
],
|
|
178
|
+
unsupported: [
|
|
179
|
+
"ta.obv() and other parenthesized series-variable call forms — rejected by support checker (not Pine v6 functions)",
|
|
180
|
+
"ta.change with bool source — runtime is numeric-only, compiler casts bool to 0.0/1.0",
|
|
181
|
+
"Woodie pivot anchor/developing params (period open not received by free fn; close-based fallback used)",
|
|
182
|
+
"strategy.*trades.direction(...) accessors (no such Pine v6 accessor; rejected)",
|
|
183
|
+
],
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
id: "math",
|
|
187
|
+
title: "math.*",
|
|
188
|
+
status: "via_transpiler",
|
|
189
|
+
summary: "Runtime backs only pine_random and rolling math::Sum; every other math.* (abs, sqrt, trig, min/max, round, constants) is emitted inline by the transpiler.",
|
|
190
|
+
detail: "math.hpp/math.cpp own exactly two pieces: pine_random(...), a deterministic SplitMix64-style mixer that is stable across platforms/runs but is NOT TradingView's PRNG (math.random maps here, with no byte-for-byte TV parity); and math::Sum(length), a rolling-window sum backing math.sum(source, length) where NaN inputs short-circuit to NaN. math.round_to_mintick also maps to BacktestEngine::round_to_mintick. Everything else in the math namespace is the consumer compiler's responsibility — the transpiler emits it inline against <cmath> or simple expressions: math.abs/sqrt/pow/exp/log/log10/ceil/floor/round/sin/cos/tan/asin/acos/atan, math.min/max/avg/sign/todegrees/toradians, and the constants math.pi (M_PI), math.e (M_E), math.phi (inline literal), math.rphi (inline literal). So most scalar math.* works end-to-end despite having no dedicated runtime module.",
|
|
191
|
+
supported: [
|
|
192
|
+
"math.random (pine_random, SplitMix64, not TV-exact)",
|
|
193
|
+
"math.sum (math::Sum class)",
|
|
194
|
+
"math.round_to_mintick (BacktestEngine::round_to_mintick)",
|
|
195
|
+
"math.abs (transpiler)",
|
|
196
|
+
"math.sqrt (transpiler)",
|
|
197
|
+
"math.pow (transpiler)",
|
|
198
|
+
"math.min/math.max (transpiler)",
|
|
199
|
+
"math.sin/cos/tan (transpiler)",
|
|
200
|
+
"math.pi/math.e/math.phi/math.rphi (transpiler constants)",
|
|
201
|
+
],
|
|
202
|
+
unsupported: [
|
|
203
|
+
"TradingView-exact PRNG parity for math.random (out of scope by design — determinism preferred over TV byte-parity)",
|
|
204
|
+
],
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
id: "str",
|
|
208
|
+
title: "str.*",
|
|
209
|
+
status: "partial",
|
|
210
|
+
summary: "Five str.* helpers have dedicated runtime backing; the rest (length, contains, replace, lower/upper, tonumber, etc.) are emitted inline by the transpiler.",
|
|
211
|
+
detail: "str_utils.hpp/str_utils.cpp own five helpers: pine_str_format ({N} placeholder substitution, all occurrences replaced), pine_str_format_time (Pine tokens yyyy/MM/dd/HH/mm/ss mapped to strftime; UTC via gmtime_r, otherwise swaps TZ under pine_tz::ScopedTimezone with localtime_r), pine_str_match (first capture group or full match; empty on no match/regex error), pine_str_split (vector<string>; empty separator yields {source}), and pine_str_tostring (NaN renders \"NaN\"; modes mintick/percent/volume, default falls back to std::to_string). pine_enum_str_at (in engine.hpp) backs str.tostring(<enum_member>) with index clamping.\n\nThe topic is partial at the runtime layer because all other string operations have no runtime API — the transpiler emits them inline against std::string: str.length, str.contains, str.replace/replace_all, str.lower/upper, str.tonumber, str.substring, str.startswith/endswith, str.pos, str.repeat, str.trim. Those still run end-to-end; they just aren't runtime modules.",
|
|
212
|
+
supported: [
|
|
213
|
+
"str.format (pine_str_format)",
|
|
214
|
+
"str.format_time (pine_str_format_time)",
|
|
215
|
+
"str.match (pine_str_match)",
|
|
216
|
+
"str.split (pine_str_split)",
|
|
217
|
+
"str.tostring (pine_str_tostring)",
|
|
218
|
+
"str.tostring(enum) via pine_enum_str_at",
|
|
219
|
+
],
|
|
220
|
+
unsupported: [
|
|
221
|
+
"str.length",
|
|
222
|
+
"str.contains",
|
|
223
|
+
"str.replace / str.replace_all",
|
|
224
|
+
"str.lower / str.upper",
|
|
225
|
+
"str.tonumber",
|
|
226
|
+
"str.substring",
|
|
227
|
+
"str.startswith / str.endswith (no runtime API — emitted inline by transpiler)",
|
|
228
|
+
],
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
id: "request_security",
|
|
232
|
+
title: "request.security()",
|
|
233
|
+
status: "partial",
|
|
234
|
+
summary: "Dedicated runtime owns same-symbol MTF security: state machine, higher-TF ratio/calendar aggregation, lookahead/gaps, and lower-TF emulation; cross-symbol and external request.* are rejected.",
|
|
235
|
+
detail: "coverage.md marks request.security() as Partial (line 44): libpineforge.a owns the security state machine (SecurityEvalState, coverage.md line 460), ratio/calendar aggregation via TimeframeAggregator, lookahead/gaps semantics, lower-TF emulation, and per-security diagnostics. The generated subclass drives it through configure_security_evaluators()/register_security_eval(...), evaluate_security(...), and clear_security(...) (lines 480-482). Higher-TF requests route bars through the aggregator: on a complete bar eval_complete_count++; on a partial bar under lookahead_on eval_partial_count++ with is_complete=false; on a partial bar under gaps_on clear_security (lines 492-495). The detail doc (line 657) classifies request.security() itself as Runtime (same-symbol MTF + higher-TF aggregation).\n\nrequest.security_lower_tf() is also Runtime-supported (detail line 658) via synthesize_lower_tf_bars, returning an earliest-to-latest array (coverage.md lines 507-510), but only for same-symbol intraday lower TFs that satisfy supports_lower_tf_emulation: both input and requested are fixed intraday minute strings (no D/W/M/S suffix), requested<input, and input_seconds % requested_seconds == 0 (lines 499-501). Lower-TF emulation rejects lookahead_on/gaps_on (ensure_supported_lower_tf_emulation_flags throws; it is lookahead_off/gaps_off only, lines 503-505). Only numeric and bool element arrays are supported; tuple/UDT/color/string element arrays are rejected by the transpiler (lines 510-512).\n\nThe 'Partial' status reflects that cross-symbol securities are not modelled (only same-symbol) and the external request.* variants are rejected at transpile. coverage.md's narrative (lines 769-776) names eight: request.financial, request.dividends, request.earnings, request.splits, request.currency_rate, request.economic, request.seed, request.quandl. Note: the detail doc table (line 655) additionally lists request.footprint() as Unsupported, so the full external-rejection set in that table is nine, not eight; the entry's eight-item list omits footprint (a completeness gap, but footprint is correctly not claimed as supported). barmerge.gaps_on/off and barmerge.lookahead_on/off are Runtime-backed flags on SecurityEvalState (detail lines 315-318).",
|
|
236
|
+
supported: [
|
|
237
|
+
"request.security",
|
|
238
|
+
"request.security_lower_tf",
|
|
239
|
+
"barmerge.gaps_on",
|
|
240
|
+
"barmerge.gaps_off",
|
|
241
|
+
"barmerge.lookahead_off",
|
|
242
|
+
"barmerge.lookahead_on",
|
|
243
|
+
],
|
|
244
|
+
unsupported: [
|
|
245
|
+
"request.financial",
|
|
246
|
+
"request.dividends",
|
|
247
|
+
"request.earnings",
|
|
248
|
+
"request.splits",
|
|
249
|
+
"request.currency_rate",
|
|
250
|
+
"request.economic",
|
|
251
|
+
"request.seed",
|
|
252
|
+
"request.quandl",
|
|
253
|
+
"request.footprint",
|
|
254
|
+
"barmerge.lookahead_on (for lower-TF emulation)",
|
|
255
|
+
"cross-symbol request.security",
|
|
256
|
+
],
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
id: "bar_magnifier",
|
|
260
|
+
title: "Bar magnifier",
|
|
261
|
+
status: "supported",
|
|
262
|
+
summary: "Dedicated magnifier runtime samples the intrabar OHLC price path with six distribution modes plus optional volume-weighted sample density.",
|
|
263
|
+
detail: "coverage.md lists Bar magnifier as Supported: OHLC-path sampling with 6 distribution modes plus optional volume-weighted sample density, implemented in magnifier.hpp/magnifier.cpp. The MagnifierDistribution enum exposes UNIFORM (equal arc-length spacing), COSINE (Chebyshev-like endpoint density), TRIANGLE (segment-midpoint density), ENDPOINTS (default; always exact O,H,L,C with uniform fill), FRONT_LOADED (density near O), and BACK_LOADED (density near C).\n\nsample_price_path(bar, n, dist) emits at least 2 points, always exactly O first and C last, with the middle leg O->H->L->C when open is closer to high else O->L->H->C (ties low-first). sample_price_path_volume_weighted(...) scales the sample count by bar.volume/mean_volume clamped to [min,max] (default 2..64); BacktestEngine::run_magnified_bar precomputes per-bar mean volume, and the toggle is set_magnifier_volume_weighted(bool) (C ABI: strategy_set_magnifier_volume_weighted).\n\nInside run_magnified_bar the engine threads every sub-bar, calls feed_security_eval_state once per sub-bar so security state machines see the fine bars, and forces is_first_tick_ true on the last sample of the last sub-bar so on_bar advances series history exactly once per script bar. The magnifier is configured via the TF-aware run(...) overloads (bar_magnifier, magnifier_samples, magnifier_dist) and run_backtest_full.",
|
|
264
|
+
supported: [
|
|
265
|
+
"MagnifierDistribution (UNIFORM, COSINE, TRIANGLE, ENDPOINTS, FRONT_LOADED, BACK_LOADED)",
|
|
266
|
+
"sample_price_path",
|
|
267
|
+
"sample_price_path_volume_weighted",
|
|
268
|
+
"set_magnifier_volume_weighted",
|
|
269
|
+
"run_magnified_bar",
|
|
270
|
+
"strategy_set_magnifier_volume_weighted",
|
|
271
|
+
],
|
|
272
|
+
unsupported: [],
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
id: "time_session_timezone",
|
|
276
|
+
title: "Time / session / timezone",
|
|
277
|
+
status: "supported",
|
|
278
|
+
summary: "Dedicated session_time runtime implements pine_time/pine_time_close with session filtering plus session.* state and a mutex-guarded ScopedTimezone for thread-safe TZ formatting.",
|
|
279
|
+
detail: "coverage.md lists Time/session/timezone as Supported: pine_time / pine_time_close with session filtering and a mutex-guarded pine_tz::ScopedTimezone, in session_time.hpp/session_time.cpp (timezone.cpp internal, not in the public include path). pine_time(bar_ms, tf, session, tz, chart_tf) and pine_time_close(...) return Unix milliseconds, or na<int64_t>() when the bar is outside the requested session (matching TradingView's filtered-session semantics); they parse session strings and convert timezones internally. The detail doc classifies time and time_close as Runtime in both var forms (current_bar_.timestamp / pine_time_close) and 1-arg fn forms (pine_time / pine_time_close), along with the 1-arg date/time functions hour(), minute(), second(), dayofmonth(), dayofweek(), month(), weekofyear(), year() (all Runtime).\n\nThe session.* variables are Runtime-backed (Sprint A): session.ismarket, session.ispremarket (0400-RTH_open local), session.ispostmarket (RTH_close-2000 local), and session.isfirstbar/islastbar with per-bar lookahead in engine_run.cpp. session.isfirstbar_regular/islastbar_regular are Runtime but aliased to the non-regular forms because the engine carries a single session string and cannot distinguish RTH vs ETH (documented limitation). time_tradingday is also Runtime (Sprint G1; derives session-day open in syminfo_.timezone with DST-edge fallback). session.regular/session.extended are emitted as string constants by the transpiler.\n\npine_tz::ScopedTimezone(tz) is RAII: it grabs a process-wide mutex, swaps the TZ env var (saving/restoring the prior value), and releases on destruction. This is the only reason pine_str_format_time and the session helpers are thread-safe in a multi-strategy harness. Empty / 'UTC' / 'Etc/UTC' use gmtime_r; other zones swap TZ under ScopedTimezone and use localtime_r. timenow is unsupported (no live clock; always na in batch mode).",
|
|
280
|
+
supported: [
|
|
281
|
+
"pine_time / time",
|
|
282
|
+
"pine_time_close / time_close",
|
|
283
|
+
"session.ismarket",
|
|
284
|
+
"session.ispremarket",
|
|
285
|
+
"session.ispostmarket",
|
|
286
|
+
"session.isfirstbar",
|
|
287
|
+
"session.islastbar",
|
|
288
|
+
"time_tradingday",
|
|
289
|
+
"pine_tz::ScopedTimezone",
|
|
290
|
+
"hour/minute/dayofweek/year (1-arg forms)",
|
|
291
|
+
],
|
|
292
|
+
unsupported: [
|
|
293
|
+
"timenow",
|
|
294
|
+
"session.isfirstbar_regular vs isfirstbar (Runtime but aliased, no RTH/ETH distinction)",
|
|
295
|
+
],
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
id: "timeframe_parsing",
|
|
299
|
+
title: "Timeframe parsing",
|
|
300
|
+
status: "supported",
|
|
301
|
+
summary: "Dedicated timeframe runtime parses TF strings, computes ratios, detects calendar/TF boundaries, auto-detects TF, and aggregates via TimeframeAggregator (passthrough/ratio/calendar).",
|
|
302
|
+
detail: "coverage.md lists Timeframe parsing as Supported: tf_to_seconds, tf_ratio, tf_change, detect_timeframe, calendar boundary detection, and TimeframeAggregator (passthrough/ratio/calendar) in timeframe.hpp/timeframe.cpp. tf_to_seconds(tf) covers minute strings ('1','5','60','240',...), day strings ('D','1D'->86400) and week strings ('W','1W'->604800); month ('M','1M') returns -1 to flag calendar mode. Inline predicates tf_multiplier and tf_is_intraday/_daily/_weekly/_monthly/_seconds back the timeframe.* variables.\n\ntf_ratio(input_tf, target_tf) returns >1 for ratio aggregation, 1 for same TF, -1 for calendar (month), and -2 when target is finer than input. detect_timeframe(bars, n, max_samples=100) infers a TV-style TF string from median timestamp deltas (fallback '1' on insufficient/irregular data). tf_change(prev_ms,curr_ms,tf) and crosses_boundary(prev_ms,curr_ms,period) provide TF/calendar boundary detection. TimeframeAggregator runs in PASSTHROUGH (default ctor), RATIO (ctor (int ratio) -> every ratio input bars produce one output bar), and CALENDAR (ctor (target_tf,input_tf) -> day/week/month boundaries) modes, with feed(bar) returning AggregatedBar{Bar bar; bool is_complete; int sub_bar_count;}.\n\nThe detail doc marks timeframe.change() (tf_change), timeframe.in_seconds() (tf_to_seconds), timeframe.period, .multiplier, .main_period, and the timeframe.is* predicates as Runtime. timeframe.from_seconds() is Transpiler-emitted (inverse of tf_to_seconds), and timeframe.isticks is a constant false via the transpiler since the engine has no tick-TF support.",
|
|
303
|
+
supported: [
|
|
304
|
+
"tf_to_seconds / timeframe.in_seconds",
|
|
305
|
+
"tf_ratio",
|
|
306
|
+
"tf_change / timeframe.change",
|
|
307
|
+
"detect_timeframe",
|
|
308
|
+
"TimeframeAggregator (PASSTHROUGH/RATIO/CALENDAR)",
|
|
309
|
+
"timeframe.period",
|
|
310
|
+
"timeframe.multiplier",
|
|
311
|
+
"timeframe.main_period",
|
|
312
|
+
"timeframe.isintraday/isdaily/isweekly/ismonthly/isseconds",
|
|
313
|
+
],
|
|
314
|
+
unsupported: [
|
|
315
|
+
"timeframe.isticks (constant false; no tick TF)",
|
|
316
|
+
"timeframe.from_seconds (transpiler-emitted, not a runtime module)",
|
|
317
|
+
],
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
id: "numeric_matrices",
|
|
321
|
+
title: "Numeric matrices",
|
|
322
|
+
status: "supported",
|
|
323
|
+
summary: "PineMatrix wraps Eigen::MatrixXd with a full member surface (construction, access, transforms, linear algebra, predicates); element type fixed to double.",
|
|
324
|
+
detail: "The runtime owns `PineMatrix` (header `matrix.hpp`, impl `matrix.cpp`), an Eigen-backed double matrix. Construction is via static `new_(rows, cols, init_val=0)`. Access/structure ops cover `get/set/fill/row/col/rows/columns`, `add_row/add_col/remove_row/remove_col/swap_rows/swap_columns`, plus transforms `copy/submatrix/reshape/reverse/transpose/sort(column, ascending)/concat`.\n\nNumeric capability is the distinguishing feature: aggregation (`avg/min/max/mode/sum`), arithmetic (`diff/mult/pow`), full linear algebra (`det/inv/pinv/rank/trace/eigenvalues/eigenvectors`), `kron`, `elements_count`, and predicates (`is_square/is_identity/is_diagonal/is_antidiagonal/is_symmetric/is_antisymmetric/is_triangular/is_stochastic/is_binary/is_zero`). The per-identifier audit classifies all 44 `matrix.*` functions as Runtime, with numeric methods (det, inv, pinv, eigenvalues, eigenvectors) float-only. `order.ascending`/`order.descending` are Runtime constants used by `matrix.sort`.\n\nThe element type is fixed to double; non-double element matrices fall to the separate typed-matrix template (PineGenericMatrix), which covers int/bool/string/color/UDT element types but with structural ops only. UDT-typed numeric matrices are not runtime-supported.",
|
|
325
|
+
supported: [
|
|
326
|
+
"matrix.new",
|
|
327
|
+
"matrix.det",
|
|
328
|
+
"matrix.inv",
|
|
329
|
+
"matrix.pinv",
|
|
330
|
+
"matrix.eigenvalues",
|
|
331
|
+
"matrix.eigenvectors",
|
|
332
|
+
"matrix.kron",
|
|
333
|
+
"matrix.transpose",
|
|
334
|
+
"matrix.sort",
|
|
335
|
+
"order.ascending",
|
|
336
|
+
"order.descending",
|
|
337
|
+
],
|
|
338
|
+
unsupported: ["UDT-element numeric matrices (numeric methods stay double-only)"],
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
id: "typed_matrices",
|
|
342
|
+
title: "Typed matrices",
|
|
343
|
+
status: "supported",
|
|
344
|
+
summary: "PineGenericMatrix<T> header-only template gives structural matrix ops for int/bool/string/color/UDT element types; no numeric methods.",
|
|
345
|
+
detail: "`PineGenericMatrix<T>` (header-only, `include/pineforge/generic_matrix.hpp`) is a template over `std::vector<std::vector<T>>` (with T=bool specialized to `vector<vector<char>>`) covering non-double element types: int, bool, string, color, and UDT. The per-identifier audit (detail doc line 615) shows `matrix.new<type>()` dispatching `<float>` to `PineMatrix` and all other types to `PineGenericMatrix<T>`.\n\nUDT element types are genuinely runtime-supported: the source template instantiates over arbitrary structs, and `tests/test_generic_matrix_udt.cpp` exercises a `Pivot` UDT through new/get/set/add_row/row/submatrix/transpose/reshape plus strong-exception-guarantee paths. Note the coverage.md sentence 'UDT-typed matrices are not runtime-supported' belongs to the `PineMatrix` (Eigen double) section — it means the double-only `PineMatrix` cannot hold UDTs, not that `PineGenericMatrix<UDT>` is absent.\n\nThe support is structural only: add_row/remove_row/reshape/transpose and the other shape/access operations apply, but numeric methods (det, inv, pinv, eigenvalues, etc.) remain exclusively on `PineMatrix` (double). So a string/color/UDT matrix can be built, indexed, reshaped, and transposed, but cannot be inverted or have eigenvalues computed. (sort is also restricted: int/bool/string only on the primary template, unsupported for bool's specialization.)",
|
|
346
|
+
supported: [
|
|
347
|
+
"matrix.new<int>",
|
|
348
|
+
"matrix.new<bool>",
|
|
349
|
+
"matrix.new<string>",
|
|
350
|
+
"matrix.new<color>",
|
|
351
|
+
"matrix.new<UDT>",
|
|
352
|
+
"add_row",
|
|
353
|
+
"remove_row",
|
|
354
|
+
"reshape",
|
|
355
|
+
"transpose",
|
|
356
|
+
],
|
|
357
|
+
unsupported: [
|
|
358
|
+
"det",
|
|
359
|
+
"inv",
|
|
360
|
+
"pinv",
|
|
361
|
+
"rank",
|
|
362
|
+
"trace",
|
|
363
|
+
"eigenvalues",
|
|
364
|
+
"eigenvectors (all numeric methods are PineMatrix/double-only)",
|
|
365
|
+
],
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
id: "series_history",
|
|
369
|
+
title: "Series history",
|
|
370
|
+
status: "supported",
|
|
371
|
+
summary: "Series<T> header-only ring buffer implements Pine [k] history indexing with push/update/current, max_len default 500, out-of-range returns na<T>().",
|
|
372
|
+
detail: "`Series<T>` (header-only, `series.hpp`) is a generic deque/ring buffer that implements Pine's `[k]` history semantics. `push(value)` records a new bar (newest at front); `update(value)` overwrites the current bar (used for magnifier intrabar); `operator[](k)` returns 0=current, k>=1 = k bars ago; `current()`, `size()`, and `clear()` round it out.\n\n`max_len` defaults to 500. Out-of-range or negative offsets return `na<T>()`. In the magnifier path the engine forces `is_first_tick_` true on the last sample of the last sub-bar so generated `on_bar(...)` advances series history exactly once per script bar. The audit classifies the `series` type keyword as Runtime, backed by this ring buffer.",
|
|
373
|
+
supported: [
|
|
374
|
+
"series",
|
|
375
|
+
"Series<T>::push",
|
|
376
|
+
"Series<T>::update",
|
|
377
|
+
"operator[k] history indexing",
|
|
378
|
+
"current",
|
|
379
|
+
"size",
|
|
380
|
+
"clear",
|
|
381
|
+
],
|
|
382
|
+
unsupported: ["out-of-range/negative [k] returns na (not an error)"],
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
id: "color",
|
|
386
|
+
title: "Color",
|
|
387
|
+
status: "supported",
|
|
388
|
+
summary: "pine_color holds 17 named ARGB constants plus new_color, r, g, b, t helpers; no charting/drawing types.",
|
|
389
|
+
detail: "The runtime owns color via `color.hpp` (header-only): 17 named ARGB constants in `pine_color::*` (aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, orange, purple, red, silver, teal, white, yellow). Helpers: `new_color(c, transp)` clears alpha and packs `(100 - transp) * 2.55` into the high byte; `r(c)/g(c)/b(c)` return channel bytes; `t(c)` recovers transparency (0-100) from the alpha byte.\n\nIn the per-identifier audit, `color.new()`, `color.r/g/b/t()`, and `color()` are Runtime; `color.rgb()` is Transpiler-emitted (inline ARGB assembly) and `color.from_gradient()` is Unknown (no runtime gradient function). There are no charting or drawing types in the runtime.",
|
|
390
|
+
supported: [
|
|
391
|
+
"color (type)",
|
|
392
|
+
"color.new",
|
|
393
|
+
"color.r",
|
|
394
|
+
"color.g",
|
|
395
|
+
"color.b",
|
|
396
|
+
"color.t",
|
|
397
|
+
"17 color.* named constants",
|
|
398
|
+
],
|
|
399
|
+
unsupported: [
|
|
400
|
+
"color.from_gradient (no runtime gradient)",
|
|
401
|
+
"drawing/charting color types",
|
|
402
|
+
],
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
id: "na",
|
|
406
|
+
title: "`na` / `is_na`",
|
|
407
|
+
status: "supported",
|
|
408
|
+
summary: "na.hpp provides generic na<T>() generators and is_na(...) checks for double (NaN), int/int64 (INT_MIN), and bool (false).",
|
|
409
|
+
detail: "The runtime owns `na` via `na.hpp` (header-only). `na<T>()` generates the sentinel per type: double -> NaN, int/int64_t -> INT_MIN, bool -> false. `is_na(double)` uses `std::isnan`; an integer overload checks `== INT_MIN`. These sentinels are used throughout the runtime (e.g. out-of-range `Series[k]`, absent pivot levels, `margin_liquidation_price()`, na-accepted syminfo fields).\n\nIn the per-identifier audit, both the `na` variable/fn and the `na()` function form map to `na<T>()` in `na.hpp` (Runtime). Related helpers `nz()` (`is_na(x) ? 0.0 : x`) and `fixnan()` (`is_na(x) ? prev : x`) are Transpiler-emitted inline rather than runtime classes.",
|
|
410
|
+
supported: [
|
|
411
|
+
"na",
|
|
412
|
+
"na()",
|
|
413
|
+
"is_na",
|
|
414
|
+
"na<double>() NaN",
|
|
415
|
+
"na<int>()/na<int64_t>() INT_MIN",
|
|
416
|
+
"na<bool>() false",
|
|
417
|
+
],
|
|
418
|
+
unsupported: [
|
|
419
|
+
"nz() (transpiler-inlined, not a runtime module)",
|
|
420
|
+
"fixnan() (transpiler-inlined)",
|
|
421
|
+
],
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
id: "logging_errors",
|
|
425
|
+
title: "Logging / runtime errors",
|
|
426
|
+
status: "supported",
|
|
427
|
+
summary: "Dedicated header-only log.hpp runtime fully backs log.info/warning/error and runtime.error (which throws std::runtime_error).",
|
|
428
|
+
detail: "The coverage.md summary table lists Logging / runtime errors as Supported, owned by libpineforge.a. log.hpp exposes four inline functions: pine_log_info, pine_log_warning, pine_log_error (each writing to stderr with [INFO]/[WARN]/[ERROR] prefixes) and pine_runtime_error, which throws std::runtime_error. The detail doc maps the Pine identifiers log.info() -> pine_log_info(), log.warning() -> pine_log_warning(), log.error() -> pine_log_error(), and runtime.error() -> pine_runtime_error(), all marked Runtime.\n\nThe runtime additionally raises std::runtime_error itself from validate_security_timeframes, feed_security_eval_state (lower-TF synthesis failure), and ensure_supported_lower_tf_emulation_flags. The one logging-adjacent gap is the @strategy_alert_message annotation, which is parse-and-skip (alert template, no runtime), but that belongs to the alert surface rather than the log namespace.",
|
|
429
|
+
supported: [
|
|
430
|
+
"log.info",
|
|
431
|
+
"log.warning",
|
|
432
|
+
"log.error",
|
|
433
|
+
"runtime.error",
|
|
434
|
+
"pine_log_info",
|
|
435
|
+
"pine_log_warning",
|
|
436
|
+
"pine_log_error",
|
|
437
|
+
"pine_runtime_error",
|
|
438
|
+
],
|
|
439
|
+
unsupported: [
|
|
440
|
+
"@strategy_alert_message (parse-and-skip; alert template, not part of log namespace)",
|
|
441
|
+
],
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
id: "arrays_maps_udts",
|
|
445
|
+
title: "Arrays / maps / UDTs",
|
|
446
|
+
status: "via_transpiler",
|
|
447
|
+
summary: "No runtime array/map/UDT module exists; PineForge's transpiler emits them inline as std::vector, std::unordered_map, and generated C++ structs, so they work end-to-end.",
|
|
448
|
+
detail: "coverage.md flags this category as 'No runtime module (Pine surface still supported via consumer compiler)'. The runtime ships no array.hpp / map.hpp / UDT module; its only generic value containers are Series<T> (history), PineMatrix (numeric matrices), and PineGenericMatrix<T> (typed matrices). Pine arrays/maps/UDTs themselves still work in PineForge because the transpiler emits array<T> as std::vector<T>, map<K,V> as std::unordered_map<K,V>, and UDTs (including nested fields and array<UDT>) as plain C++ structs.\n\nThe detail doc confirms this: the array type, map type, all 54 array.* functions, and all 11 map.* functions are tagged Transpiler (no runtime module). The type and method keywords are Transpiler-handled for UDT struct/method generation. array.sort/sort_indices use std::sort; array.from is supported. order.ascending/order.descending are Runtime (used by array.sort and PineMatrix::sort).\n\nGaps to note: drawing-type arrays (array.new_label/line/box/table, etc.) are parsed but the underlying drawing ops are skipped, since there is no drawing runtime. request.security_lower_tf returns arrays of numeric/bool elements only; tuple, UDT, color, and string element arrays are rejected by the transpiler.",
|
|
449
|
+
supported: [
|
|
450
|
+
"array (type)",
|
|
451
|
+
"array.new",
|
|
452
|
+
"array.from",
|
|
453
|
+
"array.sort",
|
|
454
|
+
"array.sort_indices",
|
|
455
|
+
"map (type)",
|
|
456
|
+
"map.* (11 fns)",
|
|
457
|
+
"type (UDT struct gen)",
|
|
458
|
+
"method (UDT method gen)",
|
|
459
|
+
"order.ascending",
|
|
460
|
+
"order.descending",
|
|
461
|
+
"matrix (PineMatrix / PineGenericMatrix runtime)",
|
|
462
|
+
],
|
|
463
|
+
unsupported: [
|
|
464
|
+
"array.new_label/line/box/table/linefill (drawing-type arrays: container works, drawing ops skipped)",
|
|
465
|
+
"request.security_lower_tf tuple/UDT/color/string element arrays (transpiler-rejected)",
|
|
466
|
+
],
|
|
467
|
+
},
|
|
468
|
+
{
|
|
469
|
+
id: "drawing_plotting_alerts",
|
|
470
|
+
title: "Drawing / plotting / alerts",
|
|
471
|
+
status: "unsupported",
|
|
472
|
+
summary: "No charting/drawing/alert runtime exists; the transpiler parses-and-skips these so strategies still compile and run, but no visual side-effects or live alerts are emitted.",
|
|
473
|
+
detail: "coverage.md lists Drawing / plotting / alerts as 'No runtime module' and states explicitly that no charting/drawing/alert types exist in the runtime; PineForge's transpiler parses-and-skips them so the strategy still compiles and runs, but no visual side-effects are produced. This is by design: PineForge is an offline backtesting engine, not a renderer, so visual/charting/alert APIs are out of scope regardless of consumer.\n\nThe detail doc tags the whole surface parse-and-skip: plot, plotshape, plotchar, plotcandle, plotbar, plotarrow (compile, no visual output); fill, hline, bgcolor, barcolor; the box, label, line, linefill, polyline, table drawing types and all their methods (e.g. label.* 20 fns, line.* 20 fns, box.* 27 fns); their .all collection variables; and the drawing/plotting style constants (label.style_* 22, line.style_* 6, plot.style_* 12, shape.*, location.*, extend.*, size.*, position.*, xloc.*, yloc.*). chart.point and its methods are parse-and-skip chart geometry.\n\nAlerts are the same: alert() and alertcondition() are parse-and-skip (parsed, no live emission); alert.freq_all/freq_once_per_bar/freq_once_per_bar_close constants and the @strategy_alert_message annotation are parse-and-skip. The forward-looking note rates plotting primitives as 'Feasible' via a future report-as-data path, but live alert() is 'Out of scope structurally' because PineForge produces no realtime stream. indicator() is also parse-and-skip since the engine is strategy-only.",
|
|
474
|
+
supported: [],
|
|
475
|
+
unsupported: [
|
|
476
|
+
"plot",
|
|
477
|
+
"plotshape",
|
|
478
|
+
"plotchar",
|
|
479
|
+
"plotcandle",
|
|
480
|
+
"plotbar",
|
|
481
|
+
"plotarrow",
|
|
482
|
+
"fill",
|
|
483
|
+
"hline",
|
|
484
|
+
"bgcolor",
|
|
485
|
+
"barcolor",
|
|
486
|
+
"label.new",
|
|
487
|
+
"line.new",
|
|
488
|
+
"box.new",
|
|
489
|
+
"table.*",
|
|
490
|
+
"polyline.*",
|
|
491
|
+
"linefill.*",
|
|
492
|
+
"chart.point.*",
|
|
493
|
+
"alert",
|
|
494
|
+
"alertcondition",
|
|
495
|
+
"alert.freq_* constants",
|
|
496
|
+
"@strategy_alert_message",
|
|
497
|
+
"indicator",
|
|
498
|
+
],
|
|
499
|
+
},
|
|
500
|
+
],
|
|
501
|
+
prefix_map: {
|
|
502
|
+
"ta.": "ta",
|
|
503
|
+
"math.": "math",
|
|
504
|
+
"str.": "str",
|
|
505
|
+
"request.": "request_security",
|
|
506
|
+
"barmerge.": "request_security",
|
|
507
|
+
"strategy.": "strategy_orders",
|
|
508
|
+
"strategy.risk.": "strategy_risk",
|
|
509
|
+
"strategy.direction.": "strategy_risk",
|
|
510
|
+
"strategy.closedtrades.": "strategy_state",
|
|
511
|
+
"strategy.opentrades.": "strategy_state",
|
|
512
|
+
"input.": "inputs",
|
|
513
|
+
"matrix.": "numeric_matrices",
|
|
514
|
+
"array.": "arrays_maps_udts",
|
|
515
|
+
"map.": "arrays_maps_udts",
|
|
516
|
+
"color.": "color",
|
|
517
|
+
"timeframe.": "timeframe_parsing",
|
|
518
|
+
"session.": "time_session_timezone",
|
|
519
|
+
"log.": "logging_errors",
|
|
520
|
+
"runtime.": "logging_errors",
|
|
521
|
+
"order.": "arrays_maps_udts",
|
|
522
|
+
"barstate.": "strategy_state",
|
|
523
|
+
"chart.": "drawing_plotting_alerts",
|
|
524
|
+
"label.": "drawing_plotting_alerts",
|
|
525
|
+
"line.": "drawing_plotting_alerts",
|
|
526
|
+
"box.": "drawing_plotting_alerts",
|
|
527
|
+
"table.": "drawing_plotting_alerts",
|
|
528
|
+
"polyline.": "drawing_plotting_alerts",
|
|
529
|
+
"linefill.": "drawing_plotting_alerts",
|
|
530
|
+
"alert.": "drawing_plotting_alerts",
|
|
531
|
+
},
|
|
532
|
+
alias_map: {
|
|
533
|
+
alert: "drawing_plotting_alerts",
|
|
534
|
+
alertcondition: "drawing_plotting_alerts",
|
|
535
|
+
plot: "drawing_plotting_alerts",
|
|
536
|
+
plotshape: "drawing_plotting_alerts",
|
|
537
|
+
plotchar: "drawing_plotting_alerts",
|
|
538
|
+
plotcandle: "drawing_plotting_alerts",
|
|
539
|
+
plotbar: "drawing_plotting_alerts",
|
|
540
|
+
plotarrow: "drawing_plotting_alerts",
|
|
541
|
+
hline: "drawing_plotting_alerts",
|
|
542
|
+
fill: "drawing_plotting_alerts",
|
|
543
|
+
bgcolor: "drawing_plotting_alerts",
|
|
544
|
+
barcolor: "drawing_plotting_alerts",
|
|
545
|
+
label: "drawing_plotting_alerts",
|
|
546
|
+
line: "drawing_plotting_alerts",
|
|
547
|
+
box: "drawing_plotting_alerts",
|
|
548
|
+
table: "drawing_plotting_alerts",
|
|
549
|
+
polyline: "drawing_plotting_alerts",
|
|
550
|
+
linefill: "drawing_plotting_alerts",
|
|
551
|
+
indicator: "drawing_plotting_alerts",
|
|
552
|
+
array: "arrays_maps_udts",
|
|
553
|
+
map: "arrays_maps_udts",
|
|
554
|
+
matrix: "numeric_matrices",
|
|
555
|
+
series: "series_history",
|
|
556
|
+
color: "color",
|
|
557
|
+
na: "na",
|
|
558
|
+
is_na: "na",
|
|
559
|
+
nz: "na",
|
|
560
|
+
fixnan: "na",
|
|
561
|
+
input: "inputs",
|
|
562
|
+
strategy: "strategy_orders",
|
|
563
|
+
time: "time_session_timezone",
|
|
564
|
+
time_close: "time_session_timezone",
|
|
565
|
+
timenow: "time_session_timezone",
|
|
566
|
+
hour: "time_session_timezone",
|
|
567
|
+
minute: "time_session_timezone",
|
|
568
|
+
second: "time_session_timezone",
|
|
569
|
+
dayofweek: "time_session_timezone",
|
|
570
|
+
dayofmonth: "time_session_timezone",
|
|
571
|
+
month: "time_session_timezone",
|
|
572
|
+
year: "time_session_timezone",
|
|
573
|
+
weekofyear: "time_session_timezone",
|
|
574
|
+
barstate: "strategy_state",
|
|
575
|
+
request: "request_security",
|
|
576
|
+
library: "engine_lifecycle",
|
|
577
|
+
import: "engine_lifecycle",
|
|
578
|
+
export: "engine_lifecycle",
|
|
579
|
+
},
|
|
580
|
+
};
|
|
581
|
+
/**
|
|
582
|
+
* Lightweight index of every coverage topic — id/title/status/summary only,
|
|
583
|
+
* with the legend and version. Strips the heavy detail/supported/unsupported
|
|
584
|
+
* fields so it stays cheap to return.
|
|
585
|
+
*/
|
|
586
|
+
export function coverageIndex() {
|
|
587
|
+
return {
|
|
588
|
+
coverage_version: COVERAGE.coverage_version,
|
|
589
|
+
legend: COVERAGE.legend,
|
|
590
|
+
topics: COVERAGE.topics.map((t) => ({
|
|
591
|
+
id: t.id,
|
|
592
|
+
title: t.title,
|
|
593
|
+
status: t.status,
|
|
594
|
+
summary: t.summary,
|
|
595
|
+
})),
|
|
596
|
+
};
|
|
597
|
+
}
|
|
598
|
+
/**
|
|
599
|
+
* Full topic object for a given id. On an unknown id returns an error marker
|
|
600
|
+
* listing the valid ids (rather than throwing) so the tool surface degrades
|
|
601
|
+
* gracefully.
|
|
602
|
+
*/
|
|
603
|
+
export function coverageTopic(id) {
|
|
604
|
+
const topic = COVERAGE.topics.find((t) => t.id === id);
|
|
605
|
+
if (topic)
|
|
606
|
+
return topic;
|
|
607
|
+
return {
|
|
608
|
+
error: `Unknown coverage topic id '${id}'.`,
|
|
609
|
+
query: id,
|
|
610
|
+
valid_ids: COVERAGE.topics.map((t) => t.id),
|
|
611
|
+
};
|
|
612
|
+
}
|
|
613
|
+
/**
|
|
614
|
+
* Resolve an arbitrary Pine identifier / namespace to a coverage status.
|
|
615
|
+
*
|
|
616
|
+
* Resolution order:
|
|
617
|
+
* 1. Exact identifier match in any topic's supported[] / unsupported[]:
|
|
618
|
+
* a hit in unsupported[] => "unsupported"; a hit in supported[] => that
|
|
619
|
+
* topic's own status (so a feature listed under a `partial` topic reports
|
|
620
|
+
* `partial`, etc.).
|
|
621
|
+
* 2. Longest matching namespace prefix in prefix_map => that topic's status.
|
|
622
|
+
* 3. Exact key in alias_map => that topic's status.
|
|
623
|
+
* 4. Otherwise { status: "not_found" }.
|
|
624
|
+
*/
|
|
625
|
+
const FEATURE_IDENT = /^[A-Za-z_][A-Za-z0-9_.]*\*?$/;
|
|
626
|
+
/**
|
|
627
|
+
* Identifier tokens inside a supported[]/unsupported[] entry, ignoring
|
|
628
|
+
* parenthetical notes and compound "a / b / c" lists. So
|
|
629
|
+
* "strategy.cancel / strategy.cancel_all" yields both ids, and
|
|
630
|
+
* "barmerge.lookahead_on (for lower-TF emulation)" yields just the id.
|
|
631
|
+
*/
|
|
632
|
+
function entryIdentifiers(entry) {
|
|
633
|
+
return entry
|
|
634
|
+
.replace(/\([^)]*\)/g, " ")
|
|
635
|
+
.split(/[\s/,]+/)
|
|
636
|
+
.map((s) => s.replace(/\(\)$/, "").trim())
|
|
637
|
+
.filter((s) => s.length > 0 && FEATURE_IDENT.test(s));
|
|
638
|
+
}
|
|
639
|
+
/** Normalize a lookup query for exact comparison (drop a trailing "()"). */
|
|
640
|
+
function normalizeFeatureQuery(q) {
|
|
641
|
+
return q.replace(/\(\)$/, "").trim();
|
|
642
|
+
}
|
|
643
|
+
export function checkPineFeature(feature) {
|
|
644
|
+
const query = feature;
|
|
645
|
+
const q = normalizeFeatureQuery(query);
|
|
646
|
+
// (1) Exact identifier match in supported[] / unsupported[].
|
|
647
|
+
for (const t of COVERAGE.topics) {
|
|
648
|
+
if (t.unsupported.some((e) => entryIdentifiers(e).includes(q))) {
|
|
649
|
+
return {
|
|
650
|
+
query,
|
|
651
|
+
status: "unsupported",
|
|
652
|
+
topic: t.id,
|
|
653
|
+
note: `'${query}' is listed as unsupported under topic '${t.id}' (${t.title}).`,
|
|
654
|
+
};
|
|
655
|
+
}
|
|
656
|
+
if (t.supported.some((e) => entryIdentifiers(e).includes(q))) {
|
|
657
|
+
return {
|
|
658
|
+
query,
|
|
659
|
+
status: t.status,
|
|
660
|
+
topic: t.id,
|
|
661
|
+
note: `'${query}' is listed as supported under topic '${t.id}' (${t.title}), whose overall status is '${t.status}'.`,
|
|
662
|
+
};
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
// (2) Longest namespace prefix in prefix_map.
|
|
666
|
+
let bestPrefix;
|
|
667
|
+
for (const prefix of Object.keys(COVERAGE.prefix_map)) {
|
|
668
|
+
if (query.startsWith(prefix)) {
|
|
669
|
+
if (bestPrefix === undefined || prefix.length > bestPrefix.length) {
|
|
670
|
+
bestPrefix = prefix;
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
if (bestPrefix !== undefined) {
|
|
675
|
+
const topicId = COVERAGE.prefix_map[bestPrefix];
|
|
676
|
+
const t = COVERAGE.topics.find((x) => x.id === topicId);
|
|
677
|
+
const status = t ? t.status : "not_found";
|
|
678
|
+
return {
|
|
679
|
+
query,
|
|
680
|
+
status,
|
|
681
|
+
topic: topicId,
|
|
682
|
+
note: `'${query}' resolved by namespace prefix '${bestPrefix}' to topic '${topicId}'` +
|
|
683
|
+
(t ? ` (${t.title}), overall status '${t.status}'. Call get_coverage_topic for the exact supported/unsupported lists.` : "."),
|
|
684
|
+
};
|
|
685
|
+
}
|
|
686
|
+
// (3) Exact alias_map key.
|
|
687
|
+
const aliasTopicId = COVERAGE.alias_map[query];
|
|
688
|
+
if (aliasTopicId !== undefined) {
|
|
689
|
+
const t = COVERAGE.topics.find((x) => x.id === aliasTopicId);
|
|
690
|
+
const status = t ? t.status : "not_found";
|
|
691
|
+
return {
|
|
692
|
+
query,
|
|
693
|
+
status,
|
|
694
|
+
topic: aliasTopicId,
|
|
695
|
+
note: `'${query}' resolved by alias to topic '${aliasTopicId}'` +
|
|
696
|
+
(t ? ` (${t.title}), overall status '${t.status}'. Call get_coverage_topic for the exact supported/unsupported lists.` : "."),
|
|
697
|
+
};
|
|
698
|
+
}
|
|
699
|
+
// (4) Miss.
|
|
700
|
+
return {
|
|
701
|
+
query,
|
|
702
|
+
status: "not_found",
|
|
703
|
+
note: `'${query}' did not match any known Pine identifier, namespace prefix, or alias. ` +
|
|
704
|
+
`Call list_coverage_topics to browse all topics, or check the spelling / namespace.`,
|
|
705
|
+
};
|
|
706
|
+
}
|
|
707
|
+
//# sourceMappingURL=coverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage.js","sourceRoot":"","sources":["../src/coverage.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -11,15 +11,51 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
11
11
|
import { z } from "zod";
|
|
12
12
|
import { mkdtemp, mkdir, writeFile, rm, stat, readFile } from "node:fs/promises";
|
|
13
13
|
import { tmpdir } from "node:os";
|
|
14
|
-
import { join, resolve, isAbsolute, dirname } from "node:path";
|
|
14
|
+
import { join, resolve, isAbsolute, dirname, relative } from "node:path";
|
|
15
15
|
import { VERSION } from "./version.js";
|
|
16
16
|
import { DEFAULT_IMAGE, stringifyParams, } from "./engine.js";
|
|
17
|
+
import { coverageIndex, coverageTopic, checkPineFeature } from "./coverage.js";
|
|
17
18
|
// ─── Config ───────────────────────────────────────────────────────────────
|
|
18
19
|
const ALLOW_ANYWHERE = process.env.PINEFORGE_ALLOW_ANYWHERE === "1";
|
|
19
20
|
const BINANCE_SPOT_BASE = "https://api.binance.com";
|
|
20
21
|
const BINANCE_FAPI_BASE = "https://fapi.binance.com";
|
|
21
22
|
const BINANCE_KLINES_LIMIT = 1000;
|
|
22
23
|
const BINANCE_PAGE_DELAY_MS = 200;
|
|
24
|
+
// A full backtest report (trades + equity curve) can be megabytes — large
|
|
25
|
+
// enough to blow past an MCP client's tool-result size cap ("result too
|
|
26
|
+
// large"). When the serialized result exceeds this many bytes we write the
|
|
27
|
+
// full JSON to a file under the working dir and return a compact summary that
|
|
28
|
+
// points at it via `report_path`. Tunable via PINEFORGE_MAX_INLINE_BYTES.
|
|
29
|
+
const MAX_INLINE_BYTES = Number(process.env.PINEFORGE_MAX_INLINE_BYTES) || 200_000;
|
|
30
|
+
// The working dir (/work) is a bind mount of a HOST directory the user passed
|
|
31
|
+
// via `-v <hostdir>:/work`. A container path like /work/foo.json is NOT
|
|
32
|
+
// openable on the host, so the path we hand back must be host-resolvable:
|
|
33
|
+
// - if PINEFORGE_HOST_WORKDIR is set (the host side of the mount), return an
|
|
34
|
+
// absolute HOST path the user can open directly;
|
|
35
|
+
// - otherwise return the path RELATIVE to the mount root, which the user
|
|
36
|
+
// resolves against their own <hostdir>. Either way the file physically
|
|
37
|
+
// lands in their mounted directory and survives `--rm`.
|
|
38
|
+
const HOST_WORKDIR = process.env.PINEFORGE_HOST_WORKDIR;
|
|
39
|
+
async function writeReportFile(value, explicitPath, kind) {
|
|
40
|
+
const name = explicitPath ?? `pineforge-${kind}-${Date.now()}.json`;
|
|
41
|
+
const containerPath = resolveScopedPath(name, "report");
|
|
42
|
+
await mkdir(dirname(containerPath), { recursive: true });
|
|
43
|
+
await writeFile(containerPath, JSON.stringify(value, null, 2), "utf8");
|
|
44
|
+
const rel = relative(process.cwd(), containerPath) || name;
|
|
45
|
+
if (HOST_WORKDIR) {
|
|
46
|
+
return {
|
|
47
|
+
user_path: join(HOST_WORKDIR, rel),
|
|
48
|
+
container_path: containerPath,
|
|
49
|
+
note: "Report written to your host directory (PINEFORGE_HOST_WORKDIR); open report_path directly.",
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
user_path: rel,
|
|
54
|
+
container_path: containerPath,
|
|
55
|
+
note: `Report written inside the host directory you mounted at /work — open <your -v hostdir>/${rel}. ` +
|
|
56
|
+
`Pass -e PINEFORGE_HOST_WORKDIR=<hostdir> to get an absolute host path in report_path instead.`,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
23
59
|
async function runBacktest(runner, args) {
|
|
24
60
|
const csvPath = await resolveCsvPath(args.ohlcv_csv_path);
|
|
25
61
|
const image = args.image ?? DEFAULT_IMAGE;
|
|
@@ -36,10 +72,30 @@ async function runBacktest(runner, args) {
|
|
|
36
72
|
overrides: args.overrides,
|
|
37
73
|
runtime: args.runtime,
|
|
38
74
|
});
|
|
39
|
-
|
|
75
|
+
const full = {
|
|
40
76
|
...report,
|
|
41
77
|
_meta: { strategy_cpp_bytes: cpp.length, image: runner.mode === "docker" ? image : "local" },
|
|
42
78
|
};
|
|
79
|
+
// Offload oversized reports to a file so the inline result stays small.
|
|
80
|
+
const text = JSON.stringify(full, null, 2);
|
|
81
|
+
if (text.length <= MAX_INLINE_BYTES)
|
|
82
|
+
return full;
|
|
83
|
+
const loc = await writeReportFile(full, args.report_path, "backtest");
|
|
84
|
+
const r = full;
|
|
85
|
+
const trades = Array.isArray(r.trades) ? r.trades : undefined;
|
|
86
|
+
return {
|
|
87
|
+
summary: r.summary,
|
|
88
|
+
applied_inputs: r.applied_inputs,
|
|
89
|
+
applied_overrides: r.applied_overrides,
|
|
90
|
+
elapsed_seconds: r.elapsed_seconds,
|
|
91
|
+
total_trades: trades ? trades.length : undefined,
|
|
92
|
+
report_path: loc.user_path,
|
|
93
|
+
report_path_in_container: loc.container_path,
|
|
94
|
+
truncated: true,
|
|
95
|
+
note: `Full report (${text.length} bytes, including the trade list and equity curve) exceeded the inline ` +
|
|
96
|
+
`limit (${MAX_INLINE_BYTES} bytes); the summary above has the headline P&L metrics. ${loc.note}`,
|
|
97
|
+
_meta: r._meta,
|
|
98
|
+
};
|
|
43
99
|
}
|
|
44
100
|
finally {
|
|
45
101
|
rm(tmp, { recursive: true, force: true }).catch(() => undefined);
|
|
@@ -102,7 +158,7 @@ async function runBacktestGrid(runner, args) {
|
|
|
102
158
|
return typeof v === "number" ? v : -Infinity;
|
|
103
159
|
};
|
|
104
160
|
succeeded.sort((a, b) => sortValue(b) - sortValue(a));
|
|
105
|
-
|
|
161
|
+
const full = {
|
|
106
162
|
total_combinations: combos.length,
|
|
107
163
|
succeeded: succeeded.length,
|
|
108
164
|
failed: failed.length,
|
|
@@ -112,6 +168,27 @@ async function runBacktestGrid(runner, args) {
|
|
|
112
168
|
best: succeeded[0] ?? null,
|
|
113
169
|
results: [...succeeded, ...failed],
|
|
114
170
|
};
|
|
171
|
+
// Offload an oversized sweep to a file; inline only the top-ranked subset.
|
|
172
|
+
const text = JSON.stringify(full, null, 2);
|
|
173
|
+
if (text.length <= MAX_INLINE_BYTES)
|
|
174
|
+
return full;
|
|
175
|
+
const loc = await writeReportFile(full, args.report_path, "grid");
|
|
176
|
+
const TOP = 10;
|
|
177
|
+
return {
|
|
178
|
+
total_combinations: full.total_combinations,
|
|
179
|
+
succeeded: full.succeeded,
|
|
180
|
+
failed: full.failed,
|
|
181
|
+
sort_by: full.sort_by,
|
|
182
|
+
image: full.image,
|
|
183
|
+
_meta: full._meta,
|
|
184
|
+
best: full.best,
|
|
185
|
+
top_results: succeeded.slice(0, TOP),
|
|
186
|
+
results_truncated: succeeded.length > TOP || failed.length > 0,
|
|
187
|
+
report_path: loc.user_path,
|
|
188
|
+
report_path_in_container: loc.container_path,
|
|
189
|
+
note: `Full sweep (${text.length} bytes across ${combos.length} combinations) exceeded the inline limit ` +
|
|
190
|
+
`(${MAX_INLINE_BYTES} bytes). Inlined the top ${TOP} by ${sortBy}. ${loc.note}`,
|
|
191
|
+
};
|
|
115
192
|
}
|
|
116
193
|
finally {
|
|
117
194
|
rm(tmp, { recursive: true, force: true }).catch(() => undefined);
|
|
@@ -622,7 +699,9 @@ export function createServer(runner, opts) {
|
|
|
622
699
|
"(initial_capital, commission_value, default_qty_value, pyramiding, " +
|
|
623
700
|
"slippage, default_qty_type, commission_type, process_orders_on_close). " +
|
|
624
701
|
"Returns the parsed JSON report (summary, trades, applied_inputs, " +
|
|
625
|
-
"applied_overrides, elapsed_seconds).
|
|
702
|
+
"applied_overrides, elapsed_seconds). If the report is too large to " +
|
|
703
|
+
"return inline it is written to report_path and a compact summary " +
|
|
704
|
+
"(with that path) is returned instead. Use backtest_pine_grid for sweeps.",
|
|
626
705
|
inputSchema: {
|
|
627
706
|
source: z.string().describe("PineScript v6 source."),
|
|
628
707
|
ohlcv_csv_path: z.string().describe("Absolute or cwd-relative path to OHLCV CSV with header " +
|
|
@@ -642,8 +721,13 @@ export function createServer(runner, opts) {
|
|
|
642
721
|
"price-path sampling for tighter stop / limit fills. Each field is " +
|
|
643
722
|
"optional and only forwarded to the engine when set. Call " +
|
|
644
723
|
"list_engine_params for the full catalog."),
|
|
724
|
+
report_path: z.string().optional().describe("Where to write the full JSON report IF it is too large to return " +
|
|
725
|
+
"inline. Large backtests (long trade lists + equity curves) are " +
|
|
726
|
+
"offloaded to this file and the tool returns a compact summary + " +
|
|
727
|
+
"report_path instead; read the file for the complete trades/equity. " +
|
|
728
|
+
"Defaults to pineforge-backtest-<timestamp>.json in the working dir."),
|
|
645
729
|
},
|
|
646
|
-
}, async ({ source, ohlcv_csv_path, image, inputs, overrides, runtime }) => asTextResult(await runBacktest(runner, { source, ohlcv_csv_path, image, inputs, overrides, runtime })));
|
|
730
|
+
}, async ({ source, ohlcv_csv_path, image, inputs, overrides, runtime, report_path }) => asTextResult(await runBacktest(runner, { source, ohlcv_csv_path, image, inputs, overrides, runtime, report_path })));
|
|
647
731
|
server.registerTool("backtest_pine_grid", {
|
|
648
732
|
description: "Use when the user wants to optimize, sweep, tune, or compare PineScript parameter values " +
|
|
649
733
|
"(e.g. 'try fast length 8/12/19', 'find the best commission/qty settings') rather than test " +
|
|
@@ -678,6 +762,10 @@ export function createServer(runner, opts) {
|
|
|
678
762
|
.describe("Include the per-trade list in each result. Default false (saves tokens)."),
|
|
679
763
|
sort_by: z.enum(["net_pnl", "win_rate_pct", "max_drawdown", "total_trades"])
|
|
680
764
|
.optional().describe("summary.* field to rank by, descending. Default net_pnl."),
|
|
765
|
+
report_path: z.string().optional().describe("Where to write the full sweep JSON IF it is too large to return " +
|
|
766
|
+
"inline. Oversized sweeps are offloaded here and the tool returns " +
|
|
767
|
+
"the best + top-ranked combinations + report_path; read the file for " +
|
|
768
|
+
"all combinations. Defaults to pineforge-grid-<timestamp>.json in the working dir."),
|
|
681
769
|
},
|
|
682
770
|
}, async (args) => asTextResult(await runBacktestGrid(runner, args)));
|
|
683
771
|
server.registerTool("fetch_binance_ohlcv", {
|
|
@@ -753,6 +841,50 @@ export function createServer(runner, opts) {
|
|
|
753
841
|
description: spec.description,
|
|
754
842
|
})),
|
|
755
843
|
}));
|
|
844
|
+
server.registerTool("list_coverage_topics", {
|
|
845
|
+
description: "START HERE before writing, porting, or backtesting a Pine v6 strategy on " +
|
|
846
|
+
"PineForge. PineForge implements a SUBSET of Pine v6, so checking coverage " +
|
|
847
|
+
"first avoids a strategy that compiles but silently misbehaves vs " +
|
|
848
|
+
"TradingView. Lists every coverage topic with a one-line status " +
|
|
849
|
+
"(supported / partial / unsupported / via_transpiler) and summary, plus the " +
|
|
850
|
+
"legend (note: via_transpiler still works end-to-end; unsupported means " +
|
|
851
|
+
"parsed-and-skipped or rejected) and the coverage version. Cheap, free, " +
|
|
852
|
+
"local — no engine run, no I/O. Then drill in with get_coverage_topic for " +
|
|
853
|
+
"one area's full supported/unsupported lists, or check_pine_feature to look " +
|
|
854
|
+
"up a single identifier.",
|
|
855
|
+
inputSchema: {},
|
|
856
|
+
}, async () => asTextResult(coverageIndex()));
|
|
857
|
+
server.registerTool("get_coverage_topic", {
|
|
858
|
+
description: "Returns the full detail plus the exact supported[] and unsupported[] " +
|
|
859
|
+
"feature lists for ONE coverage topic id (ids from list_coverage_topics, " +
|
|
860
|
+
"e.g. 'ta', 'strategy_orders', 'request_security', " +
|
|
861
|
+
"'drawing_plotting_alerts'). Use when you are about to work in a feature " +
|
|
862
|
+
"area and need to know precisely which functions there are implemented vs " +
|
|
863
|
+
"skipped — e.g. before using request.security, the ta.* library, or " +
|
|
864
|
+
"strategy risk knobs. Unknown ids return an error marker listing the valid " +
|
|
865
|
+
"ids. Local, free, no engine run.",
|
|
866
|
+
inputSchema: {
|
|
867
|
+
topic: z.string().describe("Coverage topic id from list_coverage_topics (e.g. 'ta', " +
|
|
868
|
+
"'strategy_orders', 'request_security', 'drawing_plotting_alerts')."),
|
|
869
|
+
},
|
|
870
|
+
}, async ({ topic }) => asTextResult(coverageTopic(topic)));
|
|
871
|
+
server.registerTool("check_pine_feature", {
|
|
872
|
+
description: "Answer \"does PineForge support X?\" for a specific Pine v6 identifier or " +
|
|
873
|
+
"namespace (e.g. 'ta.supertrend', 'alert', 'array.new', " +
|
|
874
|
+
"'request.financial'). Use it (a) BEFORE relying on any function you are " +
|
|
875
|
+
"unsure about while writing a strategy, and (b) to DIAGNOSE a backtest that " +
|
|
876
|
+
"compiled but behaved wrong or empty — visual & alert APIs (plot, label, " +
|
|
877
|
+
"line, box, table, alert) are parsed-and-skipped and produce NO effect. " +
|
|
878
|
+
"Resolves by exact feature match, then longest namespace prefix, then " +
|
|
879
|
+
"alias, returning {query, status, topic, note} where status is " +
|
|
880
|
+
"supported / partial / unsupported / via_transpiler / not_found " +
|
|
881
|
+
"(via_transpiler = works end-to-end; unsupported = skipped or rejected). " +
|
|
882
|
+
"Local, free, no engine run.",
|
|
883
|
+
inputSchema: {
|
|
884
|
+
feature: z.string().describe("Pine identifier or namespace to look up, e.g. 'ta.supertrend', " +
|
|
885
|
+
"'alert', 'array.new', 'strategy.entry', 'request.dividends'."),
|
|
886
|
+
},
|
|
887
|
+
}, async ({ feature }) => asTextResult(checkPineFeature(feature)));
|
|
756
888
|
if (opts.imageTools) {
|
|
757
889
|
server.registerTool("pull_engine_image", {
|
|
758
890
|
description: "Run `docker pull` for the pineforge-engine runtime image on the user's " +
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pineforge/codegen-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Local MCP server: PineScript v6 → C++ + Docker backtest runner with parameter sweeps + Binance OHLCV exporter. Fully local (transpiler bundled in the engine image), no API key.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|