talib

A TA-Lib wrapper for Kit

Files

FileDescription
.editorconfigEditor formatting configuration
.gitignoreGit ignore rules for build artifacts and dependencies
.tool-versionsasdf tool versions (Zig, Kit)
LICENSEMIT license file
README.mdThis file
c/kit_ta_lib.cC FFI wrapper
c/kit_ta_lib.hC header for FFI wrapper
examples/basic.kitBasic usage example
examples/candlesticks.kitExample: candlesticks
examples/momentum.kitExample: momentum
examples/moving-averages.kitExample: moving averages
examples/simple-test.kitExample: simple test
examples/trading-signals.kitExample: trading signals
examples/volatility.kitExample: volatility
kit.tomlPackage manifest with metadata and dependencies
src/talib.kitTA-Lib - Technical Analysis Library for Kit
tests/error-types.test.kitTests for error-types
tests/ta-lib.test.kitTests for ta-lib

Dependencies

No Kit package dependencies.

System Dependencies

TA-Lib must be installed on your system:

PlatformCommand
macOSbrew install ta-lib
Ubuntu/DebianSee ta-lib.org for installation
FedoraSee ta-lib.org for installation

Installation

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

Usage

import Kit.TALib as TALib

main = fn =>
  # Initialize TA-Lib
  match TALib.init
    | Ok _ -> println "TA-Lib initialized"
    | Err msg -> println "Init error: ${msg}"

  println "Version: ${TALib.version}"

  # Sample price data
  prices = [10.0, 11.0, 12.0, 11.0, 10.0, 9.0, 8.0, 7.0, 6.0, 5.0]

  # Simple Moving Average
  match TALib.sma prices 3
    | Ok values -> println "SMA(3): ${values}"
    | Err msg -> println "Error: ${msg}"

  # Exponential Moving Average
  match TALib.ema prices 5
    | Ok values -> println "EMA(5): ${values}"
    | Err msg -> println "Error: ${msg}"

  # RSI (Relative Strength Index)
  match TALib.rsi prices 7
    | Ok values -> println "RSI(7): ${values}"
    | Err msg -> println "Error: ${msg}"

  # Bollinger Bands
  match TALib.bbands prices 5 2.0 2.0
    | Ok bands ->
      println "Upper:  ${bands.upper}"
      println "Middle: ${bands.middle}"
      println "Lower:  ${bands.lower}"
    | Err msg -> println "Error: ${msg}"

  # MACD (Moving Average Convergence Divergence)
  close = [151.25, 152.50, 151.75, 150.25, 149.00, 148.50, 150.00, 
           152.00, 153.50, 154.00, 155.25, 156.00, 155.50, 154.00, 
           153.25, 152.00, 153.50, 155.00, 156.50, 157.00, 156.25, 
           155.00, 154.50, 153.00, 152.50, 154.00, 155.50, 157.00, 
           158.00, 159.00]

  match TALib.macd close 12 26 9
    | Ok m ->
      println "MACD Line: ${m.macd}"
      println "Signal:    ${m.signal}"
      println "Histogram: ${m.histogram}"
    | Err msg -> println "Error: ${msg}"

  # Shutdown TA-Lib
  TALib.shutdown

main

Development

Running Examples

Run examples with the interpreter:

kit run examples/basic.kit

Compile examples to a native binary:

kit build examples/basic.kit && ./basic

Running Tests

Run the test suite:

kit test

Run the test suite with coverage:

kit test --coverage

Running kit dev

Run the standard development workflow (format, check, test):

kit dev

This will:

  1. Format and check source files in src/
  2. Run tests in tests/ with coverage

Generating Documentation

Generate API documentation from doc comments:

kit doc

Note: Kit sources with doc comments (##) will generate HTML documents in docs/*.html

Cleaning Build Artifacts

Remove generated files, caches, and build artifacts:

kit task clean

Note: Defined in kit.toml.

Local Installation

To install this package locally for development:

kit install

This installs the package to ~/.kit/packages/@kit/talib/, making it available for import as Kit.TALib in other projects.

License

This package is released under the MIT License - see LICENSE for details.

TA-Lib is released under a BSD-style license.

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] -> PositiveInt -> 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 -> PositiveInt -> 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 -> PositiveInt -> 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 -> PositiveInt -> 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 -> PositiveInt -> 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 -> PositiveInt -> 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 -> PositiveInt -> Result [Float] String

kama-result = TALib.kama prices 30

ma

Generic Moving Average with selectable MA type.

Parameters:

Returns:

FloatArray -> PositiveInt -> 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 -> PositiveInt -> 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 -> PositiveInt -> 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 -> PositiveInt -> PositiveInt -> PositiveInt -> 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 -> PositiveInt -> Int -> PositiveInt -> Int -> PositiveInt -> Int -> Result {macd: [Float], signal: [Float], histogram: [Float]} String

macdfix

MACD with fixed 12/26 periods.

FloatArray -> PositiveInt -> Result {macd: [Float], signal: [Float], histogram: [Float]} String

willr

Williams %R.

FloatArray -> FloatArray -> FloatArray -> PositiveInt -> Result [Float] String

mom

Momentum.

FloatArray -> PositiveInt -> Result [Float] String

roc

Rate of Change.

FloatArray -> PositiveInt -> Result [Float] String

rocp

Rate of Change Percentage.

FloatArray -> PositiveInt -> Result [Float] String

rocr

Rate of Change Ratio.

FloatArray -> PositiveInt -> Result [Float] String

rocr100

Rate of Change Ratio 100 scale.

FloatArray -> PositiveInt -> Result [Float] String

cci

Commodity Channel Index.

FloatArray -> FloatArray -> FloatArray -> PositiveInt -> Result [Float] String

cmo

Chande Momentum Oscillator.

FloatArray -> PositiveInt -> Result [Float] String

apo

Absolute Price Oscillator.

FloatArray -> PositiveInt -> PositiveInt -> Result [Float] String

ppo

Percentage Price Oscillator.

FloatArray -> PositiveInt -> PositiveInt -> Result [Float] String

ultosc

Ultimate Oscillator.

FloatArray -> FloatArray -> FloatArray -> PositiveInt -> PositiveInt -> PositiveInt -> Result [Float] String

trix

1-day Rate-Of-Change of Triple Smooth EMA (TRIX).

FloatArray -> PositiveInt -> Result [Float] String

bop

Balance of Power.

FloatArray -> FloatArray -> FloatArray -> FloatArray -> Result [Float] String

mfi

Money Flow Index.

FloatArray -> FloatArray -> FloatArray -> FloatArray -> PositiveInt -> Result [Float] String

stoch

Stochastic Oscillator. Returns {slowk: [...], slowd: [...]}

FloatArray -> FloatArray -> FloatArray -> PositiveInt -> PositiveInt -> PositiveInt -> Result {slowk: [Float], slowd: [Float]} String

stochf

Stochastic Fast. Returns {fastk: [...], fastd: [...]}

FloatArray -> FloatArray -> FloatArray -> PositiveInt -> PositiveInt -> Result {fastk: [Float], fastd: [Float]} String

stochrsi

Stochastic RSI. Returns {fastk: [...], fastd: [...]}

FloatArray -> PositiveInt -> PositiveInt -> PositiveInt -> 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 -> PositiveInt -> 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 -> PositiveInt -> 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 -> PositiveInt -> 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 -> PositiveInt -> Float -> Result [Float] String

variance

Variance.

FloatArray -> PositiveInt -> 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 -> PositiveInt -> PositiveInt -> Result [Float] String

adx

Average Directional Movement Index.

FloatArray -> FloatArray -> FloatArray -> PositiveInt -> Result [Float] String

adxr

Average Directional Movement Index Rating.

FloatArray -> FloatArray -> FloatArray -> PositiveInt -> Result [Float] String

aroon

Aroon. Returns {down: [...], up: [...]}

FloatArray -> FloatArray -> PositiveInt -> Result {down: [Float], up: [Float]} String

aroonosc

Aroon Oscillator.

FloatArray -> FloatArray -> PositiveInt -> Result [Float] String

dx

Directional Movement Index.

FloatArray -> FloatArray -> FloatArray -> PositiveInt -> Result [Float] String

minus-di

Minus Directional Indicator.

FloatArray -> FloatArray -> FloatArray -> PositiveInt -> Result [Float] String

minus-dm

Minus Directional Movement.

FloatArray -> FloatArray -> PositiveInt -> Result [Float] String

plus-di

Plus Directional Indicator.

FloatArray -> FloatArray -> FloatArray -> PositiveInt -> Result [Float] String

plus-dm

Plus Directional Movement.

FloatArray -> FloatArray -> PositiveInt -> 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 -> PositiveInt -> Result [Float] String

midprice

MidPrice over period.

FloatArray -> FloatArray -> PositiveInt -> Result [Float] String

max

Highest value over a period.

FloatArray -> PositiveInt -> Result [Float] String

min

Lowest value over a period.

FloatArray -> PositiveInt -> Result [Float] String

sum

Sum over a period.

FloatArray -> PositiveInt -> Result [Float] String

maxindex

Index of highest value over a period.

FloatArray -> PositiveInt -> Result [Int] String

minindex

Index of lowest value over a period.

FloatArray -> PositiveInt -> Result [Int] String

minmax

Lowest and highest values over a period. Returns {min: [...], max: [...]}

FloatArray -> PositiveInt -> Result {min: [Float], max: [Float]} String

minmaxindex

Indexes of lowest and highest values over a period. Returns {min-idx: [...], max-idx: [...]}

FloatArray -> PositiveInt -> Result {min-idx: [Int], max-idx: [Int]} String

beta

Beta coefficient.

FloatArray -> FloatArray -> PositiveInt -> Result [Float] String

correl

Pearson's Correlation Coefficient.

FloatArray -> FloatArray -> PositiveInt -> Result [Float] String

linearreg

Linear Regression.

FloatArray -> PositiveInt -> Result [Float] String

linearreg-angle

Linear Regression Angle.

FloatArray -> PositiveInt -> Result [Float] String

linearreg-intercept

Linear Regression Intercept.

FloatArray -> PositiveInt -> Result [Float] String

linearreg-slope

Linear Regression Slope.

FloatArray -> PositiveInt -> Result [Float] String

tsf

Time Series Forecast.

FloatArray -> PositiveInt -> 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