7.9 KiB
7.9 KiB
0.22.3 (2026-03-01)
Added
- Bill Williams indicator suite: Added
FractalHighIndicator,FractalLowIndicator,AlligatorIndicator(jaw/teeth/lips defaults),GatorOscillatorIndicator(upper/lower histogram branches), andMarketFacilitationIndexIndicatorwith comprehensive regression coverage for confirmation delays, overlapping windows, flat-price/zero-volume edge cases, constructor validation, unstable-bar boundaries, and lower-histogram signed-zero handling. - Risk controls APIs: Added
PositionRiskModel,StopLossPositionRiskModel, andRMultipleCriterionfor risk-unit (R-multiple) evaluation, plusStopLossPriceModel/StopGainPriceModeland fixed/trailing/volatility/ATR stop-loss and stop-gain rule variants. - Agent guidance tooling and docs: Reorganized project
AGENTS.mdinto scoped, task-local guides and addedscripts/agents_for_target.shto resolve effective instructions for any target path. - Regression coverage additions: Added explicit tests for
TimeBarBuildergap placement,NetMomentumIndicatorpivot/decay edge handling, mixed-field serialization routing, named-strategy label/vararg diagnostics, andVolumeIndicatorrolling-window behavior. - Added PiercingLineIndicator and DarkCloudCoverIndicator with configurable body-size, gap, and penetration thresholds for candlestick pattern detection.
- Trend confirmation oscillators: Added
VortexIndicator(+VI, -VI, and oscillator output) andUltimateOscillatorIndicatorwith configurable periods, warm-up guards, and regression tests against published reference values. - Volatility-normalized MACD-V toolkit: Added
VolatilityNormalizedMACDIndicatorwith canonical ATR-normalized MACD-V calculation, configurable signal/histogram helpers, andMACDVMomentumStateclassification utilities. - MACD-V momentum helper components: Added
MACDHistogramMode,MACDLineValues,MACDVMomentumProfile,MACDVMomentumStateIndicator, andMomentumStateRuleto support configurable histogram polarity, bundled line snapshots, and momentum-state rule composition. - MACD-V strategy demo: Added
MACDVMomentumStateStrategytota4j-examples, demonstrating custom signal-line injection and momentum-state filtered entry/exit rules.
Changed
- Risk/stop-rule refinements: Tightened volatility stop-gain coefficient validation, removed redundant risk recomputation in
RMultipleCriterion, added the missingAverageTrueRangeTrailingStopLossRulelookback overload, and expanded shared stop-rule fixtures/tests and Javadocs. - VolumeIndicator performance: Replaced O(barCount) per-index summation with an O(1) rolling partial-sum update, including clearer algorithm/complexity Javadocs.
- Serialization routing precedence:
ComponentSerializationnow resolves mixed payloads by descriptor type so strategies preferruleswhile indicators/rules prefercomponents, while keeping legacychildren/baseIndicatorscompatibility. - NamedStrategy reconstruction diagnostics: Strategy reconstruction now emits richer, label-aware errors for missing identifiers, malformed labels, and constructor/parameter failures.
- Build entrypoint + Maven Wrapper compatibility:
scripts/run-full-build-quiet.shnow auto-detects and uses./mvnwwhen present (falling back tomvn), so wrapper adoption does not require a second build command. - Full build script portability:
scripts/run-full-build-quiet.shno longer requires Python; timeout handling, quiet-output filtering, heartbeat logging, and test-summary aggregation now run in Bash. - Indicator composition reuse: Added
IndicatorUtils.requireSameSeries(...)to centralize same-series validation and refactoredVortexIndicator,UltimateOscillatorIndicator, andTRIndicatorto compose shared true-range/series-validation logic instead of duplicating private helpers. - Indicator validation helper consolidation: Merged
IndicatorSeriesUtilsintoIndicatorUtils, added sharedIndicatorUtils.requireIndicator(...)/IndicatorUtils.isInvalid(...), and refactored Bill Williams, VWAP, support/resistance, and Wyckoff indicators to reuse centralized validation and NaN-guard logic. - Fractal hierarchy consolidation: Extracted
AbstractFractalConfirmationIndicatorandAbstractRecentFractalSwingIndicator, and addedFractalDetectionHelper.findLatestConfirmedFractalIndex(...)so high/low fractal families share confirmation and scanning logic while preserving the existing public APIs. - Fractal documentation and regression hardening: Expanded Javadocs for shared fractal internals and added
FractalDetectionHelperTestcoverage for latest-pivot scanning, bounds handling, equality allowances, and invalid input guards. - MACD-V signal-line extensibility:
VolatilityNormalizedMACDIndicatornow supports custom signal-line indicator injection for both signal and histogram generation. - MACDVIndicator API robustness and clarity: Clarified that
MACDVIndicatoris a volume/ATR-weighted MACD variant (not ATR-normalized MACD-V), added default signal/histogram conveniences and constructor overloads, and hardened warm-up/NaN handling with lazy transient sub-indicator rebuild. - MACD-V indicator ergonomics:
MACDVIndicatorandVolatilityNormalizedMACDIndicatornow expose configuration/sub-indicator getters, line bundle helpers, momentum-state indicator factories, and crossover/momentum rule helpers for strategy composition. - MACD-V package organization: Grouped MACD-V specific helpers and indicators under
org.ta4j.core.indicators.macdto reduce top-level indicators package clutter, and retained a deprecated compatibility shim for movedMACDVIndicatorinorg.ta4j.core.indicatorsso downstream projects can migrate imports without immediate build breakage. - Deprecation visibility for deprecated classes: Added runtime deprecation warnings (emitted once per classloader) for deprecated compatibility classes in core and legacy JSON helper classes in examples so migration guidance appears directly in logs.
Fixed
- Stop-rule behavior and efficiency: Trailing stop-gain variants now arm only after the configured favorable move, volatility stop-loss variants trigger on exact threshold touches, gain-side helpers are used consistently, and trailing volatility/fixed-amount rules now reuse stabilized max-lookback indicators to reduce hot-path allocations.
- NetMomentum neutral pivot validation: Constructor now rejects
NaN/infinite neutral pivot values to prevent undefined momentum output states. - VolumeIndicator constrained-window correctness: Rolling sums now anchor to the series
beginIndexso max-bar-count eviction does not double-count or backtrack into pruned history. - Publish-release manual dispatch inputs:
publish-release.ymlnow readsworkflow_dispatchmetadata from event inputs so manual reruns correctly receivereleaseVersion/releaseCommit. - Prepare-release metadata guard: Added a Maven Central metadata validation gate in
prepare-release.yml(including dry-run mode) to fail early when required POM metadata (including developers) is missing. - VWAP and Wyckoff market-structure toolkit: Added rolling/anchored VWAP analytics (deviation, standard deviation, z-score, bands), support/resistance clustering (bounce-count, price-cluster, KDE volume profile), and Wyckoff cycle analysis APIs with a runnable demo.
- Release workflow dispatch and metadata checks:
publish-release.ymlnow readsworkflow_dispatchinputs correctly for manual reruns, andprepare-release.ymlnow fails early when required Maven Central POM metadata is missing. - README snippet synchronization line endings:
ReadmeContentManager.updateReadmeSnippets(...)now preserves the target README's dominant line separator (LF/CRLF), with regression tests covering both newline modes. - Indicator serialization and stability: Aligned VWAP, price-cluster, and Wyckoff indicators on descriptor ordering, NaN handling, and unstable-bar conventions.