Go wrapper for selected [TA-Lib](https://ta-lib.org/) functions using [`purego`](https://github.com/ebitengine/purego) to dynamically load the native TA-Lib shared library at runtime.
- A native TA-Lib shared library installed on the host system
This package does **not** bundle TA-Lib itself. You must install the native library separately.
## How library loading works
Call `talib.Load()` once before using any indicator function. The loader looks for the platform-specific library name:
- macOS: `libta-lib.dylib`
- Linux: `libta-lib.so`
- Windows: `libta-lib.dll`
Lookup order:
1.`$TA_LIB_PATH/<library file>`
2.`./<library file>`
3.`/usr/local/lib/<library file>`
4.`/usr/lib/<library file>`
## Installing TA-Lib
### macOS
If you use Homebrew:
```bash
brew install ta-lib
```
If the library is installed outside the default lookup paths, set:
```bash
exportTA_LIB_PATH=/path/to/lib
```
### Linux
Install TA-Lib with your package manager if available, or build it from source and place the shared library in a standard library directory such as `/usr/local/lib`.
### Windows
Install the TA-Lib DLL and make sure `libta-lib.dll` is reachable through `TA_LIB_PATH` or from the current working directory.
- Functions accepting a moving-average type use the `MAType` constant (`MA_SMA`, `MA_EMA`, `MA_WMA`, `MA_DEMA`, `MA_TEMA`, `MA_TRIMA`, `MA_KAMA`, `MA_MAMA`, `MA_T3`).
- Functions returning multiple outputs (e.g. `Aroon`, `MACD`, `Stoch`) return multiple slices; all are `nil` on failure.
This is currently a focused wrapper around a limited subset of TA-Lib. Additional indicators can be added by registering more native functions in `Load()` and exposing Go wrappers for them.