PyneCore v6.9.3 released — dependent request.security() expressions are now synchronized…
Features
- A security expression reading another security call’s result now sees the peer’s value for the correct bar — scripts like
request.security(sym, "M", ta.sma(monthlyRsi, n))no longer diverge. One pairing rule everywhere: the peer’s last bar whose scheduled close is at or before the consumer’s as-of time, taken from the trading schedule rather than timeframe arithmetic. ticker.heikinashi()contexts warm the Heikin Ashi recurrence from a mapped--securityfeed, so the context’s first open is the carried value instead of a cold start.
Fixes
strategy.opentrades.profit_percent()and the other open-trade returns are refreshed in backtests and before every live broker tick instead of staying at 0 (#83, duplicate#82).- Past the retained closed-trade limit,
strategy.closedtradeskeeps counting globally and the accessors address the intended trade (#84). request.earnings(),request.dividends()andrequest.splits()returnnaon a crypto chart instead of raising.- Broker: a plugin-declined
close_legis routed through the one-way fan instead of propagating as a raw reject; spent entry anchors and orphaned exit legs are handled on restart; duplicate reversal closes are prevented. - Live mode drops out-of-order closed candles arriving behind a forming bar, so a late close can no longer move the strategy clock backwards.
timestamp()treatsnacomponents as zero instead of raising.- Shared memory block names no longer collide between concurrent runs of the same script.
Behaviour changes
- An early close the schedule does not know about (holiday or half-day) makes the D/W/M bar visible one chart bar later, matching live mode.
- A lower-timeframe bar straddling the chart bar boundary is delivered on the next chart bar instead of leaking a close from after it.
Full release notes: https://github.com/PyneSys/pynecore/releases/tag/v6.9.3