talib

A TA-Lib wrapper for Kit

Files

FileDescription
kit.tomlPackage manifest with metadata and dependencies
src/main.kitFFI bindings and Kit wrappers for TA-Lib indicators
tests/ta-lib.test.kitModule import verification test
examples/basic.kitSMA, EMA, RSI, ATR, and Bollinger Bands demo
examples/candlesticks.kitCandlestick pattern recognition (doji, hammer, engulfing)
examples/momentum.kitRSI, MACD, stochastic, ADX, and Williams %R indicators
examples/moving-averages.kitSMA, EMA, WMA, DEMA, TEMA, KAMA comparison
examples/simple-test.kitMinimal FFI initialization and SMA test
examples/trading-signals.kitMulti-indicator composite signal generation
examples/volatility.kitATR, Bollinger Bands, standard deviation analysis
LICENSEMIT license file

Dependencies

No Kit package dependencies.

Installation

kit add gitlab.com/kit-lang/packages/kit-ta-lib.git

Usage

import Kit.TaLib

License

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 3

ema

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 12

wma

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 10

dema

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 14

tema

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 14

trima

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 20

kama

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 30

ma

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 1

mama

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 14

natr

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 14

trange

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 closes

bbands

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

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