https://ta4j.github.io/ta4j-wiki/
JDK 21 + (0.21.0)
Gradle org.ta4j:ta4j-core:0.17
| Concept | Description | Where to learn more |
|---|---|---|
| BarSeries | Ordered collection of bars (OHLCV data) used for all calculations. | Bar Series & Bars |
| Num | Precision-safe numeric abstraction (Decimal, Double, custom) | Num |
| Indicator<T extends Num> | Lazily evaluated time series derived from bars or other indicators. | Technical Indicators |
| Rule / Strategy | Boolean conditions that generate entry/exit signals; strategies pair entry + exit rules | Trading Strategies |
| BarSeriesManager & BacktestExecutor | Drivers that run strategies against data and return a TradingRecord | Backtesting |
시가, high 고가, low 저가, close 종가, volume 거래량) data for consistent time spans.예) 삼성전자의 1년치 OHLVC 데이터가 BarSeries 안에 리스트 형태로 담겨있다.Public Document Says
BarSeries series = new BaseBarSeriesBuilder()
.withName("btc_daily")
.build();
Instant endTime = Instant.parse("2024-01-02T00:00:00Z"); // ZondedDateTime
series.addBar(series.barBuilder()
.timePeriod(Duration.ofDays(1))
.endTime(endTime)
.openPrice(105.42)
.highPrice(112.99)
.lowPrice(104.01)
.closePrice(111.42)
.volume(1337)
.build());
GPT Says
public BarSeries createBarSeries(String stockCode, List<DailyStock> dailyStocks) {
// 1. BarSeries 생성 (이름은 종목코드로 설정)
BarSeries series = new BaseBarSeriesBuilder()
.withName(stockCode)
.build();
// 한국 시간대 설정
ZoneId kstZone = ZoneId.of("Asia/Seoul");
// 2. 일봉 데이터를 순회하며 Bar 추가 (과거 데이터부터 순서대로 들어가야 함)
for (DailyStock stock : dailyStocks) {
// 날짜를 ZonedDateTime으로 변환 (일봉이므로 임의로 장 마감 시간인 15시 30분으로 설정)
ZonedDateTime endTime = stock.getDate().atTime(15, 30).atZone(kstZone);
series.addBar(series.barBuilder()
.timePeriod(Duration.ofDays(1)) // 일봉이므로 1일
.endTime(endTime)
.openPrice(stock.getOpenPrice())
.highPrice(stock.getHighPrice())
.lowPrice(stock.getLowPrice())
.closePrice(stock.getClosePrice())
.volume(stock.getVolume())
.build());
}
return series;
}
구조화된 신호로 변환하여 매매 전략과 규칙을 만드는 기초가 된다.추세 및 이동평균: SMA(단순), EMA(지수), HMA(Hull), SuperTrend 등
모멘텀 및 오실레이터: RSI(상대강도지수), MACD, Stochastic, ROC등 시장의 속도와 강도를 측정.
변동성 및 밴드: ATR(변동폭), Bollinger Bands 등
거래량 및 폭: OBV, VWAP(거래량 가중 평균 가격) 등
캔들 패턴: Hammer(망치형), 슈팅스타 등 캔들 모양 기반 지표
ROC (Rate of Change): 현재 값이 n봉 전 대비 몇 % 변했는지를 나타내는 모멘텀 지표.
| index | 종가 | ROC(3) 3거래일 전 종가 대비 변화율(%) |
|---|---|---|
| 0 | 100 | 0 |
| 1 | 102 | +2.0 (index 0 대비) |
| 2 | 99 | -0.1 (index 0 대비) |
| 3 | 105 | +0.5 (index 0 대비) |
| 4 | 110 | +7.84 (index 1 대비) |
계좌 잔고의 시계열 데이터실현 손익)만 알 수 있다. 하지만 CashFlow는 들고 있는 동안 내 자산이 얼마나 변동했는지 (평가손익)을 알 수 있다.1을 기준으로 시작.매일매일 종가 등락률을 계좌 잔고에 곱해서 반영한다. 즉, 어제 자산이 100만원이었고, 오늘 주가가 5% 올랐다면, 오늘의 CashFlow값은 105만원으로 기록된다. (팔지 않더라도 평가 수익이 반영됨)