talib
| Kind | ffi-c |
|---|---|
| Categories | finance math ffi |
| Keywords | talib technical-analysis trading finance indicators |
A TA-Lib wrapper for Kit
Files
| File | Description |
|---|---|
kit.toml | Package manifest with metadata and dependencies |
src/main.kit | FFI bindings and Kit wrappers for TA-Lib indicators |
tests/ta-lib.test.kit | Module import verification test |
examples/basic.kit | SMA, EMA, RSI, ATR, and Bollinger Bands demo |
examples/candlesticks.kit | Candlestick pattern recognition (doji, hammer, engulfing) |
examples/momentum.kit | RSI, MACD, stochastic, ADX, and Williams %R indicators |
examples/moving-averages.kit | SMA, EMA, WMA, DEMA, TEMA, KAMA comparison |
examples/simple-test.kit | Minimal FFI initialization and SMA test |
examples/trading-signals.kit | Multi-indicator composite signal generation |
examples/volatility.kit | ATR, Bollinger Bands, standard deviation analysis |
LICENSE | MIT license file |
Dependencies
No Kit package dependencies.
Installation
kit add gitlab.com/kit-lang/packages/kit-ta-lib.gitUsage
import Kit.TaLibLicense
MIT License - see LICENSE for details.
Exported Functions & Types
TALibError
TA-Lib error type for typed error handling. Variants distinguish between different failure modes.
Variants
TALibInitError {message}TALibCalculationError {message}TALibInputError {message}TALibInternalError {message}init
Initialize TA-Lib library.
Must be called once at program start before using any TA-Lib functions.
Returns:
Result Unit String
match TALib.init()
| Ok -> println "TA-Lib initialized"
| Err msg -> println "Initialization failed: ${msg}"shutdown
Shutdown TA-Lib library.
Should be called at program end to clean up resources.
Returns:
Int
TALib.shutdown()version
Get TA-Lib version string.
Returns:
String
version = TALib.version()
println "TA-Lib version: ${version}"sma
Simple Moving Average (SMA).
Calculates the arithmetic mean over a specified period: $$SMA_t = \frac{1}{n}\sum_{i=0}^{n-1} P_{t-i}$$
Parameters:
Returns:
[Float] -> Int -> Result [Float] String
prices = [10.0, 11.0, 12.0, 13.0, 14.0]
result = TALib.sma prices 3ema
Exponential Moving Average (EMA).
Gives more weight to recent prices using exponential smoothing: $$EMA_t = P_t \cdot k + EMA_{t-1} \cdot (1-k)$$ where $k = \frac{2}{n+1}$
Parameters:
Returns:
FloatArray -> Int -> Result [Float] String
ema-result = TALib.ema prices 12wma
Weighted Moving Average (WMA).
Assigns linearly decreasing weights to older prices: $$WMA_t = \frac{\sum_{i=0}^{n-1} (n-i) \cdot P_{t-i}}{\sum_{i=1}^{n} i}$$
Parameters:
Returns:
FloatArray -> Int -> Result [Float] String
wma-result = TALib.wma prices 10dema
Double Exponential Moving Average (DEMA).
Reduces lag by applying EMA twice: $$DEMA = 2 \cdot EMA - EMA(EMA)$$
Parameters:
Returns:
FloatArray -> Int -> Result [Float] String
dema-result = TALib.dema prices 14tema
Triple Exponential Moving Average (TEMA).
Further reduces lag by applying EMA three times: $$TEMA = 3 \cdot EMA - 3 \cdot EMA(EMA) + EMA(EMA(EMA))$$
Parameters:
Returns:
FloatArray -> Int -> Result [Float] String
tema-result = TALib.tema prices 14trima
Triangular Moving Average (TRIMA).
Double-smoothed moving average calculated as SMA of SMA.
Parameters:
Returns:
FloatArray -> Int -> Result [Float] String
trima-result = TALib.trima prices 20kama
Kaufman Adaptive Moving Average (KAMA).
Adapts smoothing based on market volatility and efficiency ratio.
Parameters:
Returns:
FloatArray -> Int -> Result [Float] String
kama-result = TALib.kama prices 30ma
Generic Moving Average with selectable MA type.
Parameters:
Returns:
FloatArray -> Int -> Int -> Result [Float] String
# Calculate EMA using generic MA function
result = TALib.ma prices 14 1mama
MESA Adaptive Moving Average. Returns {mama: [...], fama: [...]}
FloatArray -> Float -> Float -> Result {mama: [Float], fama: [Float]} String
t3
Triple Exponential Moving Average (T3).
FloatArray -> Int -> Float -> Result [Float] String
rsi
Relative Strength Index (RSI).
Measures the magnitude of recent price changes to evaluate overbought/oversold conditions: $$RSI = 100 - \frac{100}{1 + RS}$$ where $RS = \frac{\text{Average Gain}}{\text{Average Loss}}$
RSI ranges from 0 to 100. Values above 70 typically indicate overbought conditions, while values below 30 indicate oversold conditions.
Parameters:
Returns:
FloatArray -> Int -> Result [Float] String
rsi-result = TALib.rsi prices 14
match rsi-result
| Ok values -> println "RSI: ${values}"
| Err msg -> println "Error: ${msg}"macd
Moving Average Convergence/Divergence (MACD).
Trend-following momentum indicator showing the relationship between two EMAs: $$MACD = EMA_{fast} - EMA_{slow}$$ $$Signal = EMA_{signal}(MACD)$$ $$Histogram = MACD - Signal$$
Parameters:
Returns:
FloatArray -> Int -> Int -> Int -> Result {macd: [Float], signal: [Float], histogram: [Float]} String
macd-result = TALib.macd prices 12 26 9
match macd-result
| Ok data -> println "MACD line: ${data.macd}, Signal: ${data.signal}"
| Err msg -> println "Error: ${msg}"macdext
MACD with controllable MA type.
FloatArray -> Int -> Int -> Int -> Int -> Int -> Int -> Result {macd: [Float], signal: [Float], histogram: [Float]} String
macdfix
MACD with fixed 12/26 periods.
FloatArray -> Int -> Result {macd: [Float], signal: [Float], histogram: [Float]} String
willr
Williams %R.
FloatArray -> FloatArray -> FloatArray -> Int -> Result [Float] String
mom
Momentum.
FloatArray -> Int -> Result [Float] String
roc
Rate of Change.
FloatArray -> Int -> Result [Float] String
rocp
Rate of Change Percentage.
FloatArray -> Int -> Result [Float] String
rocr
Rate of Change Ratio.
FloatArray -> Int -> Result [Float] String
rocr100
Rate of Change Ratio 100 scale.
FloatArray -> Int -> Result [Float] String
cci
Commodity Channel Index.
FloatArray -> FloatArray -> FloatArray -> Int -> Result [Float] String
cmo
Chande Momentum Oscillator.
FloatArray -> Int -> Result [Float] String
apo
Absolute Price Oscillator.
FloatArray -> Int -> Int -> Result [Float] String
ppo
Percentage Price Oscillator.
FloatArray -> Int -> Int -> Result [Float] String
ultosc
Ultimate Oscillator.
FloatArray -> FloatArray -> FloatArray -> Int -> Int -> Int -> Result [Float] String
trix
1-day Rate-Of-Change of Triple Smooth EMA (TRIX).
FloatArray -> Int -> Result [Float] String
bop
Balance of Power.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Float] String
mfi
Money Flow Index.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Int -> Result [Float] String
stoch
Stochastic Oscillator. Returns {slowk: [...], slowd: [...]}
FloatArray -> FloatArray -> FloatArray -> Int -> Int -> Int -> Result {slowk: [Float], slowd: [Float]} String
stochf
Stochastic Fast. Returns {fastk: [...], fastd: [...]}
FloatArray -> FloatArray -> FloatArray -> Int -> Int -> Result {fastk: [Float], fastd: [Float]} String
stochrsi
Stochastic RSI. Returns {fastk: [...], fastd: [...]}
FloatArray -> Int -> Int -> Int -> Result {fastk: [Float], fastd: [Float]} String
atr
Average True Range (ATR).
Measures market volatility by decomposing the entire range of price movement: $$TR = max(H - L, |H - C_{prev}|, |L - C_{prev}|)$$ $$ATR = MA(TR, period)$$
Parameters:
Returns:
FloatArray -> FloatArray -> FloatArray -> Int -> Result [Float] String
atr-result = TALib.atr highs lows closes 14natr
Normalized Average True Range (NATR).
ATR expressed as a percentage of close price: $$NATR = \frac{ATR}{Close} \times 100$$
Parameters:
Returns:
FloatArray -> FloatArray -> FloatArray -> Int -> Result [Float] String
natr-result = TALib.natr highs lows closes 14trange
True Range (TR).
Greatest of: current high-low, absolute value of current high - previous close, or absolute value of current low - previous close.
Parameters:
Returns:
FloatArray -> FloatArray -> FloatArray -> Result [Float] String
tr-result = TALib.trange highs lows closesbbands
Bollinger Bands.
Volatility bands placed above and below a moving average: $$Middle = SMA(price, period)$$ $$Upper = Middle + (StdDev \times dev_{up})$$ $$Lower = Middle - (StdDev \times dev_{dn})$$
Parameters:
Returns:
FloatArray -> Int -> Float -> Float -> Result {upper: [Float], middle: [Float], lower: [Float]} String
bb-result = TALib.bbands prices 20 2.0 2.0
match bb-result
| Ok bands -> println "Upper: ${bands.upper}, Lower: ${bands.lower}"
| Err msg -> println "Error: ${msg}"stddev
Standard Deviation.
FloatArray -> Int -> Float -> Result [Float] String
variance
Variance.
FloatArray -> Int -> Float -> Result [Float] String
obv
On Balance Volume.
FloatArray -> FloatArray -> Result [Float] String
ad
Accumulation/Distribution Line.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Float] String
adosc
Chaikin A/D Oscillator.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Int -> Int -> Result [Float] String
adx
Average Directional Movement Index.
FloatArray -> FloatArray -> FloatArray -> Int -> Result [Float] String
adxr
Average Directional Movement Index Rating.
FloatArray -> FloatArray -> FloatArray -> Int -> Result [Float] String
aroon
Aroon. Returns {down: [...], up: [...]}
FloatArray -> FloatArray -> Int -> Result {down: [Float], up: [Float]} String
aroonosc
Aroon Oscillator.
FloatArray -> FloatArray -> Int -> Result [Float] String
dx
Directional Movement Index.
FloatArray -> FloatArray -> FloatArray -> Int -> Result [Float] String
minus-di
Minus Directional Indicator.
FloatArray -> FloatArray -> FloatArray -> Int -> Result [Float] String
minus-dm
Minus Directional Movement.
FloatArray -> FloatArray -> Int -> Result [Float] String
plus-di
Plus Directional Indicator.
FloatArray -> FloatArray -> FloatArray -> Int -> Result [Float] String
plus-dm
Plus Directional Movement.
FloatArray -> FloatArray -> Int -> Result [Float] String
sar
Parabolic SAR.
FloatArray -> FloatArray -> Float -> Float -> Result [Float] String
sarext
Parabolic SAR - Extended.
FloatArray -> FloatArray -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Float -> Result [Float] String
typprice
Typical Price: (High + Low + Close) / 3.
FloatArray -> FloatArray -> FloatArray -> Result [Float] String
wclprice
Weighted Close Price: (High + Low + Close*2) / 4.
FloatArray -> FloatArray -> FloatArray -> Result [Float] String
medprice
Median Price: (High + Low) / 2.
FloatArray -> FloatArray -> Result [Float] String
avgprice
Average Price: (Open + High + Low + Close) / 4.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Float] String
midpoint
MidPoint over period.
FloatArray -> Int -> Result [Float] String
midprice
MidPrice over period.
FloatArray -> FloatArray -> Int -> Result [Float] String
max
Highest value over a period.
FloatArray -> Int -> Result [Float] String
min
Lowest value over a period.
FloatArray -> Int -> Result [Float] String
sum
Sum over a period.
FloatArray -> Int -> Result [Float] String
maxindex
Index of highest value over a period.
FloatArray -> Int -> Result [Int] String
minindex
Index of lowest value over a period.
FloatArray -> Int -> Result [Int] String
minmax
Lowest and highest values over a period. Returns {min: [...], max: [...]}
FloatArray -> Int -> Result {min: [Float], max: [Float]} String
minmaxindex
Indexes of lowest and highest values over a period. Returns {min-idx: [...], max-idx: [...]}
FloatArray -> Int -> Result {min-idx: [Int], max-idx: [Int]} String
beta
Beta coefficient.
FloatArray -> FloatArray -> Int -> Result [Float] String
correl
Pearson's Correlation Coefficient.
FloatArray -> FloatArray -> Int -> Result [Float] String
linearreg
Linear Regression.
FloatArray -> Int -> Result [Float] String
linearreg-angle
Linear Regression Angle.
FloatArray -> Int -> Result [Float] String
linearreg-intercept
Linear Regression Intercept.
FloatArray -> Int -> Result [Float] String
linearreg-slope
Linear Regression Slope.
FloatArray -> Int -> Result [Float] String
tsf
Time Series Forecast.
FloatArray -> Int -> Result [Float] String
ht-dcperiod
Hilbert Transform - Dominant Cycle Period.
FloatArray -> Result [Float] String
ht-dcphase
Hilbert Transform - Dominant Cycle Phase.
FloatArray -> Result [Float] String
ht-phasor
Hilbert Transform - Phasor Components. Returns {in-phase: [...], quadrature: [...]}
FloatArray -> Result {in-phase: [Float], quadrature: [Float]} String
ht-sine
Hilbert Transform - SineWave. Returns {sine: [...], lead-sine: [...]}
FloatArray -> Result {sine: [Float], lead-sine: [Float]} String
ht-trendline
Hilbert Transform - Instantaneous Trendline.
FloatArray -> Result [Float] String
ht-trendmode
Hilbert Transform - Trend vs Cycle Mode.
FloatArray -> Result [Int] String
cdl-2crows
Two Crows.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-3blackcrows
Three Black Crows.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-3inside
Three Inside Up/Down.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-3linestrike
Three-Line Strike.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-3outside
Three Outside Up/Down.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-3starsinsouth
Three Stars In The South.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-3whitesoldiers
Three Advancing White Soldiers.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-abandonedbaby
Abandoned Baby (with penetration).
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Float -> Result [Int] String
cdl-advanceblock
Advance Block.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-belthold
Belt-hold.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-breakaway
Breakaway.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-closingmarubozu
Closing Marubozu.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-concealbabyswall
Concealing Baby Swallow.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-counterattack
Counterattack.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-darkcloudcover
Dark Cloud Cover (with penetration).
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Float -> Result [Int] String
cdl-doji
Doji.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-dojistar
Doji Star.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-dragonflydoji
Dragonfly Doji.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-engulfing
Engulfing Pattern.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-eveningdojistar
Evening Doji Star (with penetration).
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Float -> Result [Int] String
cdl-eveningstar
Evening Star (with penetration).
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Float -> Result [Int] String
cdl-gapsidesidewhite
Up/Down-gap Side-by-side White Lines.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-gravestonedoji
Gravestone Doji.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-hammer
Hammer.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-hangingman
Hanging Man.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-harami
Harami Pattern.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-haramicross
Harami Cross Pattern.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-highwave
High-Wave Candle.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-hikkake
Hikkake Pattern.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-hikkakemod
Modified Hikkake Pattern.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-homingpigeon
Homing Pigeon.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-identical3crows
Identical Three Crows.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-inneck
In-Neck Pattern.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-invertedhammer
Inverted Hammer.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-kicking
Kicking.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-kickingbylength
Kicking - bull/bear determined by the longer marubozu.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-ladderbottom
Ladder Bottom.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-longleggeddoji
Long Legged Doji.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-longline
Long Line Candle.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-marubozu
Marubozu.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-mathold
Mat Hold (with penetration).
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Float -> Result [Int] String
cdl-matchinglow
Matching Low.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-morningdojistar
Morning Doji Star (with penetration).
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Float -> Result [Int] String
cdl-morningstar
Morning Star (with penetration).
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Float -> Result [Int] String
cdl-onneck
On-Neck Pattern.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-piercing
Piercing Pattern.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-rickshawman
Rickshaw Man.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-risefall3methods
Rising/Falling Three Methods.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-separatinglines
Separating Lines.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-shootingstar
Shooting Star.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-shortline
Short Line Candle.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-spinningtop
Spinning Top.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-stalledpattern
Stalled Pattern.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-sticksandwich
Stick Sandwich.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-takuri
Takuri (Dragonfly Doji with very long lower shadow).
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-tasukigap
Tasuki Gap.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-thrusting
Thrusting Pattern.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-tristar
Tristar Pattern.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-unique3river
Unique 3 River.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-upsidegap2crows
Upside Gap Two Crows.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String
cdl-xsidegap3methods
Upside/Downside Gap Three Methods.
FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Int] String