Complete the TA-Lib candlestick pattern recognition coverage by adding the second
half of the Cdl* function family.
New functions in pattern_recognitions.go (all return []int32, OHLC inputs):
CdlLadderBottom, CdlLongLeggedDoji, CdlLongLine, CdlMarubozu,
CdlMatchingLow, CdlMatHold(penetration), CdlMorningDojiStar(penetration),
CdlMorningStar(penetration), CdlOnNeck, CdlPiercing, CdlRickshawMan,
CdlRiseFall3Methods, CdlSeparatingLines, CdlShootingStar, CdlShortLine,
CdlSpinningTop, CdlStalledPattern, CdlStickSandwich, CdlTakuri,
CdlTasukiGap, CdlThrusting, CdlTristar, CdlUnique3River,
CdlUpsideGap2Crows, CdlXSideGap3Methods
Supporting changes:
- functions.go: add 25 C function pointer declarations (TA_CDL* signatures)
- loader.go: register all 25 new symbols via purego.RegisterLibFunc in Load()
- cli/main.go: extend smoke harness to exercise all new wrappers
- README.md: document all new patterns in the Pattern Recognition section
- add CMOU momentum wrapper in `momentum_indicators.go`
- add `Cdl*` pattern-recognition wrappers in `pattern_recognitions.go`
- register `TA_CMOU` and `TA_CDL*` symbols in `loader.go`
- add corresponding function pointer signatures in `functions.go`
- sync `README.md` with CMOU and pattern-recognition API docs
- add TA-Lib function pointer signatures for ATR/NATR/TRANGE and AD/ADOSC/CMF/NVI/OBV/PVI/PVO in functions.go
- register new native symbols in loader.go
- add new wrapper sources: volatility_indicators.go and volume_indicators.go
- update README function matrix with new volatility and volume categories
- add ta-lib upstream as a git submodule (.gitmodules + ta-lib gitlink)
- add native TA-Lib bindings in functions.go for beta, correl, linear regression, stddev, tsf, and variance
- register the new TA-Lib symbols in loader.go
- add public wrappers in statistic_functions.go for Beta, Correl, LinearReg, LinearRegAngle, LinearRegIntercept, LinearRegSlope, StdDev, TSF, and Var
- update README.md to document Price Transforms and Statistic Functions
New file price_transform.go implements five new public wrappers:
- AvgPrice (TA_AVGPRICE) – mean of OHLC per bar
- MedPrice (TA_MEDPRICE) – (High + Low) / 2
- TypPrice (TA_TYPPRICE) – (High + Low + Close) / 3
- WCLPrice (TA_WCLPRICE) – (High + Low + 2×Close) / 4
- AvgDev (TA_AVGDEV) – rolling average absolute deviation from SMA
- add corresponding low-level function pointer signatures in functions.go
- register all five symbols in Load() in loader.go
- update README.md with Price Transforms and Statistic Functions sections
- add TA-Lib function pointer signatures in functions.go for:
MA, MAMA, MAVP, MIDPOINT, MIDPRICE, SAR, SAREXT, SMA, T3, TEMA, TRIMA, WMA
- register new symbols in Load() via purego.RegisterLibFunc in loader.go
- add public overlap study wrappers in overlap_studies.go with consistent nil-on-failure behavior
- update README overlap studies list to match implemented API
- add TA-Lib bindings and loader registrations for overlap studies:
TA_ACCBANDS, TA_BBANDS, TA_DEMA, TA_EMA, TA_HT_TRENDLINE, TA_KAMA
- add new public wrappers in overlap_studies.go:
AccBands, BBands, DEMA, EMA, HT_TRENDLINE, KAMA
- refactor momentum wrapper names to consistent Go-style exports
(e.g. Aroon/AroonOsc, MACDExt/MACDFix, Stoch/StochF/StochRSI,
MinusDI/MinusDM, PlusDI/PlusDM, Trix, UltOsc, WillR)
- rename MAType constants to MA_* for clearer namespacing
- update README to reflect the current exported API and overlap coverage
- Add 13 new math transform functions: Cos, Sin, Tan, ACos, ASin, ATan, CosH, SinH, TanH, Ceil, Exp, Floor, Sqrt, Ln, Log10
- Implement proper TA-Lib bindings for all math transform operations
- Add comprehensive documentation comments to all new functions
- Standardize error handling across all wrapper functions using slog.Debug
- Refactor function definitions for consistency and maintainability
The wrapper now exposes a comprehensive set of mathematical operations from TA-Lib,
including trigonometric, hyperbolic, exponential, logarithmic, and rounding functions.
All functions follow the established pattern of vector element-wise transformations.
Add Go wrappers for additional TA-Lib math operators:
Div, Max, MaxIndex, Min, MinIndex, MinMax, MinMaxIndex, Mult, Sub, and Sum.
Refactor the TA-Lib function signatures to use int32 consistently,
including taResult and Hilbert Transform bindings, so the Go layer
matches the native library more closely.
Fix HT_TRENDMODE to return []int32 and update related comments and
naming for better API consistency.