| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| ta4j-core-0.22.2-tests.jar | 2026-02-15 | 1.8 MB | |
| ta4j-core-0.22.2.jar | 2026-02-15 | 987.2 kB | |
| ta4j-core-0.22.2-javadoc.jar | 2026-02-15 | 3.5 MB | |
| ta4j-core-0.22.2-sources.jar | 2026-02-15 | 659.9 kB | |
| ta4j-examples-0.22.2-javadoc.jar | 2026-02-15 | 808.4 kB | |
| ta4j-examples-0.22.2-sources.jar | 2026-02-15 | 2.4 MB | |
| ta4j-examples-0.22.2.jar | 2026-02-15 | 2.6 MB | |
| 0.22.2 source code.tar.gz | 2026-02-15 | 4.7 MB | |
| 0.22.2 source code.zip | 2026-02-15 | 5.4 MB | |
| README.md | 2026-02-15 | 11.4 kB | |
| Totals: 10 Items | 22.9 MB | 1 | |
0.22.2 (2026-02-15)
Breaking
- Trade model split:
Tradeis now an interface; the previous concrete implementation isSimulatedTrade(backtesting/simulation), and live executions are represented byLiveTrade. - Swing indicator interfaces: Removed deprecated
RecentSwingHighIndicatorandRecentSwingLowIndicator; useRecentSwingIndicatorand concrete implementations directly.
Added
- Charting time axis mode: Added
TimeAxisModewithBAR_INDEXsupport to compress non-trading gaps (weekends/holidays) on charts while keeping bar timestamps intact. - Concurrent real-time bar series pipeline: Introduced core support for concurrent, streaming bar ingestion with
a dedicated series (
ConcurrentBarSeries/builder), realtime bar model (RealtimeBar/BaseRealtimeBar), and streaming-bar ingestion helpers to enable candle reconciliation and side/liquidity-aware trade aggregation. - Live trading domain model: Added
ExecutionIntent,ExecutionFill,LiveTrade, andLiveTradingRecordwith partial-fill tracking, multi-lot bookkeeping, and configurable matching (FIFO,LIFO,AVG_COST,SPECIFIC_ID). - Strategy trade direction: Added
Strategy#getStartingType()(defaultBUY) so strategies can declare long-first or short-first behavior explicitly. - Open position analytics: Added
PositionLedger,OpenPositionCostBasisCriterion,OpenPositionUnrealizedProfitCriterion, andTotalFeesCriterionfor live exposure and fee analysis. - Sharpe Ratio: Added
SharpeRatioCriterionand its related calculation classes - Equity-curve controls: Added
OpenPositionHandlingandPerformanceIndicatorto standardize mark-to-market vs realized behavior across performance metrics. - Added ThreeInsideUpIndicator and ThreeInsideDownIndicator
- Added MorningStarIndicator and EveningStarIndicator
- Added BullishKickerIndicator and BearishKickerIndicator
- Added PiercingIndicator and DarkCloudIndicator
- Threshold-based boolean rules: #1422 Added
AndWithThresholdRule/OrWithThresholdRulethat also work backwards with a certain threshold. - Added versions-maven-plugin
- Elliott Wave analysis toolkit: Added
ElliottWaveAnalyzer,ElliottAnalysisResult, configurablePatternSet, and theorg.ta4j.core.indicators.elliott.swingdetector/filter package for pluggable, chart-independent analysis. - Elliott Wave confidence modeling: Added profile-driven confidence scoring with factor breakdowns, time alternation diagnostics, and granular Fibonacci relationship scoring.
- Elliott Wave trend bias: Added
ElliottTrendBiasandElliottTrendBiasIndicatorfor scenario-weighted bullish/bearish context, plusElliottScenarioSet#trendBias()andElliottWaveFacade#trendBias()helpers. - Elliott Wave strategy demos: Added
ElliottWaveAdaptiveSwingAnalysis,ElliottWavePatternProfileDemo,ElliottWaveTrendBacktest, andHighRewardElliottWaveBacktestwithHighRewardElliottWaveStrategyfor selective impulse entries using confidence, alternation, and risk/reward filters. - DonchianChannelFacade: #1407: Added DonchianChannelFacade new class providing a facade for DonchianChannel Indicators by using lightweight
NumericIndicators - Added constructors accepting custom ATR indicator to AverageTrueRangeStopGainRule AverageTrueRangeStopLossRule and AverageTrueRangeTrailingStopLossRule
- Sortino Ratio: Added
SortinoRatioCriterionfor downside deviation-based risk adjustment
Changed
- Bar builders null handling: Bar builders now skip null-valued bars entirely instead of inserting placeholder/null bars, leaving gaps when inputs are missing or invalid.
- Charting overlays: Refactored overlay renderer construction and centralized time-axis domain value selection to reduce branching without changing chart output.
- Charting defaults: Centralized chart styling defaults (anti-aliasing, background, title paint) for consistency across chart types.
- Chart builder metadata: Chart definitions now surface a shared metadata object for domain series, title, and time axis mode; chart plans expose a ChartContext and derive their primary series from it, with ChartWorkflow rendering helpers accepting contexts.
- TimeBarBuilder: Enhanced with trade ingestion logic, time alignment validation, and RealtimeBar support.
- BaseBarSeriesBuilder: Deprecated
setConstrainedin favor of deriving constrained mode from max-bar-count configuration. - Release automation (two-phase, tokens, tooling): Two-phase workflows (
prepare-release.yml,publish-release.yml) with optional direct push (RELEASE_DIRECT_PUSH). Token handling: preflight runs before checkout;GH_TA4J_REPO_TOKENis used for checkout and push only when valid, otherwisegithub.token; fail fast when the token lacks write (warn in dry-run). Release process docs overhauled; pre-push hook runs actionlint on workflow changes (see CONTRIBUTING); agent workflow skips full build for workflow/CHANGELOG/docs-only changes. - Release scheduler and discussions: Gated by
RELEASE_SCHEDULER_ENABLED. Dispatches through prepare-release only when binary-impacting changes exist (pom.xmlorsrc/main/**); AI prompt uses summarized binary changes and trimmed changelog with optionalRELEASE_AI_MODEL. Scheduler and release runs post to GitHub Discussions with run mode and timestamp; binary path list and Maven Central summary in collapsible details; previous dry-run comments for the same tag are removed before posting. - Publish-release manual trigger: For workflow_dispatch,
releaseCommitis optional and auto-detected fromrelease/<version>.mdon the default branch so manual publishes require only the release version. - Release health workflow: Scheduled checks for tag reachability, snapshot version drift, stale release PRs, and missing release notes, with summaries posted to Discussions.
- Factory selection from bars: Derive the NumFactory from the first available bar price instead of assuming a specific price is always present.
- CashFlow: Added a realized-only calculation mode alongside the default mark-to-market cash flow curve.
- Live/backtest calculation parity:
CashFlow,CumulativePnL,Returns, and drawdown criteria now align on bar indices, support explicit equity/open-position handling, and correctly account for multiple live lots. - Live vs simulated record boundaries:
BaseTradingRecordnow rejectsLiveTrade, while charting/analysis paths can build partialLiveTradingRecordinstances so recorded live fees are preserved. - Live persistence simplification: Removed
LiveTradingRecordSnapshot; persistence now usesLiveTradingRecordserialization plus explicit cost-model rehydration. - Recorded fee semantics: Live-trading positions and criteria now use recorded
LiveTradefees viaRecordedTradeCostModelso PnL reflects actual execution costs. - License headers: Switch Java source file headers to SPDX identifiers.
- Elliott Wave analysis example: Scenario probability weighting now applies adaptive confidence contrast so closely scored scenarios separate more clearly.
- Position duration criterion: implemented
PositionDurationCriterionto measure positions duration. - Statistics helper: Consolidated statistics selection into the
Statisticsenum, with Num calculations. - Monte Carlo drawdown criterion: Reused shared statistics helper for simulated drawdown summaries.
- Dependencies: update to latest versions
- Elliott Wave scoring and diagnostics: Extension ratio scoring now penalizes under/over-extended projections, chart/JSON outputs include scenario-weighted trend bias, and logs include time alternation diagnostics.
- CI concurrency: Cancel in-progress runs for the primary PR/push validation workflows to reduce backlog.
Fixed
- Build script: Ensure
scripts/run-full-build-quiet.shcreates a temp filter script on macOS by using a trailing-Xmktemp template and guarding cleanup when the temp list is unset. - TimeBarBuilder: Preserve in-progress bars when trade ingestion skips across multiple time periods.
- Release workflow notifications: Fix discussion comment posting in workflows (unescaped template literals).
- Release workflow hardening: Improved
prepare-release.ymltoken preflight with push-capability checks and an earlygit push --dry-runprobe, and fixedgithub-scriptcoreredeclaration errors in bothprepare-release.ymlandpublish-release.yml. - Release health workflow: Ensure discussion notifications are posted even when summary generation fails and avoid
github-scriptcore redeclaration errors. - Indicator unstable periods: Standardized unstable-bar aggregation and warm-up guarding across indicators so pre-warmup bars are handled consistently, including lookback-driven trend/cross indicators.
- CashFlow: Prevented NaN values when a position opens and closes on the same bar index.
- Returns: Mark-to-market returns now carry forward cost-adjusted prices for consistent holding-cost treatment.
- BarSeries MaxBarCount: Fixed sub-series creation to preserve the original series max bars, instead of resetting it to default Integer.MAX_VALUE
- SimulatedTrade: Avoid divide-by-zero when calculating net price for zero-amount trades and return a non-null zero-cost model when deserialized without a transient cost model.
- Position: Default transaction/holding cost models after deserialization now return zero-cost models instead of
null. - Live-trading validation hardening:
BaseTradingRecordnow rejects empty trade arrays with a clear error, andPositionBookvalidates null/non-positive live trades before mutating lot state. - Strategy starting type propagation:
BarSeriesManagerdefaultrun(...)methods now useStrategy#getStartingType(),BaseStrategycomposition (and/or/opposite) preserves non-default starting types, and strategy serialization round-trips retain short-mode (SELL) starting type metadata. - ExecutionFill index handling:
LiveTradingRecord.recordExecutionFill(ExecutionFill)now applies explicit fill indices consistently for bothLiveTradeand non-LiveTradeimplementations. - Keltner channels: Rebuild ATR indicators after deserialization and include ATR unstable bars in the reported warmup.
- Trade interface naming: Aligned the public
Tradeinterface filename with Java conventions to restore compilation. - Release scheduler: Gate release decisions on binary-impacting changes (
pom.xmlorsrc/main/**) so workflow-only updates no longer trigger releases. - Release scheduler redaction: Avoid masking long Java class names in binary-change listings.
- Release version validation: Fixed version comparison in
prepare-release.ymlto properly validate thatnextVersionis greater thanreleaseVersionusing semantic version sorting, preventing invalid version sequences. - Fixed incorrect @since 0.23 by replacing with 0.22.2
- Full build script: Fix macOS temp file creation in
run-full-build-quiet.shby using a portable mktemp template.