PyneCore v6.8.3 released — nine measured TradingView defects, one measured performance…

Fixes

  • Float-to-bool conversion uses Pine’s own 1e-10 tolerance, so arithmetic residue like 2.4e-15 no longer fires signals TradingView never draws — if, while, ?:, and, or, not and the explicit bool() cast all agree now.
  • Series history counts bars, not calls: a series whose branch did not run on a bar still advances one slot and repeats the value it last saw.
  • array.binary_search_leftmost and array.binary_search_rightmost follow the measured index laws — leftmost no longer answers -1 below the array, which array.get silently turned into the last element.
  • Negative indices work in array.get, array.set, array.remove and array.insert; array.fill rejects an out-of-range bound instead of silently resizing the array.
  • ta.valuewhen no longer returns na when the current source is na, which unblocks the common ta.valuewhen(pivot, pivot, n) idiom.
  • strategy.exit no longer sizes its slice against a pyramid add the pyramiding limit rejects, and an exit without from_entry binds to the open position rather than to a pending entry on a reversal.
  • request.currency_rate answers 1.0 for an empty or identical currency pair instead of na on every bar, request.security at the chart timeframe places off-grid session bars on the chart bar whose close they reach, and symbol information now carries session corrections so a bar on an exchange early close ends at that close.
  • ta.dmi smooths the true range Pine actually uses and compares directional movement tolerantly; Heikin Ashi candles are no longer snapped to the mintick grid and match TradingView’s plot to 1.5e-11.

Performance

  • Session data is derived once instead of every bar: 13.5s to 9.8s over 5761 bars and 158.7s to 109.6s over 27583 bars, with byte-identical trades.

Full release notes: https://github.com/PyneSys/pynecore/releases/tag/v6.8.3