Skip to content

Releases: pineforge-4pass/pineforge-engine

v0.13.1

Choose a tag to compare

@github-actions github-actions released this 06 Sep 02:00

v0.13.1

Changes since v0.13.0

  • chore(release): v0.13.1 (51cc4e8)
  • docs(README): rewrite for the round-11 engine — brand-first, OSS-first, every number re-measured (622d653)
  • docs(README): round-11 closed-test results and a full factual refresh (2ab2bfb)
  • engine: an explicit zero-offset trail rides the raw running best once armed (round 10 family AC) — re-apply bde0911's engine change (c86c082)
  • tests: replay 29 more family-AC tapes (pins3..pins5) on registry bars — 75 in total; the print-vs-level rule in the harness header (4ec05f2)
  • engine: a zero-offset trail's arming open fills when its PRINT sits at the directionally snapped level, not only on the tick grid (round 10 family AC) (23f6ab0)
  • engine: a zero-offset trail's arming open fills only when it is ON the tick grid (round 10 family AC) (f620c7c)
  • tests: replay the 35 family-AC zero-offset trail tapes on registry bars; re-pin the one-shot fixtures (6eaa543)
  • engine: a strategy.close co-queued with a rule-5-dropped all-in reversal still fills (round 11 family AG, OANDA:EURUSD@15) (36b500b)
  • engine: the decline bar never arms a surviving trail leg, and a leg its open already sits past dies with the stop and limit (round 10 family AE, fast-scalper NASDAQ:AAPL@15) (cfc27b7)
  • engine: the ten-significant-digit equity and the raw lot floor size every lot-stepped instrument, integer shares included (round 10 family AE, fast-scalper NASDAQ:AAPL@15) (fd5e9f5)
  • engine: a declined reversal kills a bracket's stop and limit legs, never its trail leg, and only from the bar after the decline; the reversal is judged before the position's gapped stop (round 9 family X, fast-scalper AAPL/XAUUSD/F/NIFTY@15) (3aeb229)
  • engine: a close-restarted trailing extreme skips the issuing bar's own high/low under process_orders_on_close (round 10 family Y, winthetrade ema-9-vwap) (d7f8934)
  • engine.hpp: the ten-significant-digit money header names round 10 family AB's landing of rule 3 on main (docs only, round 9 family R port) (afc4872)
  • engine: rules 2 and 5 judge a true-flat placement and a bare reversal on E_s; an entry that fills flat behind a same-bar strategy.close is not judged (round 9 family R follow-up) (49eb682)
  • engine.hpp: rule 5 comment — the judged equity is the equity at the moment the broker judges the order (round 9 family R follow-up, docs only) (c166dff)
  • engine: the equity a default market entry is judged against is the equity at the moment the broker judges it -- a from-flat fill uses the cash then (post-close for a close+entry pair), a bare reversal the signal close (round 9 family R follow-up) (5f388d9)
  • engine: TradingView's whole-order drop band -- the fill-time margin check on the price scale with the tick-built price, and the raw lot floor (round 9 family R follow-up, OANDA:EURUSD@15) (2ab8bdf)
  • engine: TradingView's broker carries money at ten significant digits -- rounded-equity sizing, rounded-cost admission with close-only reversals, the one-contract rounding margin call (round 8 family R, OANDA:EURUSD@15) (f689924)
  • engine: a margin-100 long is margin-called one contract where the exact equity falls under the position value rounded to ten significant digits (round 10 family AB, anomaly-equity-mirror BINANCE:ETHUSDT.P@15 hard lane) (5239a36)
  • tests: issue #177 — a limit exit whose level carries an FP residue must fill on the exact-touch bar (round 8 family T shape) (00e3a52)
  • tests: the chart-close tracker rollback with a calc_on_order_fills recalc on every bar (issue #178, round 9 JOAT aureate) (6a2b96f)
  • engine: the chart-close tracker rolls back with the calc_on_order_fills checkpoint (issue #178, JOAT aureate) (c32d3c6)
  • engine: ta.atr / ta.tr read the true range against the previous CHART bar's close on a sparse call site (issue #178) (6a4c936)
  • Merge commit '33bac5e' into round10/candidate-q (aa8852d)
  • corpus: no account-currency FX — every USDT-quoted probe keeps its book in USDT (round 9) (209067a)
  • strategy.exit: a re-issue that moves the trail's activation restarts the extreme; a changed offset or an identical re-issue keeps it (round 9 family Z, winthetrade NQ1!) (33bac5e)
  • Merge commit 'a38d59e' into round9/famZ-shurben5 (9521716)
  • strategy.exit: a trail re-issued for an unfilled from_entry does not restart the live position's extreme (round 9 family Z, shurben5 ETH@15) (cf86ca9)
  • engine: an exchange session's last chart bar completes the singleton intraday HTF bucket it opened -- the early-close 12:00 CT hour (round 8 family U, CME_MINI:NQ1! 15m) (2185c9f)
  • margin call: a reversal pair's close-time bracket hold cannot feed its own bar's cascade (round 9 family V, narrows M-2a) (8beee80)
  • margin call: a dropped reversal's bracket revives at the extreme and fills there (round 7 family M mechanism 2a) (411f53f)
  • Merge commit 'b313a4d' into round8/candidate-n (c0d5ede)
  • engine: a resting stop/limit level snaps to the price grid within 0.01/pricescale^2 (round 8 family T, NYSE:F@15) (b313a4d)
  • Merge commit '9391e34' into round8/candidate-m (b6696da)
  • engine: TradingView's same-bar market transaction -- placement-frozen sizing, buys before sells, the strategy.close artifact lot (round 8 family S, CME_MINI:ES1! 15m) (9391e34)
  • engine: under the range-start na-warmup epoch a coarser-than-chart W/M built from the chart's own dailies drops the bucket in progress at the epoch (round 8 family P, hungpixi BTC@1D) (2acb592)
  • engine: an intraday HTF bucket completes on the chart bar whose close reaches its end, and on an exchange session's early-close bar (round 8 family P) (3db66ac)
  • engine: a request.security series starts at the first bucket opening at/after the range start -- the bucket that traded before the run's first chart bar is absent (round 8 family P) (e32eb64)
  • engine: a default-sized market order born in a calc_on_order_fills fill recalc is sized at its own fill (round 7 family M, JOAT COOF sizing) (6c1ec7f)
  • engine: strategy.risk.max_intraday_loss is TradingView's day-scoped rule -- open P&L at the ticks, the closing fill's own P&L unbooked (round 7 family M, JOAT 02-06) (6bfe1b2)
  • engine: a request.security at the chart's timeframe on the split feed reads the chart bars (round 7 family M, amanda vote) (e4641f6)
  • engine: the futures D period is the native daily feed's own partition for time("D"), timeframe.change("1D"), ta.change and ta.vwap (round 7 family O) (1a3534b)
  • engine: strategy.close(qty_percent) closes max(1 lot, floor(qty x pct)) on integer-lot symbols (round 7 family O) (631200e)
  • Merge commit 'ac09de9' into round8/candidate-j (7564a9d)
  • Merge remote-tracking branch 'origin/round7/m-admission-36' into round8/candidate-h (a1af33a)
  • margin call: the pending-close stand-down needs an UNCONDITIONAL whole close (round 8 regression) (cb819ca)
  • Merge remote-tracking branch 'origin/main' into round7/entry-bar-margin-path (35c8595)
  • strategy.exit: layered legs armed on a reversal bar bind 50/50 at the fill (round 7 family N, M3) (a38d59e)
  • margin call: a declined reversal on an open-slice bar leaves the brackets live; REVIVE-B closes a frozen full leg (round 7 family N, M2) (ac09de9)
  • stop-entry admission: a reversal fill is admitted against realized equity plus the position it closes, marked at the fill (round 7 family M mechanism 6) (889cbc7)
  • margin call: the default-sized short's entry-price affordability trim no longer needs a commission (round 7 family M mechanism 3) (1fb356d)
  • margin call: the SHORT open slice marks at the tick-rounded open (round 7 family N, M1) (fecc314)
  • Merge remote-tracking branch 'origin/round7/entry-bar-margin-path' into round7/candidate-g (3da0123)
  • margin call: the entry bar is marked on the OHLC path AFTER the fill (round 7 family L) (34774de)
  • Merge remote-tracking branch 'origin/round7/default-pct-stop-sizing' into round7/candidate-f (8e21d36)
  • engine: a default percent_of_equity stop entry is sized at the tick-snapped level when placed, placement-checked at tick(close) and filled with that quantity at the fill price (round 7, family K default-percent stop sizing) (b59c2da)
  • Merge remote-tracking branch 'origin/round7/f15-nearmiss' into round7/candidate-e (8d9ec8d)
  • tests: pin the tuple request.security form on the native daily row (registry NYSE:F bars) (7415969)
  • trail exits: test the activation against the tick-quantized bar (raw best kept) (c4cbe9f)
  • ta.dmi: Pine's tolerant relational (|a-b| <= 1e-10 is equal) for up>down / down>up / up>0 (e76d406)
  • Merge remote-tracking branch 'origin/round7/trail-fill-snap' into round7/candidate-d (84b83eb)
  • fix: trail fills snap directionally at the open; activation on the tick grid; tolerant trail_points ceil (fa8fd0e)
  • Merge remote-tracking branch 'origin/round7/sma-window-arithmetic' into round7/candidate-c (d9e15ab)
  • engine: ta.sma / math.sum are TradingView's Kahan-compensated sliding sum (compensated addends in the ring, re-sum when the compensation is swallowed); ta.stoch multiplies first (round 7, family D) (506ca38)
  • Merge remote-tracking branch 'origin/round7/hungpixi-weekly' into round7/candidate-b (607e742)
  • engine: a coarser lookahead_on request.security leaks its period's final values on the split-feed path too, and a calendar bucket's last-input completion is not a boundary emission (round 7, family I hungpixi weekly) (6a0a86a)
  • Merge remote-tracking branch 'origin/round7/market-admission-commission' into round7/candidate-b (d67cbdc)
  • engine: a flat all-in market entry is admitted iff floored qty x fill <= equity, commission excluded -- the gap-reject drop now applies with a commission too (round 7 family H, market-entry-admission) (0b80cef)
  • Merge remote-tracking branch 'origin/round7/ltf-lookahead-first-bucket' into round7/candidate (f68baed)
  • engine: a na input to ta.crossover / crossunder / cross is transparent -- the next two-value bar compares with the last two-value bar (round 7, r7-ltf-lookahead) (48993dc)
  • Merge remote-tracking branch 'origin/round7/stop...
Read more

v0.13.0

Choose a tag to compare

@github-actions github-actions released this 05 Sep 03:22

v0.13.0

Changes since v0.12.3

  • chore(release): v0.13.0 (0cff90d)
  • ci: admit strategy_set_native_security_feed to the C ABI runtime allowlist (c00a730)
  • Merge branch 'round6/ring-na-poison' into round6/candidate (c548e37)
  • ta: a written na poisons the extremes ring (rescan and cache) (617721f)
  • engine: broker tests resting stops/limits against the tick-quantized bar, level raw (round 6, stop-tick-rounding) (326b354)
  • Merge branch 'round6/native-daily-security-feed' into round6/candidate (18bbc80)
  • engine: native higher-timeframe request.security feeds (TV's own daily bar) (29a589a)
  • Merge branch 'round6/percent-equity-affordability' into round6/candidate (5cb61a9)
  • fix: percent_of_equity above 100% takes the market-entry affordability gate (8832921)
  • ta: ta.stdev holds its last full-window value on an na input (18df328)
  • ta: an na source answers na in direct highest/lowest; composites keep 331 (1537f6f)
  • ta: never-written ring slots read as 0 in the extremes rescan (d6f0a35)
  • Merge branch 'round5/bar-indexed-extremes-ring' into round5/candidate (5215291)
  • ta: cached extremum with an implied bar for the conditional extremes ring (15cd7c5)
  • Merge branch 'round5/default-qty-affordability' into round5/candidate (f8bde7e)
  • fix: TV market-entry affordability for fixed/cash/explicit-qty entries (bab9a25)
  • Merge branch 'round5/oanda-intraday-day-anchor' into round5/candidate (0880381)
  • test: pin CME 1700-1600 CT time() grid from the ES1!/NQ1! tapes (ae47824)
  • Merge branch 'round5/bar-indexed-extremes-ring' into round5/candidate (87b9ce4)
  • ta: bar-addressed extremum ring for conditional highest/lowest callers (f631685)
  • Merge branch 'round5/oanda-intraday-day-anchor' into round5/candidate (91a97e9)
  • Merge branch 'round5/session-ismarket-daily' into round5/candidate (4cd504c)
  • fix: time() and time("D") on the symbol day-stamp grid (72ae4f1)
  • fix: session.ismarket holds on every bar of a daily-or-higher chart (23cc8c5)
  • fix: anchor OANDA's 1800-1700 intraday grid at the 17:00 ET day stamp (88cd0c8)
  • fix: arm trails at the bar open; sub-tick trail_offset is a zero offset (7e20b07)
  • fix: pair the engine's range-end row with TradingView's Open row, and grade every tape bounded (11e61d4)
  • fix: a sole strategy.close(id) retires the id's whole entry ledger (b52ca42)
  • fix: range-end rows expose their entry incarnation through the C ABI (0ce86af)
  • fix: report a position still open after the final bar as TradingView's range-end close (650b0cb)
  • fix: freeze default sizing at the mintick-rounded close, as TradingView does (bc78cc7)
  • fix: key calendar aux routing by the covered session (11febbc)
  • test: strip NDEBUG from assert-based test binaries (9e926f0)
  • docs: AGENTS.md for every harness; commit the pr-gate hook wiring (c29c45d)
  • ci: install the post-merge baseline promotion workflow (269bffc)
  • fix: tolerate binary residue in lot flooring (b935125)
  • fix: reserve minimum integer lot for percent exits (d674939)
  • fix: complete singleton HTF buckets at session close (ccefd9a)
  • fix: route calendar auxiliary feeds by native intervals (22e3992)
  • fix: route auxiliary calendar bars by trading period (a2a2ac0)
  • factorial: e [engine] (e0b8e80)
  • ci: add a build gate check the branch ruleset can match (#168) (80cf8ed)
  • factorial: 0001-engine-chart-bar-bucket-label [engine] (#166) (8103ef7)
  • factorial: engine-htf-bucket-real-end [engine] (#165) (013228c)
  • factorial: engine-symbol-r7 [engine] (#164) (0f1f06e)
  • factorial: engine-tv-fill-nearest-tick [engine] (#163) (7fc7347)
  • factorial: engine-symbol-r5 [engine] (#162) (b1449c3)
  • security: session-attributed weekly/monthly period keys (#161) (e780321)
  • security: session-day calendar boundaries + mid-UTC-day tz memo (#160) (93d3e53)
  • security: anchor HTF aggregation on the symbol clock (syminfo.timezone + session) (#159) (8f7d5f1)
  • docs(README): parity badge 307/311 → 309/311 (#158) (831a7e4)
  • docs(README): corpus scoreboard 307/311 → 309/311 after #156 (warmup reconfigs + exact-order SMA) (#157) (f33d39a)
  • fix(ta): exact-order window summation for short SMAs + corpus warmup-origin reconfigs (309 excellent) (#156) (cc6cf46)
  • docs: add the Validation scoreboard section (public + closed-test boards); advance corpus README gitlink (#155) (304adee)
  • docs(README): frame the private board as a closed test set (TradingView ToS) with its ~520k trade count (#154) (4af3acc)
  • docs(README): refresh scoreboard to the 2026-08-13 campaign terminal state (#153) (5ab239f)

Prebuilt libraries

Per-arch static-lib + headers tarballs are attached below (C ABI).
For the full PineScript -> backtest image, use ghcr.io/pineforge-4pass/pineforge-release.

v0.12.3

Choose a tag to compare

@github-actions github-actions released this 13 Aug 20:12

v0.12.3

Changes since v0.12.2

  • chore(release): v0.12.3 (13782e9)
  • factorial: trail-exit-margin-slice-chronology+eps-deficit-slice-path [engine] (#152) (b50c894)
  • fix(engine): occupancy-based pyramiding with close-path slot release + bracket legs for pending same-id entries + position-cycle bracket lifetime (#151) (799acb5)
  • fix(engine): TV extrema positional windows + bracket lifecycle on declined reversals + 1x-long entry-fill margin chronology (#150) (76d4dc9)
  • fix(engine): margin-call intrabar chronology + percentrank length denominator (#149) (32f9df5)
  • fix(engine): stop retro-arming explicit-zero-offset trails from the carried peak (#148) (a6e46ca)
  • fix(engine): fill stale prior-bar exit brackets marketable at a reversal fill bar's open (#147) (2b1de03)
  • fix(engine): emit TV same-bar close+reverse sequencing under frozen default sizing (#146) (af9a9bc)
  • Merge pull request #145 from pineforge-4pass/fix/flat-open-noslack-and-ki35-utc-fast-paths (31df899)
  • corpus: advance to the no-slack + KI-35 regenerated tape run (395cc4b)
  • fix(engine): complete KI-35 — UTC fast path for week/month calendar opens (71553e7)
  • fix(engine): drop the one-lot slack from the frozen flat-open fill-time affordability gate (cab969a)
  • corpus: advance to the regenerated 8df08f2 tape run (89c9332)
  • fix(engine): make dead strategy.close semantically inert (#143) (8df08f2)
  • p0-ship-fx-stack-20260731: stack FX series loader + short 1× rollover (#142) (d9e3510)
  • chore: align corpus gitlink with merged main (3cdcd36)
  • chore: advance corpus to 312 strategies (3edfaa1)
  • fix(engine): drop the one-lot epsilon from the reversal admission arm (#139) (14e286a)
  • fix(engine): widen pending-aware gross admission to live-position pairs (#138) (c31996c)
  • fix(margin): close one whole contract on every floor-zero liquidation (#136) (bddddac)
  • fix(ta): return na, not an invented constant, on three degenerate arms (#137) (0580909)

Prebuilt libraries

Per-arch static-lib + headers tarballs are attached below (C ABI).
For the full PineScript -> backtest image, use ghcr.io/pineforge-4pass/pineforge-release.

v0.12.2

Choose a tag to compare

@github-actions github-actions released this 23 Jul 12:55

v0.12.2

Changes since v0.12.1

  • chore(release): v0.12.2 (dfc85d5)
  • Merge pull request #135 from pineforge-4pass/codex/fingerprint-json-canonical-20260723 (8ceb716)
  • Fix cross-runtime fingerprint canonicalization (ec1fa82)

Prebuilt libraries

Per-arch static-lib + headers tarballs are attached below (C ABI).
For the full PineScript -> backtest image, use ghcr.io/pineforge-4pass/pineforge-release.

v0.12.1

Choose a tag to compare

@github-actions github-actions released this 23 Jul 09:10

v0.12.1

Changes since v0.12.0

  • chore(release): v0.12.1 (d861b48)
  • fix: preserve direct short reversal affordability (#134) (34959c4)
  • fix engine percent equity fee lifecycle (#133) (a12cdbc)
  • Merge pull request #132 from pineforge-4pass/codex/abhivish-affordability-production-20260723 (779f14b)
  • Preserve frozen reversal quantities and trim underfunded opens (b3e3c4b)
  • Fix short-seed close collisions (#131) (cca49f1)
  • Implement Pine matrix object identity (#130) (7238676)
  • Keep matrix snapshot assertions active in Release (#129) (89fd3a8)
  • Add value-only matrix snapshot bridge (#128) (2672cf9)
  • Support nullable matrix IDs (#127) (7b765aa)
  • fix: scope strategy close replacement by callsite (#126) (22fbf5a)
  • feat: add historical account FX lifecycle (#125) (f268342)
  • fix: preserve commissioned all-in opening lots (#124) (76e8097)
  • docs(map): record bounded codegen integration (#123) (7bff706)
  • feat(map): add PineMap runtime semantics (#122) (06bb724)
  • fix(validation): honor zero-aligned probe overrides (KI-39) (#121) (fde4f14)
  • fix(ta): align PercentRank float comparisons (#120) (b966577)
  • Fix FIFO verifier masking in corpus scores (#119) (6b0db82)
  • Merge pull request #118 from pineforge-4pass/fix/fingerprint-source-feed-identity (a58072f)
  • fix: fingerprint canonical source feed (4b180d6)
  • fix: fingerprint effective trade start gate (#117) (2e1c844)
  • validation: advance TrendMaster corpus metadata (#116) (3548871)
  • validation: advance Deep-range EMA corpus artifacts (#115) (ac33eae)
  • Fix retained bracket ordering after parent recreation (#114) (a433ff3)
  • fix: preserve flat all-in entry transaction sizing (#113) (0656dd2)
  • validation: advance close-all corpus artifacts (#112) (98260ae)
  • Gate terminal COOF reversals on gross margin (#111) (9c49807)
  • Continue dual-stop path after margin decline (#110) (0437eb3)
  • Fix relative exits after non-gap limit parent fills (#109) (7cd6141)
  • Derive chart opens from first traded minute (#108) (2c74e6f)
  • Fix intraday filled-order cap accounting (#107) (71ba561)
  • fix: resume later same-open limit exits at next waypoint (#106) (df02ad2)
  • validation: advance corpus artifacts after PR104 (#105) (e54907f)
  • Correct execution edge cases across exits, margin, EMA, and pyramiding (#104) (ada0ca1)
  • Match math.sum valid-value windows and canonicalize validation reports (#103) (0ff23fa)
  • Fix deferred close-all and frozen reversal lifecycle (#102) (37caa8f)
  • fix: enforce paired market affordability (#101) (8925f85)
  • Compose historical HTF projection with range-start warmup (#100) (8a07a32)

Prebuilt libraries

Per-arch static-lib + headers tarballs are attached below (C ABI).
For the full PineScript -> backtest image, use ghcr.io/pineforge-4pass/pineforge-release.

v0.12.0

Choose a tag to compare

@github-actions github-actions released this 12 Jul 21:03

v0.12.0

Changes since v0.11.0

  • chore(release): v0.12.0 (dafdad2)
  • Gate stop-entry fills at the open under margin; decline insolvent frozen opens cleanly (#99) (9e460d6)
  • Extend coof cascade eligibility to strategy.exit orders (KI-67) (#98) (6abebad)
  • Cover same-bar market pyramid adds per TV's open-tick fill priority (#97) (81d6801)
  • Let a priced entry reverse a same-bar opposite market fill (#96) (b6e4e35)
  • Replace the coof fill-event budget with cascade eligibility semantics (#95) (d5fa24c)
  • Freeze script-visible position through a same-bar POOC close (#94) (eaf5e97)
  • Match TV's na-source output rules for ta.ema and ta.sma (#93) (a71f259)
  • Decline unaffordable explicit-qty flat market entries at fill (#92) (8b5932f)
  • Suppress the close leg of a fill-price-declined reversal (#91) (bc49fc8)
  • docs: rename backtest MCP (613e1b5)
  • Keep within-cap same-direction entries co-queued with a deferred close (#89) (98ad849)
  • Reject unaffordable frozen all-in flat market entries at fill (#88) (7a8fc3b)

Prebuilt libraries

Per-arch static-lib + headers tarballs are attached below (C ABI).
For the full PineScript -> backtest image, use ghcr.io/pineforge-4pass/pineforge-release.

v0.11.0

Choose a tag to compare

@github-actions github-actions released this 10 Jul 13:22

v0.11.0

Changes since v0.10.14

  • chore(release): v0.11.0 (bc3175e)
  • Merge pull request #87 from pineforge-4pass/codex/ki60-calc-on-fill (73817fe)
  • Implement calc-on-order-fill execution (8a7a740)
  • Merge pull request #85 from pineforge-4pass/codex/alert-webhooks (9734d48)
  • Exclude Python host leaks from sanitizer test (59087d3)
  • Preload ASan for Python stream test (5551017)
  • Merge pull request #86 from pineforge-4pass/codex/reversal-margin-admission (5898eb9)
  • fix: gate role-changing reversals by free margin (51bcf60)
  • Make streaming data-source neutral (1226c64)
  • Document realtime streaming lifecycle (af4c688)
  • Add continuous historical-to-realtime streaming (9f69f96)
  • Merge pull request #84 from pineforge-4pass/codex/ki61-opening-affordability-v4 (eb7b75c)
  • fix(engine): align 1x long opening affordability (f2759db)
  • Merge pull request #83 from pineforge-4pass/fix/same-id-stop-reissue-cross-ordering (2e9f39f)
  • engine: reduce-only flip for deferred-flip carry priced entries (2c47e55)
  • Merge pull request #81 from pineforge-4pass/fix/security-range-start-na-warmup (68748df)
  • engine: opt-in security_range_start_na_warmup flag for TV HTF warmup parity (95dcc22)
  • Merge pull request #80 from pineforge-4pass/fix/tv-margin-admission-gate (94bbfef)
  • fix(engine): TV margin admission for frozen default-sized market orders (48363a1)
  • Merge pull request #79 from pineforge-4pass/fix/default-qty-signal-freeze (778ab27)
  • fix(engine): freeze default percent_of_equity/cash market-order sizing at the signal bar (a1d801e)
  • Merge pull request #78 from pineforge-4pass/fix/percent-of-equity-commission-reservation (a5715bc)
  • fix(sizing): reserve entry commission when sizing percent_of_equity (78acb0d)
  • Merge pull request #77 from pineforge-4pass/fix/qty-percent-reconcile-deferred-layered-exit (c8b4ac4)
  • fix(fills): normalize qty_percent when freezing a deferred layered exit qty (09e5fe1)
  • Merge pull request #76 from pineforge-4pass/test/magnifier-coarser-security-cadence-guard (6be3999)
  • test(security): guard coarser fixed-minute request.security cadence on the 1m-magnifier path (e225342)
  • Merge pull request #75 from pineforge-4pass/docs/claude-md-build-trap-and-concurrency (fbe7385)
  • docs: stale-test-binary trap + concurrency rules in CLAUDE.md; bump corpus (4fb881e)
  • Merge pull request #74 from pineforge-4pass/test/ki31-margin-nibble-expectation (dc209a0)
  • test(margin): update qty_step nibble expectation for floor-before-4x (KI-31) (cd59cd8)
  • Merge pull request #73 from pineforge-4pass/fix/ki31-margin-nibble-floor-order (15b02e0)
  • fix(margin): floor restore-qty to lot step BEFORE the 4x over-liquidation (KI-31) (7738f67)
  • Merge pull request #72 from pineforge-4pass/fix/ki35-offset-tz-double-normalize (725067f)
  • fix(session_time): stop double-normalizing tz in decompose_ms_local (KI-35 follow-up) (fab57d4)
  • Merge pull request #71 from pineforge-4pass/perf/run-strategy-vectorized-loader (7b89017)
  • perf(run_strategy): vectorized bar loader + preloaded_bars batch reuse (9a58d7e)
  • Merge pull request #70 from pineforge-4pass/fix/ki35-tzset-notifyd-storm (6b43e73)
  • fix(session_time): kill per-call tzset()->notifyd storm on macOS (KI-35) (eab8676)
  • Merge pull request #69 from pineforge-4pass/fix/coverage-denom-open-exclusion (b835ae9)
  • fix(verify): drop UNMATCHED still-open TV rows from coverage denominator (5f04b20)
  • Merge pull request #68 from pineforge-4pass/fix/time-close-intraday-boundary (41bbd62)
  • fix(time): intraday time_close is the exact bar-close boundary (3390a61)
  • Merge pull request #67 from pineforge-4pass/fix/time-invalid-session-uses-chart-tz (ed3d630)
  • Treat a tz-string in a 2-arg time() session slot as an ignored invalid session (6446253)
  • Merge pull request #66 from pineforge-4pass/fix/time-session-timezone-arg (a0e211a)
  • Honor a timezone passed in the session slot of 2-arg time()/time_close() (302a605)
  • Merge pull request #65 from pineforge-4pass/fix/strategy-exit-scoped-erase (d2ea2ce)
  • Scope strategy.exit replace-erase to the matching EXIT order (74845a5)
  • Merge pull request #64 from pineforge-4pass/campaign/corpus-warmup-pins-pointer (d1067fb)
  • Update validation corpus pointer (bda5cda)
  • Merge pull request #63 from pineforge-4pass/campaign/update-corpus-full-history-feeds (ac9cf9c)
  • Update validation corpus pointer (bdb96cd)
  • Merge pull request #62 from pineforge-4pass/campaign/layered-exit-reconcile (3f06004)
  • Update validation corpus warmup metadata (9235f31)
  • Merge pull request #61 from pineforge-4pass/tier/hard-gates-coverage (0780c23)
  • Hard tier gates: coverage dimension, no heuristic escapes (08abd97)
  • Reconcile layered strategy.exit reservations when the entry opens from flat (42321c4)
  • Merge pull request #60 from pineforge-4pass/campaign/strict-parity-fixes (ae4fe48)
  • Enforce absolute count parity in corpus verifier (7427720)
  • Fix equity sizing and POOC re-entry semantics (b3d2fac)
  • Fix first-valid Pine cross edges (2ba047e)
  • Support Pine bar index offsets (c467113)
  • Normalize TradingView GMT offsets for timezones (a20ac1f)
  • Materialize relative exit ticks after entry fills (56ab02f)
  • Support unbiased stdev and variance (222eb7d)
  • Merge pull request #59 from pineforge-4pass/feed/single-1m-derive (517cf6e)
  • corpus: bump submodule to single-1m-feed layout (a84307d) (8bb9abc)
  • harness: derive chart feeds from the corpus's single committed 1m feed (d62ff1d)
  • Merge pull request #58 from pineforge-4pass/chore/corpus-deep-warmup-feeds (3241c5e)
  • chore(corpus): bump submodule to deep-warmup reference feeds (de4b013)

Prebuilt libraries

Per-arch static-lib + headers tarballs are attached below (C ABI).
For the full PineScript -> backtest image, use ghcr.io/pineforge-4pass/pineforge-release.

v0.10.14

Choose a tag to compare

@github-actions github-actions released this 02 Jul 04:33

v0.10.14

Changes since v0.10.13

  • chore(release): v0.10.14 (079d564)
  • Merge pull request #57 from pineforge-4pass/integration/full-validation-pass (099cd5d)
  • Merge branch 'fix/dca-stale-limit-entry-survives-close' into integration/full-validation-pass (8286e27)
  • fix(fills): keep resting pure-limit entries alive across a full close (TV GTC) (4881ad7)
  • Merge pull request #56 from pineforge-4pass/integration/full-validation-pass (ea6cb37)
  • Merge branch 'fix/same-tick-multi-entry-sequential-fills' into integration/full-validation-pass (75d07f6)
  • fix(exits): bind percent-100 brackets to a pending opposite reversal entry (8789cb5)
  • fix(fills): fill same-tick multi-entry races sequentially per TV rule R* (b551cfb)
  • Merge branch 'fix/exit-qty-percent-lot-step-floor-rebased' into integration/full-validation-pass (513e8fa)
  • fix(exits): floor percent-derived strategy.exit legs to instrument lot step (1849520)
  • Merge branch 'fix/exit-bracket-reserve-pending-entry' into integration/full-validation-pass (e82714e)
  • Merge branch 'fix/finer-tf-security-publish-gate-lookahead-only' into integration/full-validation-pass (eb79f53)
  • fix(security): restrict finer-than-chart publish gate to lookahead_on (a4847b3)
  • Merge branch 'fix/same-bar-multi-close-single-fill' into integration/full-validation-pass (672c59b)
  • fix(orders): size same-bar strategy.exit against the post-batched-close position (69c6dba)
  • fix(orders): batch same-bar default-FIFO strategy.close calls into TV's single surviving fill (30fa74d)
  • fix(exits): reserve explicit-qty exit brackets against pending entry, not live position (c8d8e31)
  • Merge branch 'fix/security-finer-tf-history-offset-calling-bar-latch' into integration/full-validation-pass (e654888)
  • fix(security): latch finer-than-chart request.security history reads to calling-bar boundary (47e9829)
  • Merge branch 'fix/same-bar-flat-armed-opposite-defer' into integration/full-validation-pass (8d5bad8)
  • fix(fills): defer same-bar flat-armed opposite-close when it would leave a remainder (7ee58d7)
  • Merge branch 'fix/long-100pct-margin-overalloc-liquidation' into integration/full-validation-pass (7cb643c)
  • fix(fills): unblock margin-call liquidation for over-allocated 1x longs (ac61d0c)
  • fix(fills): same-bar exit re-issue fill + trail-seed pre-fill extreme leak (96d9fbb)
  • Merge branch 'fix/same-bar-limit-entry-fill' into integration/full-validation-pass (5ad68ee)
  • fix(fills): same-bar pure-limit entries fill immediately under process_orders_on_close (4e82016)
  • Merge branch 'fix/margin-long-short-syminfo-wiring' into integration/full-validation-pass (bdad9a4)
  • feat(syminfo): wire margin_long/margin_short through set_syminfo_metadata (c54949c)
  • Merge branch 'fix/cancel-orders-keep-pending-entries' into integration/full-validation-pass (6b1f9b7)
  • fix(orders): close()/close_all() no longer cancels pending same-direction entries (cfa8c89)
  • Merge branch 'fix/qty-step-on-entry-orders' into integration/full-validation-pass (165ee9a)
  • fix(orders): apply qty_step lot-size flooring to regular entry orders (3ec0484)
  • Merge branch 'fix/account-currency-fx-pnl-and-sizing' into integration/full-validation-pass (85028ef)
  • fix(currency): apply account_currency_fx_ to PnL, sizing, and excursions (19b7236)
  • Merge branch 'fix/strong-tier-low-n-unmatched-floor' into integration/full-validation-pass (aeabbda)
  • Merge branch 'fix/verify-corpus-usdt-pnl-columns' into integration/full-validation-pass (9184236)
  • Merge branch 'feat/heikinashi-same-symbol-security' into integration/full-validation-pass (6facc12)
  • fix(verify): recognize USDT-suffixed PnL/MFE/MAE export columns (63aded4)
  • fix(verify): unfair moderate tier for low-N near-perfect strategies (925b2aa)
  • docs(readme): correct coverage figures and ctest binary count (2436b50)
  • docs(readme): correct coverage figures and ctest binary count (97c0d31)
  • feat(security): support same-symbol Heikin-Ashi request.security (7eb812b)
  • docs(readme): update corpus parity numbers for 252-strategy corpus (898a997)
  • chore(verify): emit report-only entry/exit p99 deltas (#55) (515c390)
  • test(verify): consolidate TradingView trade-list fragments before pairing (#54) (0a662ed)
  • fix(orders): apply account-currency FX to the broker affordability gate (#53) (78b5300)
  • fix(ta): initialize recompute save-state in all indicator ctors (non-determinism UB) (#52) (643d69f)
  • fix(orders): defer process_orders_on_close market entry off the entry bar (#51) (902a95b)
  • fix(orders): arm strategy.exit trailing stop via trail_price (absolute activation) (#50) (4064c7b)
  • fix(orders): close(id) closes logical unclosed qty, not physical lots (grid bots) (#49) (eddb129)
  • feat(orders): quantize margin-call liquidation lots to the symbol qty-step (#48) (0df9812)
  • feat(orders): TradingView margin-call liquidation (#47) (848cce3)
  • fix(orders): full-close exit re-expands to grown position under pyramiding (#46) (f14f201)
  • test(orders): cover multi-tier exit precedence (bc9a7ff)
  • fix(drawing): keep deleted records data-accessible (ca7fbb7)
  • feat(drawing): add drawing objects as data runtime (02c7564)

Prebuilt libraries

Per-arch static-lib + headers tarballs are attached below (C ABI).
For the full PineScript -> backtest image, use ghcr.io/pineforge-4pass/pineforge-release.

v0.10.13

Choose a tag to compare

@github-actions github-actions released this 28 Jun 13:36

v0.10.13

Changes since v0.10.12

  • chore(release): v0.10.13 (65b59c2)
  • fix(orders): retain from_entry exit brackets whose parent entry is still pending (959af5e)
  • fix(magnifier): on_bar sees script-bar open ts, not last sub-bar ts (fbae7a5)

Prebuilt libraries

Per-arch static-lib + headers tarballs are attached below (C ABI).
For the full PineScript -> backtest image, use ghcr.io/pineforge-4pass/pineforge-release.

v0.10.12

Choose a tag to compare

@github-actions github-actions released this 21 Jun 12:39

v0.10.12

Changes since v0.10.11

  • chore(release): v0.10.12 (40f272f)

Prebuilt libraries

Per-arch static-lib + headers tarballs are attached below (C ABI).
For the full PineScript -> backtest image, use ghcr.io/pineforge-4pass/pineforge-release.