PyneCore v6.9.4 released — scripts can now declare their own timeframe in indicator(),…
Features
- Script-level
timeframe/timeframe_gapsinindicator(): the script runs once per completed period aggregated from the chart feed, withnaor forward-filled values on the other chart bars. No higher-timeframe value is ever visible early. timeframe.period,main_period,multiplier,time(""),time_closeandbars_backfollow the declared run timeframe;syminfo.periodkeeps describing the data grid.
Fixes
- Orders resting at one price level now trigger in the order they reached the book, not entries first.
- An exit leg activated behind a reversing entry is no longer cancelled by that entry’s fill; it closes what is left and opens the remainder under its own exit id.
- An exit leg bound to an entry that fills intrabar gets the rest of that bar’s path instead of waiting for the next bar.
strategy.exitnow covers pyramid adds that fill after the call, sized and priced from their own fill; trailing legs seed their water mark from the entry they are bound to.array.join()’sseparatoris optional — TradingView defaults it to the empty string.ta.valuewhen()’s occurrence ring stays out of the bar rollback, so acalc_on_order_fillsbar records one push per execution.lib.timeinside a nested helper reads history on the chart-bar grid instead of its own call grid.time_closeon D/W/M bars returns the end of the last scheduled session of the period, including effective-dated session corrections.- A
request.securitycontext’s own read falls back to the caller’s default instead of returningNonebefore the first publication.
Performance
- Security ring lookups are binary searches instead of copying the whole close column: a daily plus 1-minute context run went from over 2100 seconds to 161, with every plot still matching.
Full release notes: https://github.com/PyneSys/pynecore/releases/tag/v6.9.4