close
Skip to content

Latest commit

 

History

116 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ha-track

CI Version Java 25 Maven License: 0BSD

ha-track is a modular Java toolkit for technical analysis, backtesting, and charting, rooted in Heikin Ashi candle analysis. It is headless and framework-agnostic (no DI container), and strongly oriented toward code quality — so you can develop, test, and visualise trading strategies cleanly and reproducibly.

It is a set of libraries, not an application: pick the ones you need and compose them. The three are independent and give an application three capabilities, with a shared vocabulary to connect them:

  • see the market — chart prices and indicators (heerwisch)
  • recognise the market — detect patterns and indicator events (nachtkrapp)
  • test an idea — backtest a trading strategy over history (frau-holle)

They share one small kernel of data types (commons) so a bar of price data means the same thing everywhere. The modules are named after continental Germanic folklore — each a helper that can also mislead. The end-user product is a separate consumer application.

Philosophy

  • Modular, independently testable architecture
  • Heikin Ashi as the foundation for pattern detection
  • No magic — specs are plain, inspectable data: configurable and debuggable (no reflection, no DI container)
  • Built to be embedded in batch pipelines or interactive tools alike

heerwisch     nachtkrapp     frau-holle

Charts at a glance

A few headless outputs produced by the heerwisch charting library — rendered straight from a ChartSpec with no manual post-processing.

A single backtest trade — candles, an SMA overlay, a Donchian-style HHV/LLV channel, semantic entry / target / stop horizontal levels, the in-position WIN band, and entry/exit glyphs.

Single trade visualisation

Multi-pane indicators — candles with an EMA overlay, a MACD sub-pane and an RSI(14) sub-pane with shaded overbought/oversold danger zones.

Multi-pane chart with MACD and RSI

Pivot levels and a σ sub-paneSTANDARD pivot point levels drawn as horizontal lines on the price pane, plus a standalone σ(20) standard-deviation sub-pane (added in 0.55.0-alpha).

Pivot levels and standard-deviation sub-pane

Documentation

Start here For
docs/concepts.md what ha-track is for and the ideas behind it — read this first
docs/modules.md per-module functional guide, with code examples
docs/getting-started.md build, test, and a runnable end-to-end example
CLAUDE.md (root + per module) the authoritative, rule-by-rule behavioural specification
AGENTS.md code-review guidelines for AI and human reviewers

Modules

Each module has its own README.md (human-friendly guide, with API usage) and a CLAUDE.md (the authoritative behavioural specification).

Module Role
commons shared kernel — JDK-only data types and pure functions, zero external dependencies
indicators shared kernel — JDK-only technical-indicator calculators (SMA, EMA, RSI, MACD, …)
heerwisch-api plotting library — immutable chart spec types and the ChartRenderer port
heerwisch-jfreechart default plotting driver — renders a ChartSpec to a PNG/JPEG ChartImage, headless
frau-holle backtesting library — the Backtester, with MarketDataSource and SignalGenerator ports
frau-holle-csv reference data driver — reads OHLC bars from local CSV files
frau-holle-eodhd reference data driver — fetches bars from the EODHD End-of-Day API
nachtkrapp pattern detection library — Heikin Ashi patterns plus MA/RSI/MACD primitives

Build

./mvnw -DskipTests=false verify

Requires JDK 25. A Maven Wrapper is committed, so a system Maven installation is optional. See docs/getting-started.md for details.

The default build attaches a -sources.jar to every module. Publishing to Maven Central additionally requires the release profile, which attaches the -javadoc.jar and GPG-signs all artifacts:

./mvnw -Prelease deploy

Deploying must use -Prelease — a plain mvn deploy would omit the javadoc jar and the signatures. The release CI workflow already passes the flag; manual deploys must include it.

Disclaimer

This software is a tool for historical analysis only. It is NOT a trading platform, brokerage, financial advice service, or investment product.

No warranties. The software is provided "AS IS" under its license. The author makes no warranties regarding accuracy, completeness, reliability, or fitness for any purpose.

Past performance is not indicative of future results. Results obtained with this software reflect hypothetical performance on historical data and have inherent limitations:

  • They cannot account for all market conditions
  • They cannot model unforeseen events
  • They cannot guarantee future returns

Use at your own risk. Any trading decisions based on output from this software are made solely at the user's discretion and risk. The author accepts no liability for any financial losses, regulatory issues, or other consequences arising from use of this software.

No financial advice. Nothing in this software, its documentation, its output, or its associated artifacts constitutes financial, investment, legal, or tax advice. Users should consult qualified professionals before making investment decisions.

No regulatory endorsement. This software is not registered with, endorsed by, or approved by any financial regulatory authority. Users are solely responsible for compliance with applicable laws and regulations in their jurisdiction.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages