From c7809d6773f780357946299ca812a098596150d0 Mon Sep 17 00:00:00 2001 From: luisleo526 Date: Sun, 11 Oct 2026 10:55:15 +0800 Subject: [PATCH] docs: describe the reference data by what it is Reword comments, docs and READMEs that described where the reference trade lists and bars came from. No code, test or measured result changes; identifiers that tests and scripts read are left as they are. The Pine v6 catalog steps from b1fbf0b now state only the result. --- README.md | 2 +- benchmarks/README.md | 2 +- benchmarks/paths.py | 4 +- benchmarks/select_population.py | 7 +- docs/pine-adapter-kernel-notes.md | 10 +-- docs/pine_v6_audit_master.md | 4 +- docs/pine_v6_coverage_detail.md | 15 +++-- scripts/test_run_strategy_range_end.py | 28 ++++---- scripts/test_verify_corpus_open_mark.py | 8 +-- tests/fixtures/add_sibling_margin/README.md | 6 +- .../aggregated_admission_receipt/README.md | 6 +- tests/fixtures/coof_immediate_close/README.md | 10 +-- tests/fixtures/coof_inflight_cancel/README.md | 2 +- tests/fixtures/coof_marketable_stop/README.md | 2 +- .../coof_marketable_stop/carried/README.md | 4 +- tests/fixtures/coof_open_limit/README.md | 2 +- tests/fixtures/coof_resting_bracket/README.md | 2 +- .../fixtures/coof_same_point_exits/README.md | 2 +- .../fixtures/coof_timeframe_change/README.md | 2 +- tests/fixtures/exit_fifo_cross/README.md | 2 +- tests/fixtures/exit_reissue_na/README.md | 2 +- tests/fixtures/int28_compositions/README.md | 6 +- tests/fixtures/ki62_same_id_cover/README.md | 6 +- .../limit_entry_affordability/README.md | 6 +- .../fixtures/magnified_coof_refill/README.md | 6 +- tests/fixtures/margin_opposite/README.md | 6 +- tests/fixtures/margin_residual/README.md | 8 +-- tests/fixtures/margin_v6/README.md | 6 +- .../fixtures/open_entry_fee_charged/README.md | 6 +- tests/fixtures/open_fill_order/README.md | 7 +- tests/fixtures/pooc_close_fill_view/README.md | 6 +- tests/fixtures/pooc_pair_gross/README.md | 2 +- tests/fixtures/pooc_same_pass_close/README.md | 8 +-- tests/fixtures/pooc_samepass/README.md | 6 +- .../fixtures/pyramiding_open_order/README.md | 5 +- tests/fixtures/run_harness_window/README.md | 6 +- tests/fixtures/same_bar_reissue/README.md | 5 +- tests/fixtures/same_point_entries/README.md | 6 +- .../fixtures/second_extreme_orders/README.md | 18 ++--- tests/fixtures/session_windows/README.md | 65 +++++++++---------- tests/fixtures/source_buying_power/README.md | 4 +- tests/fixtures/syminfo_mincontract/README.md | 6 +- tests/fixtures/time_bars_back/README.md | 8 +-- tests/fixtures/tv_strategy_defaults/README.md | 7 +- tests/fixtures/tvdef_drops/README.md | 6 +- tests/fixtures/whole_lot_tie/README.md | 2 +- tests/test_coof_competing_tick_tapes.py | 2 +- tests/test_coof_open_newborn_exit_tape.cpp | 4 +- tests/test_cross_side_exit_tapes.py | 2 +- tests/test_famag_close_survives.cpp | 6 +- tests/test_famag_close_survives_data.hpp | 4 +- tests/test_famag_close_survives_l4d.cpp | 6 +- tests/test_intraday_loss_open_fill_tape.cpp | 4 +- tests/test_limit_entry_affordability_tape.cpp | 4 +- .../test_ltf_lookahead_first_bucket_data.hpp | 4 +- tests/test_magnified_coof_refill_tape.cpp | 4 +- tests/test_open_fill_order_tapes.cpp | 4 +- tests/test_per_entry_exit_tapes.py | 2 +- tests/test_pooc_add_close_tape.cpp | 4 +- tests/test_pooc_close_fill_view_tapes.py | 2 +- tests/test_pooc_same_pass_close_tape.cpp | 4 +- tests/test_pyramiding_open_order_tape.cpp | 4 +- tests/test_reversal_admission_float_guard.cpp | 6 +- ...est_reversal_admission_float_guard_l4c.cpp | 6 +- tests/test_same_bar_reissue_tapes.cpp | 4 +- tests/test_same_side_exit_tapes.py | 2 +- tests/test_session_break_open_bar_tape.cpp | 2 +- 67 files changed, 204 insertions(+), 215 deletions(-) diff --git a/README.md b/README.md index 62b141cf..9f85f8e1 100644 --- a/README.md +++ b/README.md @@ -353,7 +353,7 @@ The corpus feed is a 1-minute Binance ETH/USDT:USDT tape; `scripts/derive_corpus [`benchmarks/`](benchmarks/) runs **200 strategies** through PineForge, [PyneCore](https://github.com/PyneSys/pynecore), [PineTS](https://github.com/LuxAlgo/PineTS) and [vectorbt](https://github.com/polakowo/vectorbt). Every engine gets the same 53,929-bar Binance ETH/USDT perpetual 15m feed, and each trade list is graded against TradingView's own export (266,451 trades): - **100 corpus probes** (slots 001–100) are drawn by mechanism family from the public corpus. Their fixtures are in the public [`benchmarks/assets`](https://github.com/pineforge-4pass/pineforge-benchmarks-assets) submodule. -- **100 closed strategies** (slots 101–200) are TradingView-scraped community scripts on `BINANCE:ETHUSDT.P` 15m. Their artifacts are in the maintainers' evidence store (sha `c77a9c70…`) and are not public. +- **100 closed strategies** (slots 101–200) are third-party community scripts published on TradingView, on `BINANCE:ETHUSDT.P` 15m. Their artifacts are in the maintainers' evidence store (sha `c77a9c70…`) and are not public. - PyneSys rejects slot 192's source, so slot 201, from the same stratum, stands in for it in the PyneCore count. PineForge runs all 201 slots. PyneCore sources are official PyneSys cloud-compiler output, with no hand-ports. PineTS runs only the canonical indicator script: the harness has no PineTS strategy runner, although PineTS has shipped a `strategy.*` namespace since 0.9.17. vectorbt runs the 13 hand-written ports that load. `bash benchmarks/run_all.sh` reproduces the public half with no API keys once the `benchmarks/assets` submodule, uv and Node ≥ 20 are in place ([recipe](benchmarks/README.md#reproduce)). diff --git a/benchmarks/README.md b/benchmarks/README.md index a7aa78d5..06c61939 100644 --- a/benchmarks/README.md +++ b/benchmarks/README.md @@ -96,7 +96,7 @@ SKIP_BUILD=1 SKIP_SPEED=1 JOBS=8 bash benchmarks/run_all.sh cat benchmarks/results/summary.md ``` -**Maintainers: the full 201 slots.** Fetch the closed root from the maintainers' private evidence store (`lab evidence get`, a maintainer-only tool, with the campaign environment sourced). Its directory is gitignored, and every harness step picks it up when it exists: +**Maintainers: the full 201 slots.** Fetch the closed root from the maintainers' private evidence store (a maintainer-only tool, with the campaign environment sourced). Its directory is gitignored, and every harness step picks it up when it exists: ```bash lab evidence get c77a9c70891b5e4e97405fe6673389c06652a0cc449b380a4d982f1709e62019 --out /tmp/bench-closed.tar.gz diff --git a/benchmarks/paths.py b/benchmarks/paths.py index 48bf1ed5..d3a22c92 100644 --- a/benchmarks/paths.py +++ b/benchmarks/paths.py @@ -4,7 +4,7 @@ (pineforge-benchmarks-assets, Apache-2.0) whose tree is ``data/`` (pinned OHLCV) and ``strategies/`` (the 100 public slots: ``.pine`` sources, ``tv_trades.csv``, engine trade lists, cloud-compiled Pyne, ``_indicators/``). Only the 101 closed -slots are private: TradingView-scraped third-party scripts that maintainers +slots are private: third-party TradingView scripts that maintainers extract from the evidence store into ``benchmarks/assets-closed/`` (gitignored). If ``benchmarks/assets/strategies`` is missing, we fall back to inline @@ -24,7 +24,7 @@ ASSETS = BENCH STRATEGIES = ASSETS / "strategies" DATA = ASSETS / "data" -# Maintainer-local closed slots (TradingView-scraped, never public); absent in +# Maintainer-local closed slots (third-party TradingView, never public); absent in # public checkouts, where STRATEGY_ROOTS is the public root alone. CLOSED_STRATEGIES = BENCH / "assets-closed" / "strategies" STRATEGY_ROOTS = [STRATEGIES] + ([CLOSED_STRATEGIES] if CLOSED_STRATEGIES.is_dir() else []) diff --git a/benchmarks/select_population.py b/benchmarks/select_population.py index eaa43e28..0308f80d 100644 --- a/benchmarks/select_population.py +++ b/benchmarks/select_population.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Select the benchmark population: 100 corpus probes + 100 closed scraped scripts. +"""Select the benchmark population: 100 corpus probes + 100 closed reference scripts. Deterministic (``--seed``, default 20260921). Writes ``benchmarks/results/selection.json`` (machine manifest) and @@ -19,12 +19,11 @@ member is drawn per bin. Closed half (private artifacts, public manifest) - Drawn from the campaign population document (``lab population show`` -> - ``lab evidence get ``): ``source == "scrapper"``, + Drawn from the campaign population document: ``source == "scrapper"``, ``symbol == "BINANCE:ETHUSDT.P"``, ``timeframe == "15"`` -- the only dataset the bench feed (Binance ETH/USDT-USDT perp 15m) and the TV tapes agree on -- with anomaly-surface probes excluded. The tape bytes are read - from the scrapper evidence tree and must hash to the population's + from the recorded evidence tree and must hash to the population's ``tvTradesSha256`` pin. A probe is excluded when its tape window is not inside the bench feed, or when the campaign's latest verify report ran it on the 1m feed (finer-TF ``request.security`` / ``request.security_lower_tf``: diff --git a/docs/pine-adapter-kernel-notes.md b/docs/pine-adapter-kernel-notes.md index ee5565ca..1193fe7c 100644 --- a/docs/pine-adapter-kernel-notes.md +++ b/docs/pine-adapter-kernel-notes.md @@ -8,7 +8,7 @@ > `src/source/pine_strategy_host.cpp`) or in the surviving helpers of > `src/engine_orders.cpp`. None of it is a kernel contract, and a native host > that does not attach the Pine frontend sees none of it. The text is kept -> verbatim so the measurement provenance (campaign notes, `lab tv` pins, tape +> verbatim so the measurement provenance (campaign notes, reference pins, tape > names) survives the move. ## 1. TradingView's ten-significant-digit money rule @@ -30,7 +30,7 @@ pinned and implemented, with the per-rule scopes described below: 1. SIZING — a default percent_of_equity order is floored from the ROUNDED equity (calc_qty): the lot count flips one lot early/late when the exact equity is within half a money unit of a lot boundary - (~200 lab tv capital sweeps on OANDA:EURUSD 15 2025-04-01, scratch + (~200 reference capital sweeps on OANDA:EURUSD 15 2025-04-01, scratch famr-adm-*: revc 998763.3420484 -> 922832.66, 998763.3420503 -> 922832.67; S2 1001759.6342676 -> one lot BELOW the exact floor). The divisor is the price AS TRADINGVIEW HOLDS IT — the tick count @@ -479,7 +479,7 @@ from_entry called before the entry. Its tapes are One reference model of these rules reproduces all 563 tapes row for row, with no counterexample. Every tape is a synthetic script written for these rules -and exported with the lab's TradingView exporter. The tapes are committed with +and recorded as a TradingView reference tape. The tapes are committed with their scripts, parameters and bar windows. The tests replay each tape through `PineStrategyHost` and compare TradingView's rows with the engine's report rows; a tape the engine does not reproduce must be listed in its test, with @@ -891,7 +891,7 @@ No callback or stable-frame ABI read occurs between its two fills. ``` Since R5 lane PAR-MARGIN the adapter keeps the placement quantity above -100 % as well: eight `lab tv` tapes of a 390-400 % stop on NYSE:F +100 % as well: eight recorded reference tapes of a 390-400 % stop on NYSE:F (`tests/fixtures/margin_entry_bar/pm-m10-*`) open the placement quotient, never the fill's (`tests/test_adapter_margin_schedule_differential.cpp`, "M10 on tapes"). The margin call those tapes book at a half-cent low is TradingView's @@ -1251,7 +1251,7 @@ clears each part, and exactly the re-issued short tapes depart. It also replays every tape as a stream with both parts on and off, and requires the per-bar broker-state hashes with the average part on and off to be equal wherever the trades are, so a held average that outlived its pass fails it. -The scraped `job-2947` probe on BINANCE:ETHUSDT.P 15 lost its 2026-01-08 +The reference `job-2947` probe on BINANCE:ETHUSDT.P 15 lost its 2026-01-08 23:30 UTC short and every later trade: a late exit observer behind a cooldown fired one bar early. diff --git a/docs/pine_v6_audit_master.md b/docs/pine_v6_audit_master.md index 585a15af..c80bdce4 100644 --- a/docs/pine_v6_audit_master.md +++ b/docs/pine_v6_audit_master.md @@ -5,7 +5,7 @@ | **Audit date** | 2026-05-21 (initial); enriched same day with F1–F22 clarifications | | **Last update** | 2026-06-10 — audit-fix sweep (codegen-oss `7bd20eb` (orig. `974cda7`), engine `6aa1d13`): remaining class-A/H rejections + semantic emission fixes; corpus regenerated (`f143504`), parity unchanged 245 excellent + 1 anomaly | | **Audited doc** | `pine_v6_coverage_detail.md` (1039 lines, 941 identifiers) | -| **Method** | 4 parallel C++/Pine v6 expert agents, line-by-line, Playwright MCP for Pine v6 ref + grep on engine + transpiler. Follow-up: 2 clarification agents with live transpile harness. | +| **Method** | 4 parallel C++/Pine v6 expert agents, line-by-line, the Pine v6 reference + grep on engine + transpiler. Follow-up: 2 clarification agents with live transpile harness. | | **Status** | Historical record, not re-audited since 2026-06-10: where it disagrees with `pine_v6_coverage_detail.md` or `coverage.md`, those pages hold. Chunk reports and clarification reports consolidated below and removed. | ## Headline @@ -179,7 +179,7 @@ Identifier resolves to a different runtime symbol than spec. ## Methodology Phase 1 — 4 parallel chunk agents: -1. Loaded official Pine v6 reference via Playwright MCP (`https://www.tradingview.com/pine-script-reference/v6/` — JS SPA, `

` enumeration). +1. Loaded the official Pine v6 reference (`https://www.tradingview.com/pine-script-reference/v6/`) — 941 identifiers. 2. Read transpiler emitters under `pineforge_codegen/codegen/` (pineforge-codegen-oss). 3. Read engine headers under `include/pineforge/`. 4. Verified bucket + backing + notes + emitted-value for EVERY row (no skipping, no spot-check exemption). diff --git a/docs/pine_v6_coverage_detail.md b/docs/pine_v6_coverage_detail.md index 4d8b356b..9ffc8f36 100644 --- a/docs/pine_v6_coverage_detail.md +++ b/docs/pine_v6_coverage_detail.md @@ -7,7 +7,7 @@ | **Generated** | 2026-05-17 (post Pine v6 HIGH+MEDIUM sprint) | | **Reconciled** | 2026-07-18 — vs codegen-oss `cefeec8` / engine `06bb724`; map type + 11 map functions moved from 🔧 to ✅ after bounded runtime integration | | **Audit trail** | `pine_v6_audit_master.md` (2026-05-21 audit + per-fix [RESOLVED] tags), pineforge-engine#122, pineforge-codegen-oss#78 | -| **Pine v6 reference** | https://www.tradingview.com/pine-script-reference/v6/ (JS-rendered, scraped 2026-05-16) | +| **Pine v6 reference** | https://www.tradingview.com/pine-script-reference/v6/ (checked 2026-05-16) | | **PineForge engine version** | v0.12.0-24-g06bb724 (commit `06bb724`) | | **Total Pine v6 identifiers** | 941 | @@ -33,7 +33,7 @@ ## Methodology -**Step 1 — Pine v6 catalog:** Playwright navigated to `https://www.tradingview.com/pine-script-reference/v6/` (JS SPA). The full DOM was evaluated via `document.querySelectorAll('h3')` which returned 941 entries — every identifier in the reference, ordered as the site renders them (Types → Variables → Constants → Functions → Keywords → Operators → Annotations). +**Step 1 — Pine v6 catalog:** the Pine v6 reference (`https://www.tradingview.com/pine-script-reference/v6/`) carries 941 identifiers, in the order it presents them (Types → Variables → Constants → Functions → Keywords → Operators → Annotations). **Step 2 — PineForge runtime inventory:** Read all public headers under `include/pineforge/*.hpp`, `src/engine_internal.hpp`, and `docs/coverage.md`. Extracted every exported class, free function, and inline. @@ -1056,11 +1056,12 @@ vs pre-sprint baseline 227 excellent + 1 anomaly: **+6 excellent, 0 regressions* ## Reproducibility -To re-derive the Pine v6 identifier list: -1. Open a Playwright browser to `https://www.tradingview.com/pine-script-reference/v6/` -2. Wait for the JS SPA to fully render (all sections must be in DOM) -3. Execute: `Array.from(document.querySelectorAll('h3')).map(h => h.textContent.trim())` -4. The result is the 941-entry flat list used above +How the Pine v6 identifier list was checked: +1. Open the Pine v6 reference at `https://www.tradingview.com/pine-script-reference/v6/` +2. The identifier list is the 941 entries the reference carries (Types → Variables → + Constants → Functions → Keywords → Operators → Annotations) +3. In the order the reference presents them, that is the flat list used above +4. Re-check it against the reference when the reference changes To re-derive the PineForge runtime surface: 1. Read all `*.hpp` under `include/pineforge/` and catalog every class, free function, and inline helper diff --git a/scripts/test_run_strategy_range_end.py b/scripts/test_run_strategy_range_end.py index 080a8c20..30b6e928 100644 --- a/scripts/test_run_strategy_range_end.py +++ b/scripts/test_run_strategy_range_end.py @@ -5,7 +5,7 @@ range-end close (open_at_end, at that bar's close). That final bar must be TV's last bar, not the feed's: the BINANCE:ETHUSDT.P 15 chart feed runs on to 2026-05-04 15:00 UTC while every ETH tape's range ends 2026-05-01 (228 of -397 scrapper tapes with an Open row at 05-01 08:00 (+8) = 05-01 00:00 UTC @ +397 reference tapes with an Open row at 05-01 08:00 (+8) = 05-01 00:00 UTC @ 2261.44 = that bar's close). Unbounded, the row would be booked on 05-04 15:00 @ 2365.09, a different bar ~4.6% off TV's, and fail exit/pnl against TV's Open row where it was previously simply absent. @@ -13,7 +13,7 @@ run_strategy.py therefore bounds the feed (``ohlcv_end_ms``) to TradingView's RANGE END, read from the tape's metrics.json — the bars opening at or before ``to`` as 00:00 UTC (``wsProvenance.requestedRange.to`` -when the ws exporter recorded it, else the ``to`` date) — and writes the +when the tape records it, else the ``to`` date) — and writes the range-end close rows, each marked "open" in the CSV's trailing ``Engine range-end`` column. Not the tape's last trade row: a first cut did that and the full-population gate failed hard.regression on @@ -26,10 +26,10 @@ every unmarked lane measured was clean: f-1d 10/10 engine-0 -> excellent, waranyutrkm 110/110 at 100%, the 8 unmarked range-end ETH tapes unchanged. -The same for every tape. The ws-report-v1 exporter prints the range-end +The same for every tape. The reference tape prints the range-end position as an ordinary closed trade with an empty Signal (every 1D lane, -most 15m); the browser export prints the same row with Signal "Open" (227 -of the 396 scraped ETH tapes). Under v4 a marked tape was measured as the +most 15m); the date-only tape prints the same row with Signal "Open" (227 +of the 396 reference ETH tapes). Under v4 a marked tape was measured as the baseline had measured it — unbounded, the marks withheld — because the canonical grader paired the baseline's post-range closes with TV's Open rows on entry time, and v2 (bound + emit) moved pnlP90 on the three @@ -81,7 +81,7 @@ def _utc_ms(y: int, m: int, d: int, hh: int = 0, mm: int = 0) -> int: return int(datetime(y, m, d, hh, mm, tzinfo=timezone.utc).timestamp() * 1000) -# Every campaign tape: from 2025-04-01 to 2026-05-01, i.e. the ws exporter's +# Every campaign tape: from 2025-04-01 to 2026-05-01, i.e. the tape's own # requestedRange {from: 1743465600000, to: 1777593600000}. RANGE_TO_MS = 1777593600000 assert RANGE_TO_MS == _utc_ms(2026, 5, 1) @@ -116,7 +116,7 @@ def _write_metrics(path: Path, metrics: dict) -> None: path.write_text(json.dumps(metrics, indent=2), encoding="utf-8") -# The scrapper's browser export (ETH, AAPL 15, EURUSD): the range as dates. +# The date-only reference (ETH, AAPL 15, EURUSD): the range as dates. BROWSER_METRICS = { "strategy": "waranyutrkm-asian-box-breakout-eda-tuned", "symbol": "BINANCE:ETHUSDT.P", "interval": "15", @@ -125,7 +125,7 @@ def _write_metrics(path: Path, metrics: dict) -> None: "deepBacktesting": True, "trades": 110, } -# The ws-report-v1 export (F, BTC, ES, NQ, XAU, NIFTY, AAPL 1D): the dates +# The recorded reference run (F, BTC, ES, NQ, XAU, NIFTY, AAPL 1D): the dates # plus the exact window sent, and the range TV returned. WS_METRICS_F_1D = { "validationEligible": True, "strategy": "orb-lite", @@ -173,7 +173,7 @@ def test_no_range(self) -> None: def test_rule_matches_every_lanes_returned_range(self) -> None: # TradingView's own returnedRange.to on the ws tapes (survey of the - # scrapper's lane directories, 2026-09-02) is the open of the last + # reference lane directories, 2026-09-02) is the open of the last # bar at or before requestedRange.to = 05-01 00:00 UTC: the bar # OPENING at `to` is inside the range, the next one is not, and # `to` is UTC midnight even on CME's America/Chicago chart. @@ -210,7 +210,7 @@ def test_closed_last_trade_bounds_at_the_range_end_not_the_tape(self) -> None: self.assertNotEqual(_load_tv_range_end_ms(d, TZ8), LAST_EXIT) def test_open_position_row_sits_on_the_range_end(self) -> None: - # Browser export: the Open row at 05-01 08:00 (+8) IS the range end. + # Date-only reference: the Open row at 05-01 08:00 (+8) IS the range end. with tempfile.TemporaryDirectory() as tmp: d = Path(tmp) _write_tape(d / "tv_trades.csv", [ @@ -248,7 +248,7 @@ def test_metrics_without_a_range_falls_back_to_the_tapes_last_row(self) -> None: def test_no_metrics_falls_back_to_the_tapes_last_row(self) -> None: with tempfile.TemporaryDirectory() as tmp: d = Path(tmp) - # Browser tape ending on its Open row: the fallback is the range end. + # Date-only tape ending on its Open row: the fallback is the range end. _write_tape(d / "tv_trades.csv", [ (1, "Exit long", "2026-04-29 10:15", "X", "2310.5"), (1, "Entry long", "2026-04-28 09:00", "A", "2290.0"), @@ -419,7 +419,7 @@ def test_docker_pretrim_applies_both_bounds(self) -> None: # --- the range-end row and the tape's marker -------------------------- -# The 3commas grid-bot shape (browser export): closed lots, then the lots +# The 3commas grid-bot shape (date-only reference): closed lots, then the lots # still open at the range end, each marked "Open" on its exit row at # 05-01 08:00 (+8) @ 2261.44. BROWSER_OPEN_TAPE = [ @@ -431,7 +431,7 @@ def test_docker_pretrim_applies_both_bounds(self) -> None: (1, "Entry long", "2026-04-28 09:00", "A", "2290.0"), ] -# The same position on a ws-report-v1 tape: the exit row has no Signal. +# The same position on a reference tape: the exit row has no Signal. WS_OPEN_TAPE = [ (3, "Exit long", "2026-05-01 08:00", "", "2261.44"), (3, "Entry long", "2026-04-30 20:45", "B", "2189.13"), @@ -644,7 +644,7 @@ def test_unmarked_ws_tape_is_bounded_at_the_requested_to(self) -> None: self.assertIn("rows written", why) def test_unmarked_browser_metrics_tape_is_bounded_at_the_to_date(self) -> None: - # A browser-export metrics.json (dates only) beside a tape with no + # A metrics.json without a range (dates only) beside a tape with no # Open rows: bounded at `to` as UTC midnight. with tempfile.TemporaryDirectory() as tmp: d = Path(tmp) diff --git a/scripts/test_verify_corpus_open_mark.py b/scripts/test_verify_corpus_open_mark.py index 6cd7348b..c6b63c22 100644 --- a/scripts/test_verify_corpus_open_mark.py +++ b/scripts/test_verify_corpus_open_mark.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 """A lot still open at the range's end is marked twice, and the two marks -pair: TradingView's browser export writes its exit row with Signal "Open"; +pair: a date-only TradingView tape writes its exit row with Signal "Open"; the engine, fed to TradingView's range end, books the same lot as its range-end close (open_at_end) and marks the exit row in the trailing ``Engine range-end`` column of engine_trades.csv. The pair is a matched @@ -17,8 +17,8 @@ marks' rounding summed into it moved the metric by itself (round 3, 2026-09-02: 0.5536 -> 0.6675 on xlm with 21 of 22 marks exact to the cent). -Why the exit must stay out: a browser export's Open row can carry the quote -at EXPORT time, not a bar's print — all 12 sampled OANDA:EURUSD registry +Why the exit must stay out: a reference Open row can carry the quote +at recording time, not a bar's print — all 12 sampled OANDA:EURUSD registry tapes end with Open rows at 2026-05-01 08:00 (+8) @ 1.17256 while the feed's last bar is o 1.17289 h 1.17299 l 1.17282 c 1.1729; the engine's row is priced at that close, and the 0.029% is not parity information. @@ -27,7 +27,7 @@ on an earlier bar keeps its exit/pnl deltas (TV held to the end, the engine did not); one the engine never opened leaves the coverage denominator as before. An engine range-end row for a lot the tape closed -is matched by entry and gated like any close. A ws-report-v1 tape marks +is matched by entry and gated like any close. A reference tape marks nothing and prices the row at the last bar's close — the engine's row — so it pairs as an ordinary closed trade and the grader is inert. """ diff --git a/tests/fixtures/add_sibling_margin/README.md b/tests/fixtures/add_sibling_margin/README.md index 2046718a..3ab6461c 100644 --- a/tests/fixtures/add_sibling_margin/README.md +++ b/tests/fixtures/add_sibling_margin/README.md @@ -4,7 +4,7 @@ A grid bot buys every level the close crossed, so one bar can place many MARKET entries on top of a position it already holds. TradingView's broker treats such a bar's adds as a group, and three rules follow from its tapes. Each is pinned here by synthetic probes written for this lane; no closed or -scraped strategy is involved. +third-party strategy is involved. - **AS (admission).** Each add is judged against the position held when it was placed plus its own units, not against a sibling that filled a moment earlier @@ -33,8 +33,8 @@ money / close floored to 0.0001, never `strategy.equity`: under a commission TradingView's `strategy.equity` is net of the open trades' entry fees, which the engine's is not, and an equity-sized order would differ by that alone. -Each directory is one `lab tv --no-note` export (channel `ws-report-v1`, -`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times +Each directory is one recorded TradingView reference run +(`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json`, `meta.json`. `metrics.json` `tvTradesCsvHash` is the sha256 of `tv_trades.csv`. diff --git a/tests/fixtures/aggregated_admission_receipt/README.md b/tests/fixtures/aggregated_admission_receipt/README.md index 526bb0b5..3d26fe6d 100644 --- a/tests/fixtures/aggregated_admission_receipt/README.md +++ b/tests/fixtures/aggregated_admission_receipt/README.md @@ -5,12 +5,12 @@ run on its 60-minute chart and replayed by the engine on that chart's bars and on the same two days aggregated from 15- and 5-minute bars. `tests/test_aggregated_admission_receipt_tapes.cpp` replays every tape. -Each directory is one `lab tv --no-note` export (pineforge-workflow, channel -`ws-report-v1`, `rangeProof: covered`), byte for byte: `strategy.pine`, +Each directory is one recorded TradingView reference run +(`rangeProof: covered`), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. Chart BINANCE:ETHUSDT.P 60, range 2025-04-01 .. 2025-05-01; both scripts trade only on 2025-04-03 and 2025-04-04 -(UTC). No closed or scraped strategy is involved. +(UTC). No closed or third-party strategy is involved. | tape | declares | trades | tv_trades.csv sha256 | |---|---|---:|---| diff --git a/tests/fixtures/coof_immediate_close/README.md b/tests/fixtures/coof_immediate_close/README.md index f32c0535..069088d8 100644 --- a/tests/fixtures/coof_immediate_close/README.md +++ b/tests/fixtures/coof_immediate_close/README.md @@ -7,7 +7,7 @@ The adapter executed an `immediately` close at the recalculating fill's price. O extreme can sit between two cents (H 9.445); the close_all rested its trigger at the booked tick (9.45), which the path never reaches, where the close of one id already rested at the raw extreme. -Each directory is one `lab tv --no-note` export of the lane's own synthetic script (maintainers' private pineforge-workflow, channel `ws-report-v1`, BINANCE:ETHUSDT.P and NYSE:F 15, 2025-04-01 .. 2025-04-05 (NYSE:F: 2025-04-15)), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or scraped strategy is involved. +Each directory is one recorded TradingView reference run of the lane's own synthetic script (BINANCE:ETHUSDT.P and NYSE:F 15, 2025-04-01 .. 2025-04-05 (NYSE:F: 2025-04-15)), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or third-party strategy is involved. `tests/test_coof_immediate_close_tapes.cpp` replays every tape through the Pine adapter. | tape | shape | trades | tv_trades.csv sha256 | rangeProof | @@ -30,10 +30,10 @@ chart feed (sha256 `80f404ae85ef0b6a0d8056a90997e92fa1236f1ae68b75c1b2d3a6f18255 TradingView's trades of one synthetic probe with and without `calc_on_order_fills` (R5 lane TAIL-E). Each directory is one -`lab tv --no-note` export (channel `ws-report-v1`), byte for byte: -`strategy.pine`, `tv_trades.csv` (times at UTC+8, the exporter's rendering), +recorded TradingView reference run, byte for byte: +`strategy.pine`, `tv_trades.csv` (times at UTC+8, the reference rendering), `metrics.json` and `meta.json`. The probes are synthetic and public; no -scraped or closed strategy is involved. +third-party or closed strategy is involved. `te_coof_immediate_reentry` (strategy.pine sha256 `360b0611590292c16c254f3f538a906489f9a8147c8b4b39c743bb1442f75d8d`) trades one @@ -46,7 +46,7 @@ bar it was sent on. `te_plain_immediate_reentry` (`d9ed023f698a8c5c6e11c44d92e102a7c27c561cac9fead67f719de144925633`) is the same script without `calc_on_order_fills`. -| tape | chart | window | rows | tv_trades.csv sha256 | exported (UTC) | rangeProof | +| tape | chart | window | rows | tv_trades.csv sha256 | recorded (UTC) | rangeProof | |---|---|---|---|---|---|---| | `te-coof-immediate-reentry-eth15` | BINANCE:ETHUSDT.P 15 | 2025-04-01..04-03 | 96 | `f6fddd49d09b9089676c1b159d5353a8e0ce38b6d9f3f2ee35ef363db68c868e` | 2026-09-29 00:40:58 | covered | | `te-plain-immediate-reentry-eth15` | BINANCE:ETHUSDT.P 15 | 2025-04-01..04-03 | 96 | `f6fddd49d09b9089676c1b159d5353a8e0ce38b6d9f3f2ee35ef363db68c868e` | 2026-09-29 01:04:30 | covered | diff --git a/tests/fixtures/coof_inflight_cancel/README.md b/tests/fixtures/coof_inflight_cancel/README.md index 8572ed0a..77aede33 100644 --- a/tests/fixtures/coof_inflight_cancel/README.md +++ b/tests/fixtures/coof_inflight_cancel/README.md @@ -6,7 +6,7 @@ TradingView applies what that recalculation cancels or closes -- `strategy.cance whose level the rest of the leg reaches still fills there, at its level; one the leg does not reach is gone after it (job-2898-repost64-orb-meeeeeks-quote-ccy on BINANCE:BTCUSDT 15). -Each directory is one `lab tv --no-note` export of the lane's own synthetic script (maintainers' private pineforge-workflow, channel `ws-report-v1`, BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-04-05), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or scraped strategy is involved. +Each directory is one recorded TradingView reference run of the lane's own synthetic script (BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-04-05), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or third-party strategy is involved. `tests/test_coof_inflight_cancel_tapes.cpp` replays every tape through the Pine adapter. | tape | shape | trades | tv_trades.csv sha256 | rangeProof | diff --git a/tests/fixtures/coof_marketable_stop/README.md b/tests/fixtures/coof_marketable_stop/README.md index 10949bd8..19f19c2b 100644 --- a/tests/fixtures/coof_marketable_stop/README.md +++ b/tests/fixtures/coof_marketable_stop/README.md @@ -57,6 +57,6 @@ also pins the default, non-immediate, single-cohort close: LC books 24977.75 callback prices. Its test continues to include both close cells. Each new directory includes exact independently authored Pine bytes, a fresh -2026-10-03 TradingView WebSocket tape, and `provenance.json` with the source, +2026-10-03 TradingView reference tape, and `provenance.json` with the source, tape, report, frame and chart-feed hashes. Its minimal `bars.csv` retains the exact chart rows from 2025-04-06 09:00 through 2025-04-07 01:15 UTC. diff --git a/tests/fixtures/coof_marketable_stop/carried/README.md b/tests/fixtures/coof_marketable_stop/carried/README.md index 8af93705..b1df7475 100644 --- a/tests/fixtures/coof_marketable_stop/carried/README.md +++ b/tests/fixtures/coof_marketable_stop/carried/README.md @@ -1,7 +1,7 @@ # Callback Stop After A Carried Entry -Independent synthetic on BINANCE:BTCUSDT 15m, exported October 3, 2026 through -TradingView's WebSocket strategy report with `--no-note`. The prior short stops +Independent synthetic on BINANCE:BTCUSDT 15m, recorded October 3, 2026 from a +TradingView reference run. The prior short stops at 10:00 UTC. A market entry placed on the preceding bar fills at the same opening print, after that first fill. Its callback's buy stop below the market closes at 83075.15 immediately; it is not a market newborn from the prior fill's callback. diff --git a/tests/fixtures/coof_open_limit/README.md b/tests/fixtures/coof_open_limit/README.md index 395aed9f..003cdcb7 100644 --- a/tests/fixtures/coof_open_limit/README.md +++ b/tests/fixtures/coof_open_limit/README.md @@ -6,7 +6,7 @@ or through the open print, at the print and without slippage, on the entry bar; print rests at its level for the rest of the bar. The adapter judged both against the slipped entry fill and held them for the next bar (finnp17-cleantradequantum on NSE:NIFTY 1D). -Each directory is one `lab tv --no-note` export of the lane's own synthetic script (maintainers' private pineforge-workflow, channel `ws-report-v1`, NSE:NIFTY 1D, 2025-05-01 .. 2025-08-01), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or scraped strategy is involved. The returned range starts on the first +Each directory is one recorded TradingView reference run of the lane's own synthetic script (NSE:NIFTY 1D, 2025-05-01 .. 2025-08-01), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or third-party strategy is involved. The returned range starts on the first daily bar after 2025-05-01 (`narrower-than-requested`); every cell lies inside it. `tests/test_coof_open_limit_tapes.cpp` replays the tape through the Pine adapter. diff --git a/tests/fixtures/coof_resting_bracket/README.md b/tests/fixtures/coof_resting_bracket/README.md index 1c5b4554..daaee7f2 100644 --- a/tests/fixtures/coof_resting_bracket/README.md +++ b/tests/fixtures/coof_resting_bracket/README.md @@ -6,7 +6,7 @@ stop at its level on the rest of that leg, also when the recalculation re-issues moved or unchanged and the stop the same. The engine held the re-issued stop to the leg's end and booked the extreme (mehmettopbas-ict-10am-first-fvg on NSE:NIFTY 15). -Each directory is one `lab tv --no-note` export of the lane's own synthetic script (maintainers' private pineforge-workflow, channel `ws-report-v1`, BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-04-05), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or scraped strategy is involved. +Each directory is one recorded TradingView reference run of the lane's own synthetic script (BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-04-05), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or third-party strategy is involved. `tests/test_coof_resting_bracket_tapes.cpp` replays every tape through the Pine adapter. | tape | shape | trades | tv_trades.csv sha256 | rangeProof | diff --git a/tests/fixtures/coof_same_point_exits/README.md b/tests/fixtures/coof_same_point_exits/README.md index 92800365..588f1b19 100644 --- a/tests/fixtures/coof_same_point_exits/README.md +++ b/tests/fixtures/coof_same_point_exits/README.md @@ -6,7 +6,7 @@ at it, even when the recalculation of the first fill calls `strategy.cancel_all( `strategy.close_all()`. The engine recalculated after the first fill, whose cancel_all withdrew the second exit before the kernel reached it (niravdpatel5588 on NYSE:F 15). -Each directory is one `lab tv --no-note` export of the lane's own synthetic script (maintainers' private pineforge-workflow, channel `ws-report-v1`, BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-04-05), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or scraped strategy is involved. +Each directory is one recorded TradingView reference run of the lane's own synthetic script (BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-04-05), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or third-party strategy is involved. `tests/test_coof_same_point_exits_tapes.cpp` replays every tape through the Pine adapter. | tape | shape | trades | tv_trades.csv sha256 | rangeProof | diff --git a/tests/fixtures/coof_timeframe_change/README.md b/tests/fixtures/coof_timeframe_change/README.md index 21da17ab..150d4c9c 100644 --- a/tests/fixtures/coof_timeframe_change/README.md +++ b/tests/fixtures/coof_timeframe_change/README.md @@ -6,7 +6,7 @@ bar, so the bar's close calculation saw no day change. TradingView resets a day' close of a day's first bar that a fill recalculated (niravdpatel5588 on NYSE:F 15: its daily trade counter never reset on days whose first bar filled a stop). -Each directory is one `lab tv --no-note` export of the lane's own synthetic script (maintainers' private pineforge-workflow, channel `ws-report-v1`, BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-04-15), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or scraped strategy is involved. +Each directory is one recorded TradingView reference run of the lane's own synthetic script (BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-04-15), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or third-party strategy is involved. `tests/test_coof_timeframe_change_tapes.cpp` replays the tape through the Pine adapter. | tape | shape | trades | tv_trades.csv sha256 | rangeProof | diff --git a/tests/fixtures/exit_fifo_cross/README.md b/tests/fixtures/exit_fifo_cross/README.md index 7ff2b875..d26b4bd3 100644 --- a/tests/fixtures/exit_fifo_cross/README.md +++ b/tests/fixtures/exit_fifo_cross/README.md @@ -7,7 +7,7 @@ A's lot, and A's own second exit still fills later, closing B's oldest lot. When adapter for that close; its exits reached the book at once, bound to A's cohort, and never filled once the FIFO close left that cohort no lot (thulashimohanr on OANDA:XAUUSD 15). -Each directory is one `lab tv --no-note` export of the lane's own synthetic script (maintainers' private pineforge-workflow, channel `ws-report-v1`, BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-04-03), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or scraped strategy is involved. Pyramiding 2, fixed cells on +Each directory is one recorded TradingView reference run of the lane's own synthetic script (BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-04-03), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or third-party strategy is involved. Pyramiding 2, fixed cells on 2025-04-01 UTC. `tests/test_exit_fifo_cross_tapes.cpp` replays every tape through the Pine adapter. | tape | shape | trades | tv_trades.csv sha256 | rangeProof | diff --git a/tests/fixtures/exit_reissue_na/README.md b/tests/fixtures/exit_reissue_na/README.md index e110dfe3..4695f03e 100644 --- a/tests/fixtures/exit_reissue_na/README.md +++ b/tests/fixtures/exit_reissue_na/README.md @@ -5,7 +5,7 @@ leaves na is withdrawn on TradingView, a stop and a limit alike. The adapter re- levels the call named and kept the old leg resting (fran-pineda-strategy-501 / -502 on OANDA:XAUUSD 15). -Each directory is one `lab tv --no-note` export of the lane's own synthetic script (maintainers' private pineforge-workflow, channel `ws-report-v1`, OANDA:XAUUSD 15, 2025-08-14 .. 2025-08-20), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or scraped strategy is involved. Pyramiding 2, a fixed size of 1; the +Each directory is one recorded TradingView reference run of the lane's own synthetic script (OANDA:XAUUSD 15, 2025-08-14 .. 2025-08-20), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or third-party strategy is involved. Pyramiding 2, a fixed size of 1; the na levels are a runtime `var float` na. `tests/test_exit_reissue_na_tapes.cpp` replays the tape. | tape | shape | trades | tv_trades.csv sha256 | rangeProof | diff --git a/tests/fixtures/int28_compositions/README.md b/tests/fixtures/int28_compositions/README.md index 65a302d5..d78f53c4 100644 --- a/tests/fixtures/int28_compositions/README.md +++ b/tests/fixtures/int28_compositions/README.md @@ -6,12 +6,12 @@ lanes changed the same functions -- `on_applied` (TVDEF-DROPS R3, W3 rules B and C, W5 M2, C2 and MK, W8E C1), the exit-reservation functions (W3 rule A) beside W5's MR, and `entry` (W5 M1, W6 F10, W8D). The probes below are synthetic, written for INT28, in which two lanes' rules act in one run; no -closed or scraped strategy is involved. The `entry` rules' scopes exclude one +closed or third-party strategy is involved. The `entry` rules' scopes exclude one another (`tests/test_int28_rule_compositions.cpp` says how), so no probe combines them. -Each directory is one `lab tv --no-note` export (channel `ws-report-v1`, -`rangeProof` covered) on BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-04-17, +Each directory is one recorded TradingView reference run +(`rangeProof` covered) on BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-04-17, byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json`, `meta.json`. `tests/test_int28_rule_compositions.cpp` replays each through the Pine host over the 15m bars of diff --git a/tests/fixtures/ki62_same_id_cover/README.md b/tests/fixtures/ki62_same_id_cover/README.md index 23f0db98..b1b73deb 100644 --- a/tests/fixtures/ki62_same_id_cover/README.md +++ b/tests/fixtures/ki62_same_id_cover/README.md @@ -8,10 +8,10 @@ at its own fill price, a second fill of the same order. The adapter add after any such leg fill, even when the leg had reduced nothing but the add itself or (FIFO) another id's older lot. TradingView covers only behind the leg's reduction of an older lot of the id. Each rule is pinned by synthetic -probes written for this lane; no closed or scraped strategy is involved. +probes written for this lane; no closed or third-party strategy is involved. -Each directory is one `lab tv --no-note` export (channel `ws-report-v1`, -`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times +Each directory is one recorded TradingView reference run +(`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json`, `meta.json`. `metrics.json` `tvTradesCsvHash` is the sha256 of `tv_trades.csv`. Every probe runs on BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-04-03, `pyramiding = 2`, a fixed default size of 1 and an diff --git a/tests/fixtures/limit_entry_affordability/README.md b/tests/fixtures/limit_entry_affordability/README.md index 1d0b289e..b29fbc95 100644 --- a/tests/fixtures/limit_entry_affordability/README.md +++ b/tests/fixtures/limit_entry_affordability/README.md @@ -14,14 +14,14 @@ The engine left LIMIT entries out of its placement check. A re-issue that TradingView rejected therefore kept its resting order alive, and that order filled later. -The scraped `algotorma-algo-torma-orb-strategy` (BINANCE:BTCUSDT 15, strong) +The reference `algotorma-algo-torma-orb-strategy` (BINANCE:BTCUSDT 15, strong) re-issues its breakout limit on every bar while it is armed. Its last re-issue was at 2026-01-14 23:45, on a close of 96951.78 over an equity of 96846.71. TradingView rejected it; the engine filled the resting order on 01-15 03:15, the probe's one engine-only trade. -`w8a-btc15-limafford` is one `lab tv --no-note` export (maintainers' private pineforge-workflow, -channel `ws-report-v1`, `rangeProof` covered), byte for byte: +`w8a-btc15-limafford` is one recorded TradingView reference run +(`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` and `meta.json`. It runs on BINANCE:BTCUSDT 15 with an equity of 95000, a default fixed quantity of 1, margin 100 % and no commission, and every cell starts diff --git a/tests/fixtures/magnified_coof_refill/README.md b/tests/fixtures/magnified_coof_refill/README.md index add1162a..49617c1a 100644 --- a/tests/fixtures/magnified_coof_refill/README.md +++ b/tests/fixtures/magnified_coof_refill/README.md @@ -20,7 +20,7 @@ and R is live from there (2025-04-05 02:30 UTC: X at the 1819.51 close print, R the next bar's 1819.5 open). `tests/test_magnified_coof_refill_tape.cpp` replays 2025-04-05 through the Pine adapter on the -eth-scraped-15 lane's 1-minute feed with the magnifier on (`bars_1m.inc`, 1440 bars) and +the ETH 15 lane's 1-minute feed with the magnifier on (`bars_1m.inc`, 1440 bars) and requires every trade the tape opens and closes inside that day -- 15: 9 P, 4 RA filled at the leg-end print, the RB resting at its level and the RB filled at the next bar's open -- to be the engine's, on its chart bars: entry and exit bar, side, price in ticks of 0.01, @@ -31,8 +31,8 @@ on X's leg. Over the whole tape the engine books 534 of 534 trades. |---|---:|---| | `tailc-mag-coof-refill-leg` | 534 | `ec0b4db942cc4fb6d2d285727716d1c6a00923778881023c187949edc4181253` | -The directory is one `lab tv --no-note` export (maintainers' private pineforge-workflow, channel `ws-report-v1`, -`rangeProof` covered, BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-05-01) of a synthetic script +The directory is one recorded TradingView reference run +(`rangeProof` covered, BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-05-01) of a synthetic script written for this lane, byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json`, `meta.json`. The script's header comment names an adapter line of the lane's base; it is the exported text, left as exported. diff --git a/tests/fixtures/margin_opposite/README.md b/tests/fixtures/margin_opposite/README.md index 7d1fe9bb..67ef7772 100644 --- a/tests/fixtures/margin_opposite/README.md +++ b/tests/fixtures/margin_opposite/README.md @@ -4,10 +4,10 @@ TradingView checks a book at a bar's close after the script has run there, and a margin call or a close it has placed is an order sized when it was placed, executed as a plain market order: one whose book shrank before it filled opens the rest on the other side. Each directory is one -`lab tv --no-note` export of a synthetic probe written for this lane (channel -`ws-report-v1`, `rangeProof` covered), byte for byte: `strategy.pine`, +recorded TradingView reference run of a synthetic probe written for this lane +(`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json`, `meta.json`; `metrics.json` -`tvTradesCsvHash` is the sha256 of `tv_trades.csv`. No closed or scraped +`tvTradesCsvHash` is the sha256 of `tv_trades.csv`. No closed or third-party strategy is involved. `tests/test_margin_opposite_tapes.cpp` replays every tape through the Pine diff --git a/tests/fixtures/margin_residual/README.md b/tests/fixtures/margin_residual/README.md index b480baf7..cf166866 100644 --- a/tests/fixtures/margin_residual/README.md +++ b/tests/fixtures/margin_residual/README.md @@ -5,10 +5,10 @@ ways, so a strategy's margin calls and TradingView's entry admission decide most of its trades. Lane W5-ENG-MARGIN-V6 (`tests/fixtures/margin_v6`) fixed seven such rules; the Pine adapter rules below are the ones its residual probes still diverged on. Each is pinned here by synthetic probes written for -this lane; no closed or scraped strategy is involved. +this lane; no closed or third-party strategy is involved. -Each directory is one `lab tv --no-note` export (channel `ws-report-v1`, -`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times +Each directory is one recorded TradingView reference run +(`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json`, `meta.json`. `metrics.json` `tvTradesCsvHash` is the sha256 of `tv_trades.csv`. Every BINANCE:ETHUSDT.P probe runs on 15-minute bars, 2025-04-01 .. 2025-05-06, every NYSE:F probe on 15-minute bars, @@ -149,7 +149,7 @@ scope moves with it). `f15_bars.inc` is the NYSE:F 15m chart feed of the lab lane f-15 (evidence sha256 `80f404ae85ef0b6a0d8056a90997e92fa1236f1ae68b75c1b2d3a6f182558e32`), -rows 2025-04-15 13:30 .. 2025-05-19 19:45 UTC copied as text; the lab tv +rows 2025-04-15 13:30 .. 2025-05-19 19:45 UTC copied as text; the reference run window ends before 2025-05-20's session. `eur15_bars.inc` is the OANDA:EURUSD 15m chart feed of the lab lane eurusd-15 (evidence sha256 `f945f31a140aedc64ca24e2ace42b9885a914ce31a2531f74179b703c025a648`), rows diff --git a/tests/fixtures/margin_v6/README.md b/tests/fixtures/margin_v6/README.md index 18465d4c..92a3a8b7 100644 --- a/tests/fixtures/margin_v6/README.md +++ b/tests/fixtures/margin_v6/README.md @@ -4,11 +4,11 @@ Pine v6's default order is 100% of equity and its default margin is 100% both ways (lane TV-DEFAULTS, `tests/fixtures/tv_strategy_defaults`), so a strategy's margin calls and TradingView's entry admission now decide most of its trades. The Pine adapter rules below were missing or wrong under those defaults. Each -is pinned here by synthetic probes written for this lane; no closed or scraped +is pinned here by synthetic probes written for this lane; no closed or third-party strategy is involved. -Each directory is one `lab tv --no-note` export (channel `ws-report-v1`, -`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times +Each directory is one recorded TradingView reference run +(`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json`, `meta.json`. `metrics.json` `tvTradesCsvHash` is the sha256 of `tv_trades.csv`. Every probe but the two NYSE:F ones runs on BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-05-06, with fixed diff --git a/tests/fixtures/open_entry_fee_charged/README.md b/tests/fixtures/open_entry_fee_charged/README.md index d355e979..91bdf6ef 100644 --- a/tests/fixtures/open_entry_fee_charged/README.md +++ b/tests/fixtures/open_entry_fee_charged/README.md @@ -6,10 +6,10 @@ partial close) are already out of `strategy.netprofit`, so out of `strategy.equity` and of `strategy.netprofit_percent` / `strategy.openprofit_percent` too; `strategy.openprofit` stays gross of them. Each rule is pinned by synthetic probes written for this lane; no closed or -scraped strategy is involved. +third-party strategy is involved. -Each directory is one `lab tv --no-note` export (channel `ws-report-v1`, -`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times +Each directory is one recorded TradingView reference run +(`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json`, `meta.json`. `metrics.json` `tvTradesCsvHash` is the sha256 of `tv_trades.csv`. Every probe runs on BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-04-03, with an initial capital of 100000 and a fixed diff --git a/tests/fixtures/open_fill_order/README.md b/tests/fixtures/open_fill_order/README.md index 2346a75f..52e1fe23 100644 --- a/tests/fixtures/open_fill_order/README.md +++ b/tests/fixtures/open_fill_order/README.md @@ -12,7 +12,7 @@ the same price, closes 100 of the short and opens nothing. The native matcher breaks a same-point tie by queue order, so the engine filled such orders in placement order: a limit resting beside a close opened and was closed by it at once, and limits placed in descending order filled in -that order. The scraped `job-2712-3commas-3commas-gold-vault-long` and +that order. The reference `job-2712-3commas-3commas-gold-vault-long` and `3commas-3commas-silicon-vault-long-intc-dca-strategy` (BINANCE:ETHUSDT.P 1D) keep their DCA safety-order limits resting beside the take-profit `close_all`, and an open that gaps through them fills them with the close at @@ -22,8 +22,7 @@ rank and pair rules do not order these books: W6's same-rank tie-break is placement order, and E1 is price order) and added `r1c-ra-prior-limit` for limits that rested since an earlier bar. -Each directory is one `lab tv --no-note` export (maintainers' private pineforge-workflow, channel -`ws-report-v1`), byte for byte: `strategy.pine`, `tv_trades.csv` (times at +Each directory is one recorded TradingView reference run, byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json`, `meta.json`. | tape | chart | cells | trades | tv_trades.csv sha256 | @@ -44,7 +43,7 @@ range runs from the first session bar after the requested 00:00 UTC start adapter under the configuration each generated constructor declares, over the lane feeds embedded here (`eth15_bars.inc`: the corpus 15m chart feed rows 2025-04-14 00:00 .. 04-16 12:00 UTC; `f1d_bars.inc`: the NYSE:F 1D lane -feed, `lab bars` sha256 +feed, the reference bars sha256 `e3dd3a88e85bde802b65c26e1ad35cb17b3dcf66ad56f70e30a2ff711f2297bb`, rows 2024-12-02 .. 2025-07-31), and requires cells E1, E2a and E2b of `w8a-dca-open` and E, X and O of `r1c-ra-prior-limit` to be TradingView's diff --git a/tests/fixtures/pooc_close_fill_view/README.md b/tests/fixtures/pooc_close_fill_view/README.md index 8d25ee82..17f707d9 100644 --- a/tests/fixtures/pooc_close_fill_view/README.md +++ b/tests/fixtures/pooc_close_fill_view/README.md @@ -16,14 +16,14 @@ observer, `strategy.position_size[1] < 0 and strategy.position_size == 0`, then fired one bar early. Behind an exit cooldown, it blocked the next bar's entry. -The scraped `job-2947-seanvtran-svt-30m-options-swing-indicator` on +The reference `job-2947-seanvtran-svt-30m-options-swing-indicator` on BINANCE:ETHUSDT.P 15 lost its 2026-01-08 23:30 UTC short and every trade after it (668 TradingView rows) to that cooldown. ## The tapes -All are `lab tv --no-note` exports (maintainers' private pineforge-workflow, -channel `ws-report-v1`) on BINANCE:ETHUSDT.P 15, 2026-01-08 .. 2026-01-10. Each +All are recorded TradingView reference runs on BINANCE:ETHUSDT.P 15, +2026-01-08 .. 2026-01-10. Each was exported twice, the two exports are byte-identical, and `rangeProof` is `covered` on both. Every prediction was written before its export, and TradingView equals it on every row. Each directory holds `strategy.pine`, diff --git a/tests/fixtures/pooc_pair_gross/README.md b/tests/fixtures/pooc_pair_gross/README.md index f82cf551..f48543ec 100644 --- a/tests/fixtures/pooc_pair_gross/README.md +++ b/tests/fixtures/pooc_pair_gross/README.md @@ -6,7 +6,7 @@ keeps its two-leg shape. The adapter's gross decline held only under `calc_on_or slippage or commission; under `process_orders_on_close` alone, or with costs, the later call became a full reversal (officialjackofalltrades-helios on OANDA:EURUSD 1D). -Each directory is one `lab tv --no-note` export of the lane's own synthetic script (maintainers' private pineforge-workflow, channel `ws-report-v1`, OANDA:EURUSD 1D, 2025-04-01 .. 2026-05-01), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or scraped strategy is involved. `process_orders_on_close` on, +Each directory is one recorded TradingView reference run of the lane's own synthetic script (OANDA:EURUSD 1D, 2025-04-01 .. 2026-05-01), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or third-party strategy is involved. `process_orders_on_close` on, pyramiding 0, 100000 of capital. `tests/test_pooc_pair_gross_tapes.cpp` replays every tape. | tape | shape | trades | tv_trades.csv sha256 | rangeProof | diff --git a/tests/fixtures/pooc_same_pass_close/README.md b/tests/fixtures/pooc_same_pass_close/README.md index 19206526..a415493f 100644 --- a/tests/fixtures/pooc_same_pass_close/README.md +++ b/tests/fixtures/pooc_same_pass_close/README.md @@ -21,13 +21,13 @@ TradingView fills: under `pyramiding=0` as a same-side add, and in every case when the queued close flattened the position, which cancelled the pass's same-side market entries whichever call came first. -The scraped `pf-probe-concord-frangestate` (CME_MINI:NQ1! 15, strong) runs a +The reference `pf-probe-concord-frangestate` (CME_MINI:NQ1! 15, strong) runs a `close_all` and then a same-side entry in one pass on 22 bars. TradingView re-enters on the 7 bars where (held + qty) x close x 20 fits the equity and drops the entry on the other 15; the engine re-entered on all 22. -`w8a-pooc-sameside-closeall` is one `lab tv --no-note` export -(maintainers' private pineforge-workflow, channel `ws-report-v1`, `rangeProof` covered), byte for +`w8a-pooc-sameside-closeall` is one recorded TradingView reference run +(`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json`, `meta.json`. It runs on BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2026-05-01, with `process_orders_on_close`, `pyramiding=0`, margin 100/100, 10000 of capital @@ -50,7 +50,7 @@ script closes it and then places one entry in the same pass: trades), `strategy.pine` sha256 `575baae2d74db30e68fcd3fe832122d0b8ada22b85de94ea45b024d037a2dc44`. -`w8a-pooc-close-reentry-pyr2` (same channel and chart, `pyramiding=2`, fixed 1, +`w8a-pooc-close-reentry-pyr2` (same chart, `pyramiding=2`, fixed 1, 100000 of capital) enters L at 10:00 UTC each day; at 10:15 it calls `strategy.close("L")` then `strategy.entry("L_add")` on even days and the two in the other order on odd days, and cleans up at 11:00. diff --git a/tests/fixtures/pooc_samepass/README.md b/tests/fixtures/pooc_samepass/README.md index 15c60f18..229f9704 100644 --- a/tests/fixtures/pooc_samepass/README.md +++ b/tests/fixtures/pooc_samepass/README.md @@ -1,9 +1,9 @@ # process_orders_on_close decides the calculation's exits in its close pass (lane W4-ENG-POOC-SAMEPASS, F08) TradingView's own trades for exits a bar's close calculation places under -`process_orders_on_close`, written for this lane (no closed or scraped strategy -is involved). Each directory is one `lab tv --no-note` export (channel -`ws-report-v1`, `rangeProof` covered), byte for byte: `strategy.pine`, +`process_orders_on_close`, written for this lane (no closed or third-party strategy +is involved). Each directory is one recorded TradingView reference run +(`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json`, `meta.json`. The ETH probes run on BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-05-01, with fixed `timestamp("UTC", ...)` cells on 2025-04-08 .. 2025-04-10 and a diff --git a/tests/fixtures/pyramiding_open_order/README.md b/tests/fixtures/pyramiding_open_order/README.md index d1f8f0a2..bd1769f3 100644 --- a/tests/fixtures/pyramiding_open_order/README.md +++ b/tests/fixtures/pyramiding_open_order/README.md @@ -9,12 +9,11 @@ exceeded. The engine counted every pending same-side entry at the call and, under a non-fixed default quantity, refused a priced entry at its fill once the open trades reached the cap. -The scraped `job-2712-3commas-3commas-gold-vault-long` (BINANCE:BTCUSDT and +The reference `job-2712-3commas-3commas-gold-vault-long` (BINANCE:BTCUSDT and BINANCE:ETHUSDT.P 1D) rests its safety-order limits at the cap: TradingView books five lots at `pyramiding=4` where the engine refused the fifth. -`w8a-dca-open` is one `lab tv --no-note` export (maintainers' private pineforge-workflow, channel -`ws-report-v1`, `rangeProof` covered), byte for byte: `strategy.pine`, +`w8a-dca-open` is one recorded TradingView reference run (`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json`, `meta.json`. It runs on BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2026-05-01, with `pyramiding=3`, a cash default of 100 and an explicit `qty` on every call, in fixed diff --git a/tests/fixtures/run_harness_window/README.md b/tests/fixtures/run_harness_window/README.md index fbc8224c..433d9942 100644 --- a/tests/fixtures/run_harness_window/README.md +++ b/tests/fixtures/run_harness_window/README.md @@ -6,11 +6,11 @@ placed. TradingView's broker is live from the first bar it computes: jaysharma (×2, data) fills its first long at 2025-04-01 08:15 UTC from a supertrend stop placed before 08:00, and ki62 (eurusd-15, xauusd-15) arms phase A's stop once, long before its first fill. These tapes pin where that first bar is and what -happens around it. Each directory is one `lab tv --no-note` export (channel -`ws-report-v1`) of a synthetic script written for this lane, byte for byte: +happens around it. Each directory is one recorded TradingView reference run +of a synthetic script written for this lane, byte for byte: `strategy.pine`, `tv_trades.csv` (times UTC+8), `metrics.json`, `meta.json`; `metrics.json` `tvTradesCsvHash` is the sha256 of `tv_trades.csv`. No closed or -scraped strategy is involved. +third-party strategy is involved. ## TradingView's rule diff --git a/tests/fixtures/same_bar_reissue/README.md b/tests/fixtures/same_bar_reissue/README.md index 456ae6e6..164d58d0 100644 --- a/tests/fixtures/same_bar_reissue/README.md +++ b/tests/fixtures/same_bar_reissue/README.md @@ -23,7 +23,7 @@ call had reached the native core (ab9714be's R18 pins, `tests/test_replaced_percent_short_market.cpp`); it reversed a buy, a fixed or cash default, an explicit qty, and every reissue whose first call waited in the callback's same-bar batch (every fixed default, and a variable size over a -single-lot short). The scraped `you970716-snrz-0-7-1` calls `strategy.entry` +single-lot short). The reference `you970716-snrz-0-7-1` calls `strategy.entry` twice per signal (its `execute_trade()` body is written twice), so every reversal it made under `percent_of_equity 10` opened a whole new position where TradingView opened a sliver: BINANCE:BTCUSDT 15, 2025-10-19 08:30 UTC, TV long @@ -36,8 +36,7 @@ What keeps TradingView's full reversal (the controls): - a LIMIT first call re-issued as a MARKET order on the same bar (cell K); - a `strategy.cancel` of the id between the two calls (cell N). -Each directory is one `lab tv --no-note` export (maintainers' private pineforge-workflow, channel -`ws-report-v1`, `rangeProof` covered), byte for byte: `strategy.pine`, +Each directory is one recorded TradingView reference run (`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json`, `meta.json`. `metrics.json` `tvTradesCsvHash` is the sha256 of `tv_trades.csv`. Every probe runs on BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-05-01. diff --git a/tests/fixtures/same_point_entries/README.md b/tests/fixtures/same_point_entries/README.md index 5a951c51..9d2a3ec5 100644 --- a/tests/fixtures/same_point_entries/README.md +++ b/tests/fixtures/same_point_entries/README.md @@ -1,13 +1,13 @@ # Which order fills first at one fill point (lanes W6-ENG-FILL-ORDER, W6B-ENG-PAIRS) -Each directory is one `lab tv --no-note` export (channel `ws-report-v1`, -`rangeProof` covered) of a synthetic probe written for these lanes, byte for +Each directory is one recorded TradingView reference run +(`rangeProof` covered) of a synthetic probe written for these lanes, byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json`, `meta.json`. `metrics.json` `tvTradesCsvHash` is the sha256 of `tv_trades.csv`. Every probe runs on BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-05-01, with fixed `timestamp("UTC", ...)` cells on 2025-04-07 .. 2025-04-10 and a cleanup (`strategy.cancel_all()` plus `strategy.close_all()`) -after each cell. No closed or scraped strategy is involved. +after each cell. No closed or third-party strategy is involved. `tests/test_same_point_entries_tapes.cpp` replays the tapes through the Pine adapter under the configuration the generated constructor declares for each diff --git a/tests/fixtures/second_extreme_orders/README.md b/tests/fixtures/second_extreme_orders/README.md index b666d172..ec5dab35 100644 --- a/tests/fixtures/second_extreme_orders/README.md +++ b/tests/fixtures/second_extreme_orders/README.md @@ -36,10 +36,10 @@ recalculation places the exit limit X2 at X's level, already through, which the gap-fills at the first extreme; X2's recalculation re-enters E (pyramiding 1; long j = 28, 61 on low-first bars, short j = 13, 44 on high-first ones). The `-at-` variant puts the level exactly on the extreme, the `xbracket` one adds a far stop. TradingView books the -last re-entry at the second extreme on all six. They were exported with `--no-note`. +last re-entry at the second extreme on all six. They carry no campaign note. -Each directory is one `lab tv` export (maintainers' private pineforge-workflow, channel `ws-report-v1`, -`rangeProof: covered`, NYSE:F 15, window 2025-07-01 .. 2025-07-08), byte-identical: +Each directory is one recorded TradingView reference run (`rangeProof: covered`, +NYSE:F 15, window 2025-07-01 .. 2025-07-08), byte-identical: `strategy.pine`, `tv_trades.csv` (times UTC+8), `meta.json`, `metrics.json`. The scripts count chart bars from 2025-07-02 09:30 ET, the first bar of `tests/fixtures/session_islastbar/bars.inc`, whose 15m and 1m bars the rows replay. @@ -82,9 +82,9 @@ scripts count chart bars from 2025-07-02 09:30 ET, the first bar of | `pa3-f4-xlimit-w1-reentry-tp-short` | the same, short | 6 | `3c4561c2b5a4fe900e368c14b244ea8019be64cc95f6f90b7294dcb5a6abd90b` | `tv-tape-pa3-f4-xlimit-w1-reentry-tp-short-3c4561c2` | | `pa3-f4-point-w1-mkt-long` | point fill forced onto the first extreme, market entry B, long | 6 | `4a0c3d450ec01bb70b6e8341391e9babf4319a7eb53316a523d7c7cf3a323d35` | `tv-tape-pa3-f4-point-w1-mkt-long-4a0c3d45` | | `pa3-f4-point-w1-mkt-short` | the same, short | 6 | `b85b054c0c53200c9db1f8fd5c0c1bb6008bb38277034ed05ba0d5f3155666ff` | `tv-tape-pa3-f4-point-w1-mkt-short-b85b054c` | -| `int27-open-xlimit-w1-reentry-long` | X2 gap-filled at the first extreme, market re-entry, long | 6 | `d713d16b9f389f7a23793fbf549e61fec349a8311e5a2d150eef8a51618308ac` | none (`--no-note`) | -| `int27-open-xlimit-w1-reentry-short` | the same, short | 6 | `3fe435c0fc809ecca244e78609a7faec59a8041807231c02b22b4ff9e857e9f8` | none (`--no-note`) | -| `int27-open-xlimit-at-w1-reentry-long` | the same, X's level exactly on the first extreme, long | 6 | `d713d16b9f389f7a23793fbf549e61fec349a8311e5a2d150eef8a51618308ac` | none (`--no-note`) | -| `int27-open-xlimit-at-w1-reentry-short` | the same, short | 6 | `3fe435c0fc809ecca244e78609a7faec59a8041807231c02b22b4ff9e857e9f8` | none (`--no-note`) | -| `int27-open-xbracket-w1-reentry-long` | the same, X and X2 brackets with a far stop, long | 6 | `d713d16b9f389f7a23793fbf549e61fec349a8311e5a2d150eef8a51618308ac` | none (`--no-note`) | -| `int27-open-xbracket-w1-reentry-short` | the same, short | 6 | `3fe435c0fc809ecca244e78609a7faec59a8041807231c02b22b4ff9e857e9f8` | none (`--no-note`) | +| `int27-open-xlimit-w1-reentry-long` | X2 gap-filled at the first extreme, market re-entry, long | 6 | `d713d16b9f389f7a23793fbf549e61fec349a8311e5a2d150eef8a51618308ac` | none | +| `int27-open-xlimit-w1-reentry-short` | the same, short | 6 | `3fe435c0fc809ecca244e78609a7faec59a8041807231c02b22b4ff9e857e9f8` | none | +| `int27-open-xlimit-at-w1-reentry-long` | the same, X's level exactly on the first extreme, long | 6 | `d713d16b9f389f7a23793fbf549e61fec349a8311e5a2d150eef8a51618308ac` | none | +| `int27-open-xlimit-at-w1-reentry-short` | the same, short | 6 | `3fe435c0fc809ecca244e78609a7faec59a8041807231c02b22b4ff9e857e9f8` | none | +| `int27-open-xbracket-w1-reentry-long` | the same, X and X2 brackets with a far stop, long | 6 | `d713d16b9f389f7a23793fbf549e61fec349a8311e5a2d150eef8a51618308ac` | none | +| `int27-open-xbracket-w1-reentry-short` | the same, short | 6 | `3fe435c0fc809ecca244e78609a7faec59a8041807231c02b22b4ff9e857e9f8` | none | diff --git a/tests/fixtures/session_windows/README.md b/tests/fixtures/session_windows/README.md index d696da3d..8ef68e7f 100644 --- a/tests/fixtures/session_windows/README.md +++ b/tests/fixtures/session_windows/README.md @@ -1,11 +1,11 @@ # Session-flag tapes: several windows, overnight sessions, extended hours TradingView's own `session.*` flags on every bar of seventeen charts (R5 lane -K-SESSION-WINDOWS). Each directory is one TradingView export (channel -`ws-report-v1`, `rangeProof` covered), byte for byte: `strategy.pine`, -`tv_trades.csv` (times at UTC+8, the exporters' rendering), `metrics.json`, -and for a `lab tv` export `meta.json`. `metrics.json` `tvTradesCsvHash` is the -sha256 of `tv_trades.csv`. The probes are synthetic and public; no scraped or +K-SESSION-WINDOWS). Each directory is one recorded TradingView reference +tape (`rangeProof` covered), byte for byte: `strategy.pine`, +`tv_trades.csv` (times at UTC+8, the reference rendering), `metrics.json`, +and for a reference run `meta.json`. `metrics.json` `tvTradesCsvHash` is the +sha256 of `tv_trades.csv`. The probes are synthetic and public; no third-party or closed strategy is involved. Each probe reverses its position at the close of every chart bar @@ -20,40 +20,33 @@ followed by history reads the tests here do not use. ## Where each tape comes from -| tape | chart | window | bars | tv_trades.csv sha256 | exported (UTC) | exporter | origin | +| tape | chart | window | bars | tv_trades.csv sha256 | recorded (UTC) | source | origin | |---|---|---|---|---|---|---|---| -| `cgs2-flags-hkex700-15` | HKEX:700 15 | 2025-03-03 .. 03-15 | 220 | `45dd27e0365a9d4e942a478b457e3eb741fe912b2dba819bae5d8ea2c5d9dd36` | 2026-09-26 09:28:07 | `lab tv` | codegen `cg/session2` b717165 | -| `cgs2-flags-tse7203-15` | TSE:7203 15 | 2025-03-03 .. 03-15 | 230 | `d882fbe5d556d3c3fe5d2884adde2e28113a57c0b90d03072bf31185dca2ab9e` | 2026-09-26 09:27:40 | `lab tv` | codegen `cg/session2` b717165 | -| `cgs2-flags-zc1-15` | CBOT:ZC1! 15 | 2025-03-03 .. 03-15 | 710 | `7a69b0f608ad98aa0055cf16fa201505792dfa1e7dbd2288cffc019a9f528e49` | 2026-09-26 09:28:16 | `lab tv` | codegen `cg/session2` b717165 | -| `ksw-flags-hkex700-60` | HKEX:700 60 | 2025-03-03 .. 03-15 | 60 | `2ec27bec172e1955cb9b3859c3b0c7831d30a8c64718e9c8aa1c3eb6bb0074a2` | 2026-09-27 14:56:15 | `lab tv` | this lane | -| `ksw-flags-hkex700-240` | HKEX:700 240 | 2025-03-03 .. 03-15 | 20 | `749048b62deb91a92aa670f1ad4ad9a33c92b8d86ea0ef9b6b6a4f68be6bdb8a` | 2026-09-27 14:56:25 | `lab tv` | this lane | -| `ksw-flags-tse7203-60` | TSE:7203 60 | 2025-03-03 .. 03-15 | 70 | `8ab368d71a6e8a87e27c6b2c0f312a2e911261de73100761a1ba4e27ce6ec657` | 2026-09-27 14:56:18 | `lab tv` | this lane | -| `ksw-flags-tse7203-240` | TSE:7203 240 | 2025-03-03 .. 03-15 | 20 | `30134cad170cac95eb251511479b34a69bf9733bb26d694805e6c1df9b5eab56` | 2026-09-27 14:56:29 | `lab tv` | this lane | -| `ksw-flags-zc1-60` | CBOT:ZC1! 60 | 2025-03-03 .. 03-15 | 190 | `bb1094fb0ae4d4bb0916387117c1b2f774fc23e1157240b1eccf57809c42fd55` | 2026-09-27 14:56:22 | `lab tv` | this lane | -| `ksw-flags-zc1-240` | CBOT:ZC1! 240 | 2025-03-03 .. 03-15 | 50 | `64b998d56cf824a6f1fcbbc04c5ced77a3fd0c85661956c413457cb5f0310231` | 2026-09-27 14:56:33 | `lab tv` | this lane | -| `cgim-flags-es1-60-dst-mar` | CME_MINI:ES1! 60 | 2025-03-02 .. 03-14 | 210 | `be5bf635932cf5f460509b2f491ba283e904f4e0317a2f3c3c0d9f1c523f4fa1` | 2026-09-25 21:55:48 | `lab tv` | codegen main a425965 | -| `cgim-flags-xauusd-60-dst-mar` | OANDA:XAUUSD 60 | 2025-03-02 .. 03-14 | 210 | `308b250a01e1c2e77a74019d61f89e822305a9e76974bcd2b2e1b939a4cadb7e` | 2026-09-25 21:56:01 | `lab tv` | codegen main a425965 | -| `cgim-flags-eurusd-60-dst-mar` | OANDA:EURUSD 60 | 2025-03-02 .. 03-14 | 220 | `b40fbc81f290140da74127637c705c1d35872c92d10a7aa95e7228e8a791d25b` | 2026-09-25 21:55:58 | `lab tv` | codegen main a425965 | -| `cgim-flags-eth-60-24x7` | BINANCE:ETHUSDT.P 60 | 2025-03-07 .. 03-11 | 97 | `0a077e8b7af95d0a9279b0182d7024c140240ecd47d0d648a82e81cbbc61a5fe` | 2026-09-25 21:56:04 | `lab tv` | codegen main a425965 | -| `cgim-flags-aapl-60-ext` | NASDAQ:AAPL 60, extended hours | 2025-03-03 .. 03-15 | 160 | `c61119c7077dcf01cf89b13c77931a52bff4c1078e63c0e58c3e687f93db0802` | 2026-09-25 23:04:04 | exporter copy | codegen main a425965 | -| `cgim-flags-aapl-60-reg` | NASDAQ:AAPL 60 | 2025-03-03 .. 03-15 | 70 | `163434a171c27026622b65d0777118120f7660a2a97b2e320091aaf1c9bc6a57` | 2026-09-25 23:04:06 | exporter copy | codegen main a425965 | -| `cgs2-hist-aapl-15-ext` | NASDAQ:AAPL 15, extended hours | 2025-03-03 .. 03-15 | 639 | `a6dcfe7eacbc5704c91eac765ab93e7115ceb49d16e5440e8a42e70a2d9952da` | 2026-09-26 09:26:24 | exporter copy | codegen `cg/session2` cecebbd | -| `cgs2-hist-aapl-15-reg` | NASDAQ:AAPL 15 | 2025-03-03 .. 03-15 | 260 | `d4f5ed467ea7ac82fc90e4c0e6cc125c70c47b11762e342d11f946e89cffc737` | 2026-09-26 09:25:49 | `lab tv` | codegen `cg/session2` cecebbd | +| `cgs2-flags-hkex700-15` | HKEX:700 15 | 2025-03-03 .. 03-15 | 220 | `45dd27e0365a9d4e942a478b457e3eb741fe912b2dba819bae5d8ea2c5d9dd36` | 2026-09-26 09:28:07 | reference run | codegen `cg/session2` b717165 | +| `cgs2-flags-tse7203-15` | TSE:7203 15 | 2025-03-03 .. 03-15 | 230 | `d882fbe5d556d3c3fe5d2884adde2e28113a57c0b90d03072bf31185dca2ab9e` | 2026-09-26 09:27:40 | reference run | codegen `cg/session2` b717165 | +| `cgs2-flags-zc1-15` | CBOT:ZC1! 15 | 2025-03-03 .. 03-15 | 710 | `7a69b0f608ad98aa0055cf16fa201505792dfa1e7dbd2288cffc019a9f528e49` | 2026-09-26 09:28:16 | reference run | codegen `cg/session2` b717165 | +| `ksw-flags-hkex700-60` | HKEX:700 60 | 2025-03-03 .. 03-15 | 60 | `2ec27bec172e1955cb9b3859c3b0c7831d30a8c64718e9c8aa1c3eb6bb0074a2` | 2026-09-27 14:56:15 | reference run | this lane | +| `ksw-flags-hkex700-240` | HKEX:700 240 | 2025-03-03 .. 03-15 | 20 | `749048b62deb91a92aa670f1ad4ad9a33c92b8d86ea0ef9b6b6a4f68be6bdb8a` | 2026-09-27 14:56:25 | reference run | this lane | +| `ksw-flags-tse7203-60` | TSE:7203 60 | 2025-03-03 .. 03-15 | 70 | `8ab368d71a6e8a87e27c6b2c0f312a2e911261de73100761a1ba4e27ce6ec657` | 2026-09-27 14:56:18 | reference run | this lane | +| `ksw-flags-tse7203-240` | TSE:7203 240 | 2025-03-03 .. 03-15 | 20 | `30134cad170cac95eb251511479b34a69bf9733bb26d694805e6c1df9b5eab56` | 2026-09-27 14:56:29 | reference run | this lane | +| `ksw-flags-zc1-60` | CBOT:ZC1! 60 | 2025-03-03 .. 03-15 | 190 | `bb1094fb0ae4d4bb0916387117c1b2f774fc23e1157240b1eccf57809c42fd55` | 2026-09-27 14:56:22 | reference run | this lane | +| `ksw-flags-zc1-240` | CBOT:ZC1! 240 | 2025-03-03 .. 03-15 | 50 | `64b998d56cf824a6f1fcbbc04c5ced77a3fd0c85661956c413457cb5f0310231` | 2026-09-27 14:56:33 | reference run | this lane | +| `cgim-flags-es1-60-dst-mar` | CME_MINI:ES1! 60 | 2025-03-02 .. 03-14 | 210 | `be5bf635932cf5f460509b2f491ba283e904f4e0317a2f3c3c0d9f1c523f4fa1` | 2026-09-25 21:55:48 | reference run | codegen main a425965 | +| `cgim-flags-xauusd-60-dst-mar` | OANDA:XAUUSD 60 | 2025-03-02 .. 03-14 | 210 | `308b250a01e1c2e77a74019d61f89e822305a9e76974bcd2b2e1b939a4cadb7e` | 2026-09-25 21:56:01 | reference run | codegen main a425965 | +| `cgim-flags-eurusd-60-dst-mar` | OANDA:EURUSD 60 | 2025-03-02 .. 03-14 | 220 | `b40fbc81f290140da74127637c705c1d35872c92d10a7aa95e7228e8a791d25b` | 2026-09-25 21:55:58 | reference run | codegen main a425965 | +| `cgim-flags-eth-60-24x7` | BINANCE:ETHUSDT.P 60 | 2025-03-07 .. 03-11 | 97 | `0a077e8b7af95d0a9279b0182d7024c140240ecd47d0d648a82e81cbbc61a5fe` | 2026-09-25 21:56:04 | reference run | codegen main a425965 | +| `cgim-flags-aapl-60-ext` | NASDAQ:AAPL 60, extended hours | 2025-03-03 .. 03-15 | 160 | `c61119c7077dcf01cf89b13c77931a52bff4c1078e63c0e58c3e687f93db0802` | 2026-09-25 23:04:04 | reference run (no `meta.json`) | codegen main a425965 | +| `cgim-flags-aapl-60-reg` | NASDAQ:AAPL 60 | 2025-03-03 .. 03-15 | 70 | `163434a171c27026622b65d0777118120f7660a2a97b2e320091aaf1c9bc6a57` | 2026-09-25 23:04:06 | reference run (no `meta.json`) | codegen main a425965 | +| `cgs2-hist-aapl-15-ext` | NASDAQ:AAPL 15, extended hours | 2025-03-03 .. 03-15 | 639 | `a6dcfe7eacbc5704c91eac765ab93e7115ceb49d16e5440e8a42e70a2d9952da` | 2026-09-26 09:26:24 | reference run (no `meta.json`) | codegen `cg/session2` cecebbd | +| `cgs2-hist-aapl-15-reg` | NASDAQ:AAPL 15 | 2025-03-03 .. 03-15 | 260 | `d4f5ed467ea7ac82fc90e4c0e6cc125c70c47b11762e342d11f946e89cffc737` | 2026-09-26 09:25:49 | reference run | codegen `cg/session2` cecebbd | -- **`lab tv`** tapes ran `lab tv --pine --slug --symbol - --interval --from --to --out --no-note --json`: no - campaign note was recorded. The `cgim-flags-*`, `cgs2-flags-*` and - `ksw-flags-*` probes are one source (the every-flag probe; this lane's copy - differs only in its title and header comment, `strategy.pine` sha256 +- **reference run**: the regular session. The `cgim-flags-*`, + `cgs2-flags-*` and `ksw-flags-*` probes are one source (the every-flag + probe; this lane's copy differs only in its title and header comment, + `strategy.pine` sha256 `1a78deccefb408d955112da398240e8fc5b146d126c40e514ee24078e4af83d4`). -- **exporter copy**: `lab tv` and the WebSocket exporter - `pinescript-scrapper/scripts/tv-ws-backtest.mjs` (maintainers' private tooling) ask TradingView for the - regular session. The extended-hours tapes, and the two regular AAPL 60 - tapes exported beside them, ran lane CG-ISMARKET's copy of the exporter - that differs in one line, `session: process.env.CGIM_TV_SESSION || - "regular"` (sha256 - `15d8afae63844c35481e94ba14000720a9e8f0f500d28c51bc2f8cb8189f4f06`), with - `CGIM_TV_SESSION=extended`; they carry no `meta.json`. +- **reference run (no `meta.json`)**: the extended-hours tapes, and the regular + AAPL 60 tape recorded beside them; they carry no `meta.json`. - **origin**: the directory each tape was copied from unchanged: `pineforge-codegen` `tests/fixtures/session_ismarket/` at the commit named. diff --git a/tests/fixtures/source_buying_power/README.md b/tests/fixtures/source_buying_power/README.md index 1ee034a6..806db7d7 100644 --- a/tests/fixtures/source_buying_power/README.md +++ b/tests/fixtures/source_buying_power/README.md @@ -1,7 +1,7 @@ # Source-time buying power tapes -These independently authored strategies were exported from TradingView's -WebSocket strategy report on 2026-10-03. Each directory records the exact source, +These independently authored strategies were recorded as TradingView reference +runs on 2026-10-03. Each directory records the exact source, symbol, interval, UTC date range, report hashes, and export count in `provenance.json`. CSV trade timestamps are UTC+8. `bars.csv` contains the matching chart bars in UTC milliseconds; symbol tick and lot grids are set explicitly by diff --git a/tests/fixtures/syminfo_mincontract/README.md b/tests/fixtures/syminfo_mincontract/README.md index 995e8aa2..f72ec824 100644 --- a/tests/fixtures/syminfo_mincontract/README.md +++ b/tests/fixtures/syminfo_mincontract/README.md @@ -1,8 +1,8 @@ # `syminfo.mincontract` on every campaign lane (lane RUN-HARNESS, item 3) What does TradingView report as `syminfo.mincontract` on the charts the campaign -measures? Each directory is one `lab tv --no-note` export (channel -`ws-report-v1`, `rangeProof: covered`) of one synthetic read-out script, byte +measures? Each directory is one recorded TradingView reference run +(`rangeProof: covered`) of one synthetic read-out script, byte for byte: `strategy.pine`, `tv_trades.csv` (times UTC+8), `metrics.json`, `meta.json`; `metrics.json` `tvTradesCsvHash` is the sha256 of `tv_trades.csv`. The script (`pf-w2-mincontract-readout`, identical in every directory) enters @@ -37,7 +37,7 @@ Every value equals the lane's quantity step, the `PINEFORGE_VERIFY_QTY_STEP` its registry template (`lane_input_templates.environment`, read 2026-09-28) declares: aapl, es1, f, nifty, nq1 (15 and 1d) `1`; btcusdt-15/-1d `1e-05`; eurusd and xauusd (15 and 1d) `0.01`; ethusdtp-1d `0.0001`. The two ETH 15m -templates (eth-scraped-15, eth-corpus-15) declare no step; the Lab verifier +templates (the ETH 15 tape lane and the corpus ETH 15 lane) declare no step; the verifier substitutes ETHUSDT.P's 0.0001 there and records it as its default, not as lane evidence. diff --git a/tests/fixtures/time_bars_back/README.md b/tests/fixtures/time_bars_back/README.md index c30bd724..ab156f6f 100644 --- a/tests/fixtures/time_bars_back/README.md +++ b/tests/fixtures/time_bars_back/README.md @@ -2,10 +2,10 @@ TradingView's own `time()` / `time_close()` values with `bars_back` and `timeframe_bars_back` on every bar of six charts (R5 lane TAIL-E). Each -directory is one `lab tv --no-note` export (channel `ws-report-v1`), byte for -byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8, the exporter's +directory is one recorded TradingView reference tape, byte for +byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8, the reference rendering), `metrics.json` and `meta.json`. The probes are synthetic and -public; no scraped or closed strategy is involved. +public; no third-party or closed strategy is involved. Two probes, `te_time_bb_chart` (strategy.pine sha256 `f99738effbfc0c7899be5236980ad40e58257efc0578a905046b5d4d346136d5`) and @@ -24,7 +24,7 @@ chart bar's values are on the tape, its own open first. ## Where each tape comes from -| tape | chart | window | rows | tv_trades.csv sha256 | exported (UTC) | rangeProof | +| tape | chart | window | rows | tv_trades.csv sha256 | recorded (UTC) | rangeProof | |---|---|---|---|---|---|---| | `te-time-bb-chart-eth15` | BINANCE:ETHUSDT.P 15 | 2025-04-01..04-03 | 192 | `0999f59d862be6fb584e54b517c4fb138c0894cf709eaefed176bff551da3fa5` | 2026-09-28 23:43:13 | covered | | `te-time-bb-chart-aapl15` | NASDAQ:AAPL 15 | 2025-04-14..04-23 | 156 | `dc3d755c67c1acb8fa9f271ee635ef22bad7f65055054b469f1fceb01be9a459` | 2026-09-28 23:43:16 | covered | diff --git a/tests/fixtures/tv_strategy_defaults/README.md b/tests/fixtures/tv_strategy_defaults/README.md index a5603cfe..46325594 100644 --- a/tests/fixtures/tv_strategy_defaults/README.md +++ b/tests/fixtures/tv_strategy_defaults/README.md @@ -17,15 +17,14 @@ emits all three for a v6 script that omits them (`PINE_V6_STRATEGY_DEFAULTS`), the same seven tapes being its end-to-end rows (`tests/test_e2e_strategy_defaults.py` there). -Each directory is one `lab tv` export (channel `ws-report-v1`, `rangeProof` +Each directory is one recorded TradingView reference run (`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json`, `meta.json`. `metrics.json` `tvTradesCsvHash` is the sha256 of `tv_trades.csv`. The probes are synthetic, written for this lane; no closed -or scraped strategy is involved. Every probe trades the same signal (a +or third-party strategy is involved. Every probe trades the same signal (a 10/30-bar SMA cross, long only, entered from flat and closed on the opposite cross), so the tapes differ only in how TradingView sized each entry. -Exported on BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-05-01, with `--no-note` -(no campaign note was recorded). +Recorded on BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-05-01 without a campaign note. | tape | trades | `strategy()` declares | first entry (2025-04-01 23:30 UTC+8, 1910) | tv_trades.csv sha256 | |---|---:|---|---|---| diff --git a/tests/fixtures/tvdef_drops/README.md b/tests/fixtures/tvdef_drops/README.md index c6b9d9ef..801c5f52 100644 --- a/tests/fixtures/tvdef_drops/README.md +++ b/tests/fixtures/tvdef_drops/README.md @@ -5,10 +5,10 @@ Pine v6's default order size is 100% of equity (lane TV-DEFAULTS, contract now size every entry from the account, and three Pine adapter rules that R4 slice C lost while lowering ab9714be's source broker onto the native kernel surfaced as population drops. Each rule is pinned by synthetic probes -written for this lane; no closed or scraped strategy is involved. +written for this lane; no closed or third-party strategy is involved. -Each directory is one `lab tv --no-note` export (channel `ws-report-v1`, -`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times +Each directory is one recorded TradingView reference run +(`rangeProof` covered), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json`, `meta.json`. `metrics.json` `tvTradesCsvHash` is the sha256 of `tv_trades.csv`. Every probe runs on BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-05-01, with fixed `timestamp("UTC", ...)` cells on diff --git a/tests/fixtures/whole_lot_tie/README.md b/tests/fixtures/whole_lot_tie/README.md index 462746ce..0481e1dd 100644 --- a/tests/fixtures/whole_lot_tie/README.md +++ b/tests/fixtures/whole_lot_tie/README.md @@ -9,7 +9,7 @@ realized profit plus the open profit in floating point, whose residue decides an does not reproduce; where the engine's sum and that sum on the money grid disagree on the tie, the adapter keeps the no-gap rule it had (population probes, cited in the adapter's resolve_terms). -Each directory is one `lab tv --no-note` export of the lane's own synthetic script (maintainers' private pineforge-workflow, channel `ws-report-v1`, NYSE:F 1D, 2025-04-01 .. 2026-05-01), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or scraped strategy is involved. 100 % of equity, 100 % margin. +Each directory is one recorded TradingView reference run of the lane's own synthetic script (NYSE:F 1D, 2025-04-01 .. 2026-05-01), byte for byte: `strategy.pine`, `tv_trades.csv` (times at UTC+8), `metrics.json` (`tvTradesCsvHash` is the sha256 of `tv_trades.csv`), `meta.json`. No closed or third-party strategy is involved. 100 % of equity, 100 % margin. `tests/test_whole_lot_tie_tapes.cpp` replays every tape through the Pine adapter. | tape | shape | trades | tv_trades.csv sha256 | rangeProof | diff --git a/tests/test_coof_competing_tick_tapes.py b/tests/test_coof_competing_tick_tapes.py index f8b69ba3..5cf5d266 100644 --- a/tests/test_coof_competing_tick_tapes.py +++ b/tests/test_coof_competing_tick_tapes.py @@ -2,7 +2,7 @@ """TradingView's calc_on_order_fills competing-order tapes, replayed row for row. tests/fixtures/coof_competing_tick holds independently authored synthetic -strategies on NYSE:F 15m, exported with `lab tv --no-note` (two exports per +strategies on NYSE:F 15m, recorded as reference runs (two runs per script, byte-identical). Each script holds one lot for at most two bars per event: a market entry fills at the open of the event's fill bar, and a strategy.exit stop or limit at a level chosen from that bar's own extreme diff --git a/tests/test_coof_open_newborn_exit_tape.cpp b/tests/test_coof_open_newborn_exit_tape.cpp index 6af2d6d2..3a030f8a 100644 --- a/tests/test_coof_open_newborn_exit_tape.cpp +++ b/tests/test_coof_open_newborn_exit_tape.cpp @@ -13,7 +13,7 @@ * such a stop for the next bar (job-1856 DPO/MACD/DI/SMA on EURUSD and * ETHUSDT.P 1D). * - * The lane's own synthetic script, one `lab tv --no-note` export + * The lane's own synthetic script, one recorded reference run * (BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-04-15), stateless per cell: an * 8-hour UTC cycle, the first entry placed at the hh:30 close and filled at * the hh:45 open; @@ -71,7 +71,7 @@ struct FeedBar { #include "fixtures/coof_open_newborn_exit/bars.inc" constexpr double kNaN = std::numeric_limits::quiet_NaN(); -// BINANCE:ETHUSDT.P's quantity step and price tick (lane eth-scraped-15). +// BINANCE:ETHUSDT.P's quantity step and price tick. constexpr double kLot = 0.0001; constexpr double kTick = 0.01; diff --git a/tests/test_cross_side_exit_tapes.py b/tests/test_cross_side_exit_tapes.py index b9bf3c54..60618332 100644 --- a/tests/test_cross_side_exit_tapes.py +++ b/tests/test_cross_side_exit_tapes.py @@ -2,7 +2,7 @@ """TradingView's cross-side exit tapes, replayed row for row. tests/fixtures/cross_side_exit holds independently authored synthetic -strategies on NYSE:F 15m, exported with `lab tv --no-note`. Each `*-opp-*` +strategies on NYSE:F 15m, recorded as reference runs. Each `*-opp-*` script holds a position and, on every bar it is held, places an entry order of the OTHER side that rests and is never reached, then calls strategy.exit with no from_entry; its `*-ctl-*` twin is the same script without that entry. diff --git a/tests/test_famag_close_survives.cpp b/tests/test_famag_close_survives.cpp index 4212cc6c..c3c4709a 100644 --- a/tests/test_famag_close_survives.cpp +++ b/tests/test_famag_close_survives.cpp @@ -3,7 +3,7 @@ * all-in reversal SURVIVES a rule-5 whole drop (round 11 family AG; campaign * notes log-20260905t232805z-41661c90 and log-20260905t233556z-7f5ce2ed). * - * The scrapper wrapper's reversal idiom is strategy.entry(opposite) THEN + * The wrapper's reversal idiom is strategy.entry(opposite) THEN * strategy.close(current) on one signal bar. When TradingView's price-scale * margin check (engine.hpp rule 5: P = sig10(sig10(E_s) / Q) < tick(close_S)) * drops the reversal, the reversal order is gone at placement and the @@ -14,8 +14,8 @@ * suppress_declined_reversal_close_legs). Rule 2 (E_s < sig10(cost)) keeps * the reversal's own close leg, whose row carries the reversal's id. * - * Pinned by 17 lab tv tapes on OANDA:EURUSD 15 (scratch ~/pf-scratch/pins on - * the campaign machine; strategy.equity / position_size in every order + * Pinned by 17 recorded reference tapes on OANDA:EURUSD 15 (the campaign + * machine's pins; strategy.equity / position_size in every order * comment, the solved E_s read back to 1e-9), replayed here on the registry * feed's bars 2025-05-19..05-27 (test_famag_close_survives_data.hpp) ROW FOR * ROW — entry bar, side, fill price, quantity, exit bar, exit price, 'Margin diff --git a/tests/test_famag_close_survives_data.hpp b/tests/test_famag_close_survives_data.hpp index c9a0019e..9bc53e4d 100644 --- a/tests/test_famag_close_survives_data.hpp +++ b/tests/test_famag_close_survives_data.hpp @@ -1,5 +1,5 @@ -// Generated by ~/pf-scratch/gen_famag.py (pineforge-workflow campaign, round 11 family AG) from the -// famag-A*/famag-B* lab tv tapes (OANDA:EURUSD 15, 2025-05-12..05-28) and the registry feed f945f31a bars. Do not edit. +// Derived from the round 11 family AG reference tapes, the +// famag-A*/famag-B* reference runs (OANDA:EURUSD 15, 2025-05-12..05-28) and the registry feed f945f31a bars. Do not edit. #pragma once #include namespace famag_close_survives_data { diff --git a/tests/test_famag_close_survives_l4d.cpp b/tests/test_famag_close_survives_l4d.cpp index 226071ba..f9160fb0 100644 --- a/tests/test_famag_close_survives_l4d.cpp +++ b/tests/test_famag_close_survives_l4d.cpp @@ -16,7 +16,7 @@ * all-in reversal SURVIVES a rule-5 whole drop (round 11 family AG; campaign * notes log-20260905t232805z-41661c90 and log-20260905t233556z-7f5ce2ed). * - * The scrapper wrapper's reversal idiom is strategy.entry(opposite) THEN + * The wrapper's reversal idiom is strategy.entry(opposite) THEN * strategy.close(current) on one signal bar. When TradingView's price-scale * margin check (engine.hpp rule 5: P = sig10(sig10(E_s) / Q) < tick(close_S)) * drops the reversal, the reversal order is gone at placement and the @@ -27,8 +27,8 @@ * suppress_declined_reversal_close_legs). Rule 2 (E_s < sig10(cost)) keeps * the reversal's own close leg, whose row carries the reversal's id. * - * Pinned by 17 lab tv tapes on OANDA:EURUSD 15 (scratch ~/pf-scratch/pins on - * the campaign machine; strategy.equity / position_size in every order + * Pinned by 17 recorded reference tapes on OANDA:EURUSD 15 (the campaign + * machine's pins; strategy.equity / position_size in every order * comment, the solved E_s read back to 1e-9), replayed here on the registry * feed's bars 2025-05-19..05-27 (test_famag_close_survives_data.hpp) ROW FOR * ROW — entry bar, side, fill price, quantity, exit bar, exit price, 'Margin diff --git a/tests/test_intraday_loss_open_fill_tape.cpp b/tests/test_intraday_loss_open_fill_tape.cpp index 3c221d64..f8504ba4 100644 --- a/tests/test_intraday_loss_open_fill_tape.cpp +++ b/tests/test_intraday_loss_open_fill_tape.cpp @@ -10,11 +10,11 @@ * own realized P&L is not yet in the equity TradingView checks) also ran at * the open: it read the winner's whole open profit as a loss at least the * 1.5 % threshold, blocked the day and dropped every later order. The - * scraped officialjackofalltrades-aureate-market-architecture-strategy-joat + * reference officialjackofalltrades-aureate-market-architecture-strategy-joat * (BINANCE:ETHUSDT.P 1D, 2026-02-07) lost TradingView's two re-entries of * that day this way. * - * One lab tv export (tests/fixtures/intraday_loss_open_fill/w8a-ild-open, + * One recorded reference run (tests/fixtures/intraday_loss_open_fill/w8a-ild-open, * BINANCE:ETHUSDT.P 1D, 2025-04-01 .. 2026-05-01) replayed through the Pine * adapter under the configuration its generated constructor declares, over * the lane's own daily bars (bars.inc): every trade must be the engine's -- diff --git a/tests/test_limit_entry_affordability_tape.cpp b/tests/test_limit_entry_affordability_tape.cpp index 95e6841c..89103a9f 100644 --- a/tests/test_limit_entry_affordability_tape.cpp +++ b/tests/test_limit_entry_affordability_tape.cpp @@ -11,13 +11,13 @@ * its placement check, so a re-issue rejected by TradingView kept its * resting order alive. * - * The scraped algotorma-algo-torma-orb-strategy (BINANCE:BTCUSDT 15, strong) + * The reference algotorma-algo-torma-orb-strategy (BINANCE:BTCUSDT 15, strong) * re-issues its breakout limit every bar while armed; the last re-issue * (2026-01-14 23:45, close 96951.78 over an equity of 96846.71) was * rejected in TradingView, and the engine filled the resting order on 01-15 * 03:15 -- its one engine-only trade. * - * One lab tv export (tests/fixtures/limit_entry_affordability/ + * One recorded reference run (tests/fixtures/limit_entry_affordability/ * w8a-btc15-limafford, BINANCE:BTCUSDT 15, equity 95000, a default fixed * quantity of 1, margin 100 %) replayed through the Pine adapter under the * configuration its generated constructor declares, over the lane's 15m bars diff --git a/tests/test_ltf_lookahead_first_bucket_data.hpp b/tests/test_ltf_lookahead_first_bucket_data.hpp index 5c34d7d5..5515af94 100644 --- a/tests/test_ltf_lookahead_first_bucket_data.hpp +++ b/tests/test_ltf_lookahead_first_bucket_data.hpp @@ -4,11 +4,11 @@ // btcusdt-1d feeds.chart, feed-btcusdt-1d-chart, 111091 bytes) and the 1m finer // feed 787fd2e15bfeddb062cbb7905248ff4be2fe5c695bbe971f9322826f16528b86 (lane // btcusdt-1d feeds.finer, 153982613 bytes, read from the byte-identical local -// copy pinescript-scrapper/ohlcv/BINANCE-BTCUSDT/1m.csv). Bars are +// copy of the lane's own 1m feed). Bars are // {open, high, low, close, volume, timestamp_ms}; the chart bars are stamped at // 00:00 UTC (24x7 crypto), the window is TradingView's deep-backtest range // start of the pin (2025-04-01) so the requested 15m series seeds exactly as -// TradingView's did (lab tv notrade-ltf-sample-btc1d, 2026-09-05). +// TradingView's did (the reference run notrade-ltf-sample-btc1d, 2026-09-05). #pragma once #include diff --git a/tests/test_magnified_coof_refill_tape.cpp b/tests/test_magnified_coof_refill_tape.cpp index 6d0d374d..f3761814 100644 --- a/tests/test_magnified_coof_refill_tape.cpp +++ b/tests/test_magnified_coof_refill_tape.cpp @@ -15,7 +15,7 @@ * the magnifier). * * The lane's own synthetic script (tests/fixtures/magnified_coof_refill/ - * tailc-mag-coof-refill-leg, one `lab tv --no-note` export, BINANCE:ETHUSDT.P + * tailc-mag-coof-refill-leg, one recorded reference run, BINANCE:ETHUSDT.P * 15 magnified, 2025-04-01 .. 2025-05-01), stateless: P, a one-unit short on * every even UTC hour's first bar; X, its buy stop at the average + 3, P * closed after 8 bars; R, placed by the recalculation of X's fill and by that @@ -72,7 +72,7 @@ struct FeedBar { #include "fixtures/magnified_coof_refill/bars_1m.inc" constexpr double kNaN = std::numeric_limits::quiet_NaN(); -// BINANCE:ETHUSDT.P's quantity step and price tick (lane eth-scraped-15). +// BINANCE:ETHUSDT.P's quantity step and price tick. constexpr double kLot = 0.0001; constexpr double kTick = 0.01; constexpr std::int64_t kChartMs = 15 * 60'000; diff --git a/tests/test_open_fill_order_tapes.cpp b/tests/test_open_fill_order_tapes.cpp index a6d058ac..0bf64a9e 100644 --- a/tests/test_open_fill_order_tapes.cpp +++ b/tests/test_open_fill_order_tapes.cpp @@ -11,12 +11,12 @@ * with. The native matcher breaks a same-point tie by queue order, so the * engine filled them in placement order: a safety-order limit resting beside * a take-profit close_all opened and was closed by it at once, and limits - * placed in descending order filled in that order. The scraped + * placed in descending order filled in that order. The reference * job-2712-3commas-3commas-gold-vault-long (BINANCE:ETHUSDT.P 1D) and * 3commas-3commas-silicon-vault-long-intc-dca-strategy keep their DCA limits * resting beside the take-profit close_all. * - * Two lab tv --no-note exports (tests/fixtures/open_fill_order): + * Two recorded reference runs (tests/fixtures/open_fill_order): * * w8a-dca-open (lane W8A-SIGSTATE-1, BINANCE:ETHUSDT.P 15, pyramiding=3, a * cash default, an explicit qty on every call; a byte-identical copy of diff --git a/tests/test_per_entry_exit_tapes.py b/tests/test_per_entry_exit_tapes.py index cd86c006..50b27292 100644 --- a/tests/test_per_entry_exit_tapes.py +++ b/tests/test_per_entry_exit_tapes.py @@ -2,7 +2,7 @@ """TradingView's per-entry exit tapes, replayed row for row. tests/fixtures/per_entry_exit holds independently authored synthetic -strategies on NYSE:F 15m, exported with `lab tv --no-note`. Each script holds +strategies on NYSE:F 15m, recorded as reference runs. Each script holds one lot (pyramiding 2) and calls strategy.exit with no from_entry and a relative leg (profit, loss, or both) on every bar it is held; on the first held bar it places, once, an add of the held side that the price reaches diff --git a/tests/test_pooc_add_close_tape.cpp b/tests/test_pooc_add_close_tape.cpp index bd2a5308..e53ab320 100644 --- a/tests/test_pooc_add_close_tape.cpp +++ b/tests/test_pooc_add_close_tape.cpp @@ -17,7 +17,7 @@ * N; lane W8E-EXITS's rule). * * The lane W10 diag-w5r synthetic script (tests/fixtures/pooc_add_close, one - * `lab tv` export, BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-05-01; cells on + * recorded reference run, BINANCE:ETHUSDT.P 15, 2025-04-01 .. 2025-05-01; cells on * 2025-04-14 .. 04-16, each a market entry at t0 and orders at t0 + 15m, * fixed 1, slippage 3, commission 0.05 %). The row replays the tape through * the Pine adapter over the corpus 15m chart feed (bars.inc) and requires all @@ -68,7 +68,7 @@ struct FeedBar { #include "fixtures/pooc_add_close/bars.inc" constexpr double kNaN = std::numeric_limits::quiet_NaN(); -// BINANCE:ETHUSDT.P's quantity step and price tick (lane eth-scraped-15). +// BINANCE:ETHUSDT.P's quantity step and price tick. constexpr double kLot = 0.0001; constexpr double kTick = 0.01; diff --git a/tests/test_pooc_close_fill_view_tapes.py b/tests/test_pooc_close_fill_view_tapes.py index 325342b2..48a4f5bd 100644 --- a/tests/test_pooc_close_fill_view_tapes.py +++ b/tests/test_pooc_close_fill_view_tapes.py @@ -2,7 +2,7 @@ """TradingView's POOC same-pass position-view tapes, replayed row for row. tests/fixtures/pooc_close_fill_view holds independently authored synthetic -strategies on BINANCE:ETHUSDT.P 15m, exported with `lab tv --no-note` (two +strategies on BINANCE:ETHUSDT.P 15m, recorded as reference runs (two byte-identical exports each). Under process_orders_on_close and pyramiding=0, each holds a one-lot short (a long in one mirror) and, on 2026-01-08 23:15 UTC, ends it with an order that fills at that bar's close: a strategy.exit diff --git a/tests/test_pooc_same_pass_close_tape.cpp b/tests/test_pooc_same_pass_close_tape.cpp index 78ad7f1e..26373314 100644 --- a/tests/test_pooc_same_pass_close_tape.cpp +++ b/tests/test_pooc_same_pass_close_tape.cpp @@ -15,12 +15,12 @@ * cancelled every same-side market entry of the pass when a queued * strategy.close(id) flattened the position. * - * The scraped pf-probe-concord-frangestate (CME_MINI:NQ1! 15) closes its + * The reference pf-probe-concord-frangestate (CME_MINI:NQ1! 15) closes its * position and re-enters on the same side in one pass: TradingView drops * the entry on 15 of those 22 bars, where (held + qty) x close x 20 exceeds * the equity, and the engine re-entered on all 22. * - * One lab tv export (tests/fixtures/pooc_same_pass_close/ + * One recorded reference run (tests/fixtures/pooc_same_pass_close/ * w8a-pooc-sameside-closeall, BINANCE:ETHUSDT.P 15) replayed through the * Pine adapter under the configuration its generated constructor declares, * over the corpus 15m bars of bars.inc (2025-04-01 12:00 .. 04-09 00:00 UTC, diff --git a/tests/test_pyramiding_open_order_tape.cpp b/tests/test_pyramiding_open_order_tape.cpp index f72439bf..317fc73d 100644 --- a/tests/test_pyramiding_open_order_tape.cpp +++ b/tests/test_pyramiding_open_order_tape.cpp @@ -9,12 +9,12 @@ * default quantity, refused a priced entry at its fill once the open trades * reached the cap. * - * The scraped job-2712-3commas-3commas-gold-vault-long (BINANCE:BTCUSDT and + * The reference job-2712-3commas-3commas-gold-vault-long (BINANCE:BTCUSDT and * BINANCE:ETHUSDT.P 1D) rests its safety-order limits at the cap: * TradingView books five lots at pyramiding=4 where the engine refused the * fifth. * - * One lab tv export (tests/fixtures/pyramiding_open_order/w8a-dca-open, + * One recorded reference run (tests/fixtures/pyramiding_open_order/w8a-dca-open, * BINANCE:ETHUSDT.P 15, pyramiding=3, a cash default, an explicit qty on * every call) replayed through the Pine adapter under the configuration its * generated constructor declares, over the corpus 15m bars of bars.inc diff --git a/tests/test_reversal_admission_float_guard.cpp b/tests/test_reversal_admission_float_guard.cpp index 6213d46e..73043bcb 100644 --- a/tests/test_reversal_admission_float_guard.cpp +++ b/tests/test_reversal_admission_float_guard.cpp @@ -17,7 +17,7 @@ * of notional)". That last clause is an empirical claim about the ABSENCE of * sub-lot ground truth. * - * WHAT FALSIFIED IT (reversal arm only). A scraped 13-month ETHUSDT.P row + * WHAT FALSIFIED IT (reversal arm only). A reference 13-month ETHUSDT.P row * (chartprime-power-order-blocks-chartprime; percent_of_equity = 100, margin * 100, qty_step 0.0001) carries 2,419 TradingView reversal decisions: 94 * declines and 2,325 admits. 92 of the 94 declines have margins BELOW one lot @@ -34,7 +34,7 @@ * * Scope: the one-lot term was REMOVED ON THE REVERSAL ARM ONLY here. The * flat-open arm keeps it. The same-direction-add arm kept it until TradingView - * falsified it too: on NYSE:F's whole shares, lab tv tapes w5b-pa-f-market-p50 + * falsified it too: on NYSE:F's whole shares, reference tapes w5b-pa-f-market-p50 * and -pooc-p50 (tests/fixtures/margin_residual, R5 lane * W5B-ENG-MARGIN-RESIDUAL) drop every add whose held-plus-own margin exceeds * the equity by less than one share's notional ($1.90 .. $9.95 against a @@ -236,7 +236,7 @@ void test_reversal_above_lot_gap_still_declined() { // E.1 C = 106: equity 10300, qty_add = floor_1(5150/106) = floor_1(48.58) // = 48, required = 5088. Shortfall $88 against a $106 lot, so the add // is DECLINED: TradingView drops a sub-lot shortfall add like any -// other (lab tv tapes tests/fixtures/margin_residual +// other (reference tapes tests/fixtures/margin_residual // w5b-pa-f-market-p50 and -pooc-p50; R5 lane W5B-ENG-MARGIN-RESIDUAL, // which moved this pin from ADMITTED). // E.2 C = 108: equity 10400, qty_add = floor_1(5200/108) = 48, diff --git a/tests/test_reversal_admission_float_guard_l4c.cpp b/tests/test_reversal_admission_float_guard_l4c.cpp index facb6e95..bb7bb65c 100644 --- a/tests/test_reversal_admission_float_guard_l4c.cpp +++ b/tests/test_reversal_admission_float_guard_l4c.cpp @@ -21,7 +21,7 @@ * of notional)". That last clause is an empirical claim about the ABSENCE of * sub-lot ground truth. * - * WHAT FALSIFIED IT (reversal arm only). A scraped 13-month ETHUSDT.P row + * WHAT FALSIFIED IT (reversal arm only). A reference 13-month ETHUSDT.P row * (chartprime-power-order-blocks-chartprime; percent_of_equity = 100, margin * 100, qty_step 0.0001) carries 2,419 TradingView reversal decisions: 94 * declines and 2,325 admits. 92 of the 94 declines have margins BELOW one lot @@ -38,7 +38,7 @@ * * Scope: the one-lot term was REMOVED ON THE REVERSAL ARM ONLY here. The * flat-open arm keeps it. The same-direction-add arm kept it until TradingView - * falsified it too: on NYSE:F's whole shares, lab tv tapes w5b-pa-f-market-p50 + * falsified it too: on NYSE:F's whole shares, reference tapes w5b-pa-f-market-p50 * and -pooc-p50 (tests/fixtures/margin_residual, R5 lane * W5B-ENG-MARGIN-RESIDUAL) drop every add whose held-plus-own margin exceeds * the equity by less than one share's notional ($1.90 .. $9.95 against a @@ -240,7 +240,7 @@ void test_reversal_above_lot_gap_still_declined() { // E.1 C = 106: equity 10300, qty_add = floor_1(5150/106) = floor_1(48.58) // = 48, required = 5088. Shortfall $88 against a $106 lot, so the add // is DECLINED: TradingView drops a sub-lot shortfall add like any -// other (lab tv tapes tests/fixtures/margin_residual +// other (reference tapes tests/fixtures/margin_residual // w5b-pa-f-market-p50 and -pooc-p50; R5 lane W5B-ENG-MARGIN-RESIDUAL, // which moved this pin from ADMITTED). // E.2 C = 108: equity 10400, qty_add = floor_1(5200/108) = 48, diff --git a/tests/test_same_bar_reissue_tapes.cpp b/tests/test_same_bar_reissue_tapes.cpp index dac1e22c..38381fe9 100644 --- a/tests/test_same_bar_reissue_tapes.cpp +++ b/tests/test_same_bar_reissue_tapes.cpp @@ -17,7 +17,7 @@ * first call had reached the native core (ab9714be's R18 pins); it reversed * a buy, a fixed or cash default, an explicit qty, and every reissue whose * first call waited in the callback's same-bar batch (every fixed default, - * and a variable size over a single-lot short). The scraped + * and a variable size over a single-lot short). The reference * you970716-snrz-0-7-1 calls strategy.entry twice per signal, so its * reversals under percent_of_equity 10 opened whole positions where * TradingView opened slivers (BINANCE:BTCUSDT 15, 2025-10-19 08:30 UTC: TV @@ -28,7 +28,7 @@ * each is a control below. * * Each row replays TradingView's own tape of a synthetic probe - * (tests/fixtures/same_bar_reissue, fifteen lab tv exports on + * (tests/fixtures/same_bar_reissue, fifteen recorded reference runs on * BINANCE:ETHUSDT.P 15: six w8a-* of lane W8A-SIGSTATE-1 and nine w8b-* of * lane W8B-SIGSTATE-2) through the Pine adapter under the configuration the * generated constructor declares for it, over the corpus 15m bars of diff --git a/tests/test_same_side_exit_tapes.py b/tests/test_same_side_exit_tapes.py index 8f4e4bfa..393329a1 100644 --- a/tests/test_same_side_exit_tapes.py +++ b/tests/test_same_side_exit_tapes.py @@ -2,7 +2,7 @@ """TradingView's same-side exit tapes, replayed row for row. tests/fixtures/same_side_exit holds independently authored synthetic -strategies on NYSE:F 15m, exported with `lab tv --no-note`. Each script holds +strategies on NYSE:F 15m, recorded as reference runs. Each script holds one lot and, on every bar it is held, calls strategy.exit with no from_entry (a profit, loss, profit and loss, or trail leg). Its add twins first place an entry order of the HELD side: a limit or a stop that rests and is never diff --git a/tests/test_session_break_open_bar_tape.cpp b/tests/test_session_break_open_bar_tape.cpp index 9edde5da..f74a8cd0 100644 --- a/tests/test_session_break_open_bar_tape.cpp +++ b/tests/test_session_break_open_bar_tape.cpp @@ -6,7 +6,7 @@ * 12:00 holds the 12:30 reopen; on CBOT:ZC1! (1900-0745,0830-1320 * America/Chicago) the one opening at 08:00 holds the 08:30 reopen. * - * TradingView (tests/fixtures/session_windows, `lab tv --no-note` exports of + * TradingView (tests/fixtures/session_windows, recorded reference runs of * this lane): both bars are in market, neither pre- nor post-market, and * neither is a session day's first or last bar; its 60- and 240-minute bars * open at the same instants as the engine's aggregation of TradingView's own