Home

Awesome

TA-Lib

Build Status Build status Coverage Status codecov.io

A Julia wrapper for TA-Lib (Technical Analysis Library)

Sample / Features

See sample.jl

TALib.jl supports both Array and DataFrames thanks to multiple dispatch.

julia> using TALib

julia> using DataFrames
julia> filename = "test/ford_2012.csv"
julia> dfOHLCV = readtable(filename)
julia> dfOHLCV[:Date] = Date(dfOHLCV[:Date])
julia> dfOHLCV
250x6 DataFrames.DataFrame
│ Row │ Date       │ Open  │ High  │ Low   │ Close │ Volume    │
├─────┼────────────┼───────┼───────┼───────┼───────┼───────────┤
│ 1   │ 2012-01-03 │ 11.0  │ 11.25 │ 10.99 │ 11.13 │ 45709900  │
│ 2   │ 2012-01-04 │ 11.15 │ 11.53 │ 11.07 │ 11.3  │ 79725200  │
│ 3   │ 2012-01-05 │ 11.33 │ 11.63 │ 11.24 │ 11.59 │ 67877500  │
│ 4   │ 2012-01-06 │ 11.74 │ 11.8  │ 11.52 │ 11.71 │ 59840700  │
│ 5   │ 2012-01-09 │ 11.83 │ 11.95 │ 11.7  │ 11.8  │ 53981500  │
│ 6   │ 2012-01-10 │ 12.0  │ 12.05 │ 11.63 │ 11.8  │ 121750600 │
│ 7   │ 2012-01-11 │ 11.74 │ 12.18 │ 11.65 │ 12.07 │ 63806000  │
│ 8   │ 2012-01-12 │ 12.16 │ 12.18 │ 11.89 │ 12.14 │ 48687700  │
│ 9   │ 2012-01-13 │ 12.01 │ 12.08 │ 11.84 │ 12.04 │ 46366700  │
│ 10  │ 2012-01-17 │ 12.2  │ 12.26 │ 11.96 │ 12.02 │ 44398400  │
│ 11  │ 2012-01-18 │ 12.03 │ 12.37 │ 12.0  │ 12.34 │ 47102700  │
│ 12  │ 2012-01-19 │ 12.48 │ 12.72 │ 12.43 │ 12.61 │ 70894200  │
│ 13  │ 2012-01-20 │ 12.55 │ 12.64 │ 12.45 │ 12.59 │ 43705700  │
│ 14  │ 2012-01-23 │ 12.69 │ 12.84 │ 12.55 │ 12.66 │ 49379700  │
│ 15  │ 2012-01-24 │ 12.56 │ 12.86 │ 12.46 │ 12.82 │ 45768400  │
│ 16  │ 2012-01-25 │ 12.8  │ 12.98 │ 12.7  │ 12.93 │ 54021600  │
│ 17  │ 2012-01-26 │ 13.03 │ 13.05 │ 12.66 │ 12.79 │ 75470700  │
│ 18  │ 2012-01-27 │ 11.96 │ 12.53 │ 11.79 │ 12.21 │ 142155300 │
⋮
│ 232 │ 2012-12-04 │ 11.4  │ 11.44 │ 11.23 │ 11.31 │ 37760200  │
│ 233 │ 2012-12-05 │ 11.32 │ 11.4  │ 11.18 │ 11.31 │ 33152400  │
│ 234 │ 2012-12-06 │ 11.26 │ 11.31 │ 11.19 │ 11.24 │ 31065800  │
│ 235 │ 2012-12-07 │ 11.27 │ 11.5  │ 11.26 │ 11.48 │ 38404500  │
│ 236 │ 2012-12-10 │ 11.41 │ 11.53 │ 11.41 │ 11.47 │ 26025200  │
│ 237 │ 2012-12-11 │ 11.51 │ 11.58 │ 11.4  │ 11.49 │ 36326900  │
│ 238 │ 2012-12-12 │ 11.52 │ 11.56 │ 11.43 │ 11.47 │ 31099900  │
│ 239 │ 2012-12-13 │ 11.46 │ 11.5  │ 11.21 │ 11.27 │ 35443200  │
│ 240 │ 2012-12-14 │ 11.27 │ 11.27 │ 11.03 │ 11.1  │ 36933500  │
│ 241 │ 2012-12-17 │ 11.16 │ 11.41 │ 11.14 │ 11.39 │ 46983300  │
│ 242 │ 2012-12-18 │ 11.48 │ 11.68 │ 11.4  │ 11.67 │ 61810400  │
│ 243 │ 2012-12-19 │ 11.79 │ 11.85 │ 11.62 │ 11.73 │ 54884700  │
│ 244 │ 2012-12-20 │ 11.74 │ 11.8  │ 11.58 │ 11.77 │ 47750100  │
│ 245 │ 2012-12-21 │ 11.55 │ 11.86 │ 11.47 │ 11.86 │ 94489300  │
│ 246 │ 2012-12-24 │ 11.67 │ 12.4  │ 11.67 │ 12.4  │ 91734900  │
│ 247 │ 2012-12-26 │ 12.31 │ 12.79 │ 12.31 │ 12.79 │ 140331900 │
│ 248 │ 2012-12-27 │ 12.79 │ 12.81 │ 12.36 │ 12.76 │ 108315100 │
│ 249 │ 2012-12-28 │ 12.55 │ 12.88 │ 12.52 │ 12.87 │ 95668600  │
│ 250 │ 2012-12-31 │ 12.88 │ 13.08 │ 12.76 │ 12.95 │ 106908900 │

OHLC

Moving Average

julia> indic = MA(dfOHLCV, price=:Close)
250x2 DataFrames.DataFrame
│ Row │ Date       │ Value   │
├─────┼────────────┼─────────┤
│ 1   │ 2012-01-03 │ NaN     │
│ 2   │ 2012-01-04 │ NaN     │
│ 3   │ 2012-01-05 │ NaN     │
│ 4   │ 2012-01-06 │ NaN     │
│ 5   │ 2012-01-09 │ NaN     │
│ 6   │ 2012-01-10 │ NaN     │
│ 7   │ 2012-01-11 │ NaN     │
│ 8   │ 2012-01-12 │ NaN     │
│ 9   │ 2012-01-13 │ NaN     │
│ 10  │ 2012-01-17 │ NaN     │
│ 11  │ 2012-01-18 │ NaN     │
│ 12  │ 2012-01-19 │ NaN     │
│ 13  │ 2012-01-20 │ NaN     │
│ 14  │ 2012-01-23 │ NaN     │
│ 15  │ 2012-01-24 │ NaN     │
│ 16  │ 2012-01-25 │ NaN     │
│ 17  │ 2012-01-26 │ NaN     │
│ 18  │ 2012-01-27 │ NaN     │
⋮
│ 232 │ 2012-12-04 │ 10.8993 │
│ 233 │ 2012-12-05 │ 10.937  │
│ 234 │ 2012-12-06 │ 10.9727 │
│ 235 │ 2012-12-07 │ 11.022  │
│ 236 │ 2012-12-10 │ 11.0653 │
│ 237 │ 2012-12-11 │ 11.102  │
│ 238 │ 2012-12-12 │ 11.139  │
│ 239 │ 2012-12-13 │ 11.1427 │
│ 240 │ 2012-12-14 │ 11.1377 │
│ 241 │ 2012-12-17 │ 11.145  │
│ 242 │ 2012-12-18 │ 11.159  │
│ 243 │ 2012-12-19 │ 11.1693 │
│ 244 │ 2012-12-20 │ 11.193  │
│ 245 │ 2012-12-21 │ 11.225  │
│ 246 │ 2012-12-24 │ 11.274  │
│ 247 │ 2012-12-26 │ 11.3347 │
│ 248 │ 2012-12-27 │ 11.3933 │
│ 249 │ 2012-12-28 │ 11.4667 │
│ 250 │ 2012-12-31 │ 11.546  │

julia> using PyPlot
julia> plot(dfOHLCV[:Date], dfOHLCV[:Close], dfOHLCV[:Date], indic)

MA

Bollinger Bands

julia> indic = BBANDS(dfOHLCV, price=:Close)
250x4 DataFrames.DataFrame
│ Row │ Date       │ UpperBand │ MiddleBand │ LowerBand │
├─────┼────────────┼───────────┼────────────┼───────────┤
│ 1   │ 2012-01-03 │ NaN       │ NaN        │ NaN       │
│ 2   │ 2012-01-04 │ NaN       │ NaN        │ NaN       │
│ 3   │ 2012-01-05 │ NaN       │ NaN        │ NaN       │
│ 4   │ 2012-01-06 │ NaN       │ NaN        │ NaN       │
│ 5   │ 2012-01-09 │ NaN       │ NaN        │ NaN       │
│ 6   │ 2012-01-10 │ NaN       │ NaN        │ NaN       │
│ 7   │ 2012-01-11 │ NaN       │ NaN        │ NaN       │
│ 8   │ 2012-01-12 │ NaN       │ NaN        │ NaN       │
│ 9   │ 2012-01-13 │ NaN       │ NaN        │ NaN       │
│ 10  │ 2012-01-17 │ NaN       │ NaN        │ NaN       │
│ 11  │ 2012-01-18 │ NaN       │ NaN        │ NaN       │
│ 12  │ 2012-01-19 │ NaN       │ NaN        │ NaN       │
│ 13  │ 2012-01-20 │ NaN       │ NaN        │ NaN       │
│ 14  │ 2012-01-23 │ NaN       │ NaN        │ NaN       │
│ 15  │ 2012-01-24 │ NaN       │ NaN        │ NaN       │
│ 16  │ 2012-01-25 │ NaN       │ NaN        │ NaN       │
│ 17  │ 2012-01-26 │ NaN       │ NaN        │ NaN       │
│ 18  │ 2012-01-27 │ NaN       │ NaN        │ NaN       │
⋮
│ 232 │ 2012-12-04 │ 11.7437   │ 10.8993    │ 10.055    │
│ 233 │ 2012-12-05 │ 11.7499   │ 10.937     │ 10.1241   │
│ 234 │ 2012-12-06 │ 11.7404   │ 10.9727    │ 10.2049   │
│ 235 │ 2012-12-07 │ 11.7205   │ 11.022     │ 10.3235   │
│ 236 │ 2012-12-10 │ 11.7059   │ 11.0653    │ 10.4247   │
│ 237 │ 2012-12-11 │ 11.7088   │ 11.102     │ 10.4952   │
│ 238 │ 2012-12-12 │ 11.6934   │ 11.139     │ 10.5846   │
│ 239 │ 2012-12-13 │ 11.6991   │ 11.1427    │ 10.5863   │
│ 240 │ 2012-12-14 │ 11.6928   │ 11.1377    │ 10.5825   │
│ 241 │ 2012-12-17 │ 11.7074   │ 11.145     │ 10.5826   │
│ 242 │ 2012-12-18 │ 11.7513   │ 11.159     │ 10.5667   │
│ 243 │ 2012-12-19 │ 11.7896   │ 11.1693    │ 10.549    │
│ 244 │ 2012-12-20 │ 11.848    │ 11.193     │ 10.538    │
│ 245 │ 2012-12-21 │ 11.9126   │ 11.225     │ 10.5374   │
│ 246 │ 2012-12-24 │ 12.0713   │ 11.274     │ 10.4767   │
│ 247 │ 2012-12-26 │ 12.2913   │ 11.3347    │ 10.3781   │
│ 248 │ 2012-12-27 │ 12.4691   │ 11.3933    │ 10.3176   │
│ 249 │ 2012-12-28 │ 12.6315   │ 11.4667    │ 10.3019   │
│ 250 │ 2012-12-31 │ 12.778    │ 11.546     │ 10.314    │

julia> plot(
    dfOHLCV[:Date], dfOHLCV[:Close],
    dfOHLCV[:Date], indic[:UpperBand],
    dfOHLCV[:Date], indic[:MiddleBand],
    dfOHLCV[:Date], indic[:LowerBand],
)

BBANDS

Indicators

An Array containing Symbols of available TA-Lib indicators can be displayed using:

julia> INDICATORS
158-element Array{Symbol,1}:
 :ACOS
 :AD
 :ADD
 :ADOSC
 :ADX
 :ADXR
 :APO
 :AROON
 :AROONOSC
 :ASIN
 :ATAN
 :ATR
 :AVGPRICE
 :BBANDS
 :BETA
 :BOP
 :CCI
 :CDL2CROWS
 :CDL3BLACKCROWS
 ⋮
 :STOCH
 :STOCHF
 :STOCHRSI
 :SUB
 :SUM
 :T3
 :TAN
 :TANH
 :TEMA
 :TRANGE
 :TRIMA
 :TRIX
 :TSF
 :TYPPRICE
 :ULTOSC
 :VAR
 :WCLPRICE
 :WILLR
 :WMA

An OrderedDict containing properties (required parameters, optional parameters, default values...) of available TA-Lib indicators can be displayed using:

julia> D_INDICATORS
DataStructures.OrderedDict{Symbol,Any} with 158 entries:
  :ACOS                => Dict{AbstractString,Any}("GroupId"=>"Math Transform","CamelCaseName"=>"Acos","OutputArguments"=>[Dict{AbstractString,Any}("Flags"=>Dict{AbstractString,Any}("Flag"=>"Line"…
  :AD                  => Dict{AbstractString,Any}("GroupId"=>"Volume Indicators","CamelCaseName"=>"Ad","OutputArguments"=>[Dict{AbstractString,Any}("Flags"=>Dict{AbstractString,Any}("Flag"=>"Line…
  :ADD                 => Dict{AbstractString,Any}("GroupId"=>"Math Operators","CamelCaseName"=>"Add","OutputArguments"=>[Dict{AbstractString,Any}("Flags"=>Dict{AbstractString,Any}("Flag"=>"Line")…
  :ADOSC               => Dict{AbstractString,Any}("GroupId"=>"Volume Indicators","CamelCaseName"=>"AdOsc","OutputArguments"=>[Dict{AbstractString,Any}("Flags"=>Dict{AbstractString,Any}("Flag"=>"L…
  :ADX                 => Dict{AbstractString,Any}("GroupId"=>"Momentum Indicators","Flags"=>Dict{AbstractString,Any}("Flag"=>"Unstable Period"),"CamelCaseName"=>"Adx","OutputArguments"=>[Dict{Abs…
  :ADXR                => Dict{AbstractString,Any}("GroupId"=>"Momentum Indicators","Flags"=>Dict{AbstractString,Any}("Flag"=>"Unstable Period"),"CamelCaseName"=>"Adxr","OutputArguments"=>[Dict{Ab…
  :APO                 => Dict{AbstractString,Any}("GroupId"=>"Momentum Indicators","CamelCaseName"=>"Apo","OutputArguments"=>[Dict{AbstractString,Any}("Flags"=>Dict{AbstractString,Any}("Flag"=>"L…
  :AROON               => Dict{AbstractString,Any}("GroupId"=>"Momentum Indicators","CamelCaseName"=>"Aroon","OutputArguments"=>Any[Dict{AbstractString,Any}("Flags"=>Dict{AbstractString,Any}("Flag…
  :AROONOSC            => Dict{AbstractString,Any}("GroupId"=>"Momentum Indicators","CamelCaseName"=>"AroonOsc","OutputArguments"=>[Dict{AbstractString,Any}("Flags"=>Dict{AbstractString,Any}("Flag…
  :ASIN                => Dict{AbstractString,Any}("GroupId"=>"Math Transform","CamelCaseName"=>"Asin","OutputArguments"=>[Dict{AbstractString,Any}("Flags"=>Dict{AbstractString,Any}("Flag"=>"Line"…
  :ATAN                => Dict{AbstractString,Any}("GroupId"=>"Math Transform","CamelCaseName"=>"Atan","OutputArguments"=>[Dict{AbstractString,Any}("Flags"=>Dict{AbstractString,Any}("Flag"=>"Line"…
  :ATR                 => Dict{AbstractString,Any}("GroupId"=>"Volatility Indicators","Flags"=>Dict{AbstractString,Any}("Flag"=>"Unstable Period"),"CamelCaseName"=>"Atr","OutputArguments"=>[Dict{A…
  :AVGPRICE            => Dict{AbstractString,Any}("GroupId"=>"Price Transform","Flags"=>Dict{AbstractString,Any}("Flag"=>"Overlap"),"CamelCaseName"=>"AvgPrice","OutputArguments"=>[Dict{AbstractSt…
  :BBANDS              => Dict{AbstractString,Any}("GroupId"=>"Overlap Studies","Flags"=>Dict{AbstractString,Any}("Flag"=>"Overlap"),"CamelCaseName"=>"Bbands","OutputArguments"=>Any[Dict{AbstractS…
  :BETA                => Dict{AbstractString,Any}("GroupId"=>"Statistic Functions","CamelCaseName"=>"Beta","OutputArguments"=>[Dict{AbstractString,Any}("Flags"=>Dict{AbstractString,Any}("Flag"=>"…
  :BOP                 => Dict{AbstractString,Any}("GroupId"=>"Momentum Indicators","CamelCaseName"=>"Bop","OutputArguments"=>[Dict{AbstractString,Any}("Flags"=>Dict{AbstractString,Any}("Flag"=>"L…
  :CCI                 => Dict{AbstractString,Any}("GroupId"=>"Momentum Indicators","CamelCaseName"=>"Cci","OutputArguments"=>[Dict{AbstractString,Any}("Flags"=>Dict{AbstractString,Any}("Flag"=>"L…
  :CDL2CROWS           => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"Cdl2Crows","OutputArguments"=>[Dict{A…
  :CDL3BLACKCROWS      => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"Cdl3BlackCrows","OutputArguments"=>[D…
  :CDL3INSIDE          => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"Cdl3Inside","OutputArguments"=>[Dict{…
  :CDL3LINESTRIKE      => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"Cdl3LineStrike","OutputArguments"=>[D…
  :CDL3OUTSIDE         => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"Cdl3Outside","OutputArguments"=>[Dict…
  :CDL3STARSINSOUTH    => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"Cdl3StarsInSouth","OutputArguments"=>…
  :CDL3WHITESOLDIERS   => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"Cdl3WhiteSoldiers","OutputArguments"=…
  :CDLABANDONEDBABY    => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"CdlAbandonedBaby","OutputArguments"=>…
  :CDLADVANCEBLOCK     => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"CdlAdvanceBlock","OutputArguments"=>[…
  :CDLBELTHOLD         => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"CdlBeltHold","OutputArguments"=>[Dict…
  :CDLBREAKAWAY        => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"CdlBreakaway","OutputArguments"=>[Dic…
  :CDLCLOSINGMARUBOZU  => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"CdlClosingMarubozu","OutputArguments"…
  :CDLCONCEALBABYSWALL => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"CdlConcealBabysWall","OutputArguments…
  :CDLCOUNTERATTACK    => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"CdlCounterAttack","OutputArguments"=>…
  :CDLDARKCLOUDCOVER   => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"CdlDarkCloudCover","OutputArguments"=…
  :CDLDOJI             => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"CdlDoji","OutputArguments"=>[Dict{Abs…
  :CDLDOJISTAR         => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"CdlDojiStar","OutputArguments"=>[Dict…
  :CDLDRAGONFLYDOJI    => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"CdlDragonflyDoji","OutputArguments"=>…
  :CDLENGULFING        => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"CdlEngulfing","OutputArguments"=>[Dic…
  :CDLEVENINGDOJISTAR  => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"CdlEveningDojiStar","OutputArguments"…
  :CDLEVENINGSTAR      => Dict{AbstractString,Any}("GroupId"=>"Pattern Recognition","Flags"=>Dict{AbstractString,Any}("Flag"=>"Candlestick"),"CamelCaseName"=>"CdlEveningStar","OutputArguments"=>[D…
  ⋮                    => ⋮

A Dict of functions by group is available using:

julia> D_GROUPS
Dict{ASCIIString,Array{Symbol,1}} with 10 entries:
  "Price Transform"       => [:AVGPRICE,:MEDPRICE,:TYPPRICE,:WCLPRICE]
  "Momentum Indicators"   => [:ADX,:ADXR,:APO,:AROON,:AROONOSC,:BOP,:CCI,:CMO,:DX,:MACD  …  :ROCP,:ROCR,:ROCR100,:RSI,:STOCH,:STOCHF,:STOCHRSI,:TRIX,:ULTOSC,:WILLR]
  "Statistic Functions"   => [:BETA,:CORREL,:LINEARREG,:LINEARREG_ANGLE,:LINEARREG_INTERCEPT,:LINEARREG_SLOPE,:STDDEV,:TSF,:VAR]
  "Volatility Indicators" => [:ATR,:NATR,:TRANGE]
  "Overlap Studies"       => [:BBANDS,:DEMA,:EMA,:HT_TRENDLINE,:KAMA,:MA,:MAMA,:MAVP,:MIDPOINT,:MIDPRICE,:SAR,:SAREXT,:SMA,:T3,:TEMA,:TRIMA,:WMA]
  "Math Transform"        => [:ACOS,:ASIN,:ATAN,:CEIL,:COS,:COSH,:EXP,:FLOOR,:LN,:LOG10,:SIN,:SINH,:SQRT,:TAN,:TANH]
  "Cycle Indicators"      => [:HT_DCPERIOD,:HT_DCPHASE,:HT_PHASOR,:HT_SINE,:HT_TRENDMODE]
  "Pattern Recognition"   => [:CDL2CROWS,:CDL3BLACKCROWS,:CDL3INSIDE,:CDL3LINESTRIKE,:CDL3OUTSIDE,:CDL3STARSINSOUTH,:CDL3WHITESOLDIERS,:CDLABANDONEDBABY,:CDLADVANCEBLOCK,:CDLBELTHOLD  …  :CDLSPINN…
  "Volume Indicators"     => [:AD,:ADOSC,:OBV]
  "Math Operators"        => [:ADD,:DIV,:MAX,:MAXINDEX,:MIN,:MININDEX,:MINMAX,:MINMAXINDEX,:MULT,:SUB,:SUM]

Description of all indicators

for (func, info) in D_INDICATORS
    descr = info["ShortDescription"]
    println("|$func|$descr|")
end

should display

NameShort description
ACOSVector Trigonometric ACos
ADChaikin A/D Line
ADDVector Arithmetic Add
ADOSCChaikin A/D Oscillator
ADXAverage Directional Movement Index
ADXRAverage Directional Movement Index Rating
APOAbsolute Price Oscillator
AROONAroon
AROONOSCAroon Oscillator
ASINVector Trigonometric ASin
ATANVector Trigonometric ATan
ATRAverage True Range
AVGPRICEAverage Price
BBANDSBollinger Bands
BETABeta
BOPBalance Of Power
CCICommodity Channel Index
CDL2CROWSTwo Crows
CDL3BLACKCROWSThree Black Crows
CDL3INSIDEThree Inside Up/Down
CDL3LINESTRIKEThree-Line Strike
CDL3OUTSIDEThree Outside Up/Down
CDL3STARSINSOUTHThree Stars In The South
CDL3WHITESOLDIERSThree Advancing White Soldiers
CDLABANDONEDBABYAbandoned Baby
CDLADVANCEBLOCKAdvance Block
CDLBELTHOLDBelt-hold
CDLBREAKAWAYBreakaway
CDLCLOSINGMARUBOZUClosing Marubozu
CDLCONCEALBABYSWALLConcealing Baby Swallow
CDLCOUNTERATTACKCounterattack
CDLDARKCLOUDCOVERDark Cloud Cover
CDLDOJIDoji
CDLDOJISTARDoji Star
CDLDRAGONFLYDOJIDragonfly Doji
CDLENGULFINGEngulfing Pattern
CDLEVENINGDOJISTAREvening Doji Star
CDLEVENINGSTAREvening Star
CDLGAPSIDESIDEWHITEUp/Down-gap side-by-side white lines
CDLGRAVESTONEDOJIGravestone Doji
CDLHAMMERHammer
CDLHANGINGMANHanging Man
CDLHARAMIHarami Pattern
CDLHARAMICROSSHarami Cross Pattern
CDLHIGHWAVEHigh-Wave Candle
CDLHIKKAKEHikkake Pattern
CDLHIKKAKEMODModified Hikkake Pattern
CDLHOMINGPIGEONHoming Pigeon
CDLIDENTICAL3CROWSIdentical Three Crows
CDLINNECKIn-Neck Pattern
CDLINVERTEDHAMMERInverted Hammer
CDLKICKINGKicking
CDLKICKINGBYLENGTHKicking - bull/bear determined by the longer marubozu
CDLLADDERBOTTOMLadder Bottom
CDLLONGLEGGEDDOJILong Legged Doji
CDLLONGLINELong Line Candle
CDLMARUBOZUMarubozu
CDLMATCHINGLOWMatching Low
CDLMATHOLDMat Hold
CDLMORNINGDOJISTARMorning Doji Star
CDLMORNINGSTARMorning Star
CDLONNECKOn-Neck Pattern
CDLPIERCINGPiercing Pattern
CDLRICKSHAWMANRickshaw Man
CDLRISEFALL3METHODSRising/Falling Three Methods
CDLSEPARATINGLINESSeparating Lines
CDLSHOOTINGSTARShooting Star
CDLSHORTLINEShort Line Candle
CDLSPINNINGTOPSpinning Top
CDLSTALLEDPATTERNStalled Pattern
CDLSTICKSANDWICHStick Sandwich
CDLTAKURITakuri (Dragonfly Doji with very long lower shadow)
CDLTASUKIGAPTasuki Gap
CDLTHRUSTINGThrusting Pattern
CDLTRISTARTristar Pattern
CDLUNIQUE3RIVERUnique 3 River
CDLUPSIDEGAP2CROWSUpside Gap Two Crows
CDLXSIDEGAP3METHODSUpside/Downside Gap Three Methods
CEILVector Ceil
CMOChande Momentum Oscillator
CORRELPearson's Correlation Coefficient (r)
COSVector Trigonometric Cos
COSHVector Trigonometric Cosh
DEMADouble Exponential Moving Average
DIVVector Arithmetic Div
DXDirectional Movement Index
EMAExponential Moving Average
EXPVector Arithmetic Exp
FLOORVector Floor
HT_DCPERIODHilbert Transform - Dominant Cycle Period
HT_DCPHASEHilbert Transform - Dominant Cycle Phase
HT_PHASORHilbert Transform - Phasor Components
HT_SINEHilbert Transform - SineWave
HT_TRENDLINEHilbert Transform - Instantaneous Trendline
HT_TRENDMODEHilbert Transform - Trend vs Cycle Mode
KAMAKaufman Adaptive Moving Average
LINEARREGLinear Regression
LINEARREG_ANGLELinear Regression Angle
LINEARREG_INTERCEPTLinear Regression Intercept
LINEARREG_SLOPELinear Regression Slope
LNVector Log Natural
LOG10Vector Log10
MAMoving average
MACDMoving Average Convergence/Divergence
MACDEXTMACD with controllable MA type
MACDFIXMoving Average Convergence/Divergence Fix 12/26
MAMAMESA Adaptive Moving Average
MAVPMoving average with variable period
MAXHighest value over a specified period
MAXINDEXIndex of highest value over a specified period
MEDPRICEMedian Price
MFIMoney Flow Index
MIDPOINTMidPoint over period
MIDPRICEMidpoint Price over period
MINLowest value over a specified period
MININDEXIndex of lowest value over a specified period
MINMAXLowest and highest values over a specified period
MINMAXINDEXIndexes of lowest and highest values over a specified period
MINUS_DIMinus Directional Indicator
MINUS_DMMinus Directional Movement
MOMMomentum
MULTVector Arithmetic Mult
NATRNormalized Average True Range
OBVOn Balance Volume
PLUS_DIPlus Directional Indicator
PLUS_DMPlus Directional Movement
PPOPercentage Price Oscillator
ROCRate of change : ((price/prevPrice)-1)*100
ROCPRate of change Percentage: (price-prevPrice)/prevPrice
ROCRRate of change ratio: (price/prevPrice)
ROCR100Rate of change ratio 100 scale: (price/prevPrice)*100
RSIRelative Strength Index
SARParabolic SAR
SAREXTParabolic SAR - Extended
SINVector Trigonometric Sin
SINHVector Trigonometric Sinh
SMASimple Moving Average
SQRTVector Square Root
STDDEVStandard Deviation
STOCHStochastic
STOCHFStochastic Fast
STOCHRSIStochastic Relative Strength Index
SUBVector Arithmetic Substraction
SUMSummation
T3Triple Exponential Moving Average (T3)
TANVector Trigonometric Tan
TANHVector Trigonometric Tanh
TEMATriple Exponential Moving Average
TRANGETrue Range
TRIMATriangular Moving Average
TRIX1-day Rate-Of-Change (ROC) of a Triple Smooth EMA
TSFTime Series Forecast
TYPPRICETypical Price
ULTOSCUltimate Oscillator
VARVariance
WCLPRICEWeighted Close Price
WILLRWilliams' %R
WMAWeighted Moving Average

Development

See discussion and roadmap here: