From 3f3c3dde88743a95caf7e5d59076faacf510dba3 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Sun, 3 May 2015 17:29:26 -0700 Subject: [PATCH 1/7] Update gh-pages. --- abstract.html | 142 +++++++++ doc_index.html | 72 +++++ func.html | 97 ++++++ func_groups/cycle_indicators.html | 93 ++++++ func_groups/math_operators.html | 119 +++++++ func_groups/math_transform.html | 143 +++++++++ func_groups/momentum_indicators.html | 289 +++++++++++++++++ func_groups/overlap_studies.html | 183 +++++++++++ func_groups/pattern_recognition.html | 419 +++++++++++++++++++++++++ func_groups/price_transform.html | 85 +++++ func_groups/statistic_functions.html | 125 ++++++++ func_groups/volatility_indicators.html | 77 +++++ func_groups/volume_indicators.html | 77 +++++ funcs.html | 283 +++++++++++++++++ index.html | 349 ++++++++++++++++++++ install.html | 107 +++++++ 16 files changed, 2660 insertions(+) create mode 100644 abstract.html create mode 100644 doc_index.html create mode 100644 func.html create mode 100644 func_groups/cycle_indicators.html create mode 100644 func_groups/math_operators.html create mode 100644 func_groups/math_transform.html create mode 100644 func_groups/momentum_indicators.html create mode 100644 func_groups/overlap_studies.html create mode 100644 func_groups/pattern_recognition.html create mode 100644 func_groups/price_transform.html create mode 100644 func_groups/statistic_functions.html create mode 100644 func_groups/volatility_indicators.html create mode 100644 func_groups/volume_indicators.html create mode 100644 funcs.html create mode 100644 index.html create mode 100644 install.html diff --git a/abstract.html b/abstract.html new file mode 100644 index 000000000..99f03ff88 --- /dev/null +++ b/abstract.html @@ -0,0 +1,142 @@ + + + + + + + + + TA-Lib + + + +
+
+ Browse TA-Lib on GitHub +
+ +
+
+

TA-Lib

+

Python wrapper for TA-Lib (http://ta-lib.org/).

+
+ Download this project as a .zip file + Download this project as a tar.gz file +
+
+
+ + +
+
+Abstract API Quick Start + +

If you're already familiar with using the function API, you should feel right +at home using the abstract API. Every function takes the same input, passed +as a dictionary of Numpy arrays:

+ +
import numpy as np
+# note that all ndarrays must be the same length!
+inputs = {
+    'open': np.random.random(100),
+    'high': np.random.random(100),
+    'low': np.random.random(100),
+    'close': np.random.random(100),
+    'volume': np.random.random(100)
+}
+ +

Functions can either be imported directly or instantiated by name:

+ +
from talib import abstract
+sma = abstract.SMA
+sma = abstract.Function('sma')
+ +

From there, calling functions is basically the same as the function API:

+ +
from talib.abstract import *
+output = SMA(input_arrays, timeperiod=25) # calculate on close prices by default
+output = SMA(input_arrays, timeperiod=25, price='open') # calculate on opens
+upper, middle, lower = BBANDS(input_arrays, 20, 2, 2)
+slowk, slowd = STOCH(input_arrays, 5, 3, 0, 3, 0) # uses high, low, close by default
+slowk, slowd = STOCH(input_arrays, 5, 3, 0, 3, 0, prices=['high', 'low', 'open'])
+ +

+Advanced Usage

+ +

For more advanced use cases of TA-Lib, the Abstract API also offers much more +flexibility. You can even subclass abstract.Function and override +set_input_arrays to customize the type of input data Function accepts +(e.g. a pandas DataFrame).

+ +

Details about every function can be accessed via the info property:

+ +
print Function('stoch').info
+{
+  'name': 'STOCH',
+  'display_name': 'Stochastic',
+  'group': 'Momentum Indicators',
+  'input_names': OrderedDict([
+    ('prices', ['high', 'low', 'close']),
+  ]),
+  'parameters': OrderedDict([
+    ('fastk_period', 5),
+    ('slowk_period', 3),
+    ('slowk_matype', 0),
+    ('slowd_period', 3),
+    ('slowd_matype', 0),
+  ]),
+  'output_names': ['slowk', 'slowd'],
+}
+
+ +

Or in human-readable format:

+ +
help(STOCH)
+str(STOCH)
+ +

Other useful properties of Function:

+ +
Function('x').function_flags
+Function('x').input_names
+Function('x').input_arrays
+Function('x').parameters
+Function('x').lookback
+Function('x').output_names
+Function('x').output_flags
+Function('x').outputs
+ +

Aside from calling the function directly, Functions maintain state and will +remember their parameters/input_arrays after they've been set. You can set +parameters and recalculate with new input data using run():

+ +
SMA.parameters = {'timeperiod': 15}
+result1 = SMA.run(input_arrays1)
+result2 = SMA.run(input_arrays2)
+
+# Or set input_arrays and change the parameters:
+SMA.input_arrays = input_arrays1
+ma10 = SMA(timeperiod=10)
+ma20 = SMA(20)
+ +

For more details, take a look at the +code.

+ +

Documentation Index

+
+ + + + + + diff --git a/doc_index.html b/doc_index.html new file mode 100644 index 000000000..7be8a70ed --- /dev/null +++ b/doc_index.html @@ -0,0 +1,72 @@ + + + + + + + + + TA-Lib + + + +
+
+ Browse TA-Lib on GitHub +
+ +
+
+

TA-Lib

+

Python wrapper for TA-Lib (http://ta-lib.org/).

+
+ Download this project as a .zip file + Download this project as a tar.gz file +
+
+
+ + +
+
+Documentation + +
+
+ + + + + + diff --git a/func.html b/func.html new file mode 100644 index 000000000..96a4c7da6 --- /dev/null +++ b/func.html @@ -0,0 +1,97 @@ + + + + + + + + + TA-Lib + + + +
+
+ Browse TA-Lib on GitHub +
+ +
+
+

TA-Lib

+

Python wrapper for TA-Lib (http://ta-lib.org/).

+
+ Download this project as a .zip file + Download this project as a tar.gz file +
+
+
+ + +
+
+Function API Examples + +

Similar to TA-Lib, the function interface provides a lightweight wrapper of +the exposed TA-Lib indicators.

+ +

Each function returns an output array and have default values for their +parameters, unless specified as keyword arguments. Typically, these functions +will have an initial "lookback" period (a required number of observations +before an output is generated) set to NaN.

+ +

All of the following examples use the function API:

+ +
import numpy
+import talib
+
+close = numpy.random.random(100)
+ +

Calculate a simple moving average of the close prices:

+ +
output = talib.SMA(close)
+ +

Calculating bollinger bands, with triple exponential moving average:

+ +
from talib import MA_Type
+
+upper, middle, lower = talib.BBANDS(close, matype=MA_Type.T3)
+ +

Calculating momentum of the close prices, with a time period of 5:

+ +
output = talib.MOM(close, timeperiod=5)
+ +

Documentation for all functions:

+ + + +

Documentation Index +Next: Using the Abstract API

+
+ + + + + + diff --git a/func_groups/cycle_indicators.html b/func_groups/cycle_indicators.html new file mode 100644 index 000000000..e73777793 --- /dev/null +++ b/func_groups/cycle_indicators.html @@ -0,0 +1,93 @@ + + + + + + + + + TA-Lib + + + +
+
+ Browse TA-Lib on GitHub +
+ +
+
+

TA-Lib

+

Python wrapper for TA-Lib (http://ta-lib.org/).

+
+ Download this project as a .zip file + Download this project as a tar.gz file +
+
+
+ + +
+
+Cycle Indicator Functions + +

+HT_DCPERIOD - Hilbert Transform - Dominant Cycle Period

+ +
real = HT_DCPERIOD(close)
+
+ +

Learn more about the Hilbert Transform - Dominant Cycle Period at tadoc.org.

+ +

+HT_DCPHASE - Hilbert Transform - Dominant Cycle Phase

+ +
real = HT_DCPHASE(close)
+
+ +

Learn more about the Hilbert Transform - Dominant Cycle Phase at tadoc.org.

+ +

+HT_PHASOR - Hilbert Transform - Phasor Components

+ +
inphase, quadrature = HT_PHASOR(close)
+
+ +

Learn more about the Hilbert Transform - Phasor Components at tadoc.org.

+ +

+HT_SINE - Hilbert Transform - SineWave

+ +
sine, leadsine = HT_SINE(close)
+
+ +

Learn more about the Hilbert Transform - SineWave at tadoc.org.

+ +

+HT_TRENDMODE - Hilbert Transform - Trend vs Cycle Mode

+ +
integer = HT_TRENDMODE(close)
+
+ +

Learn more about the Hilbert Transform - Trend vs Cycle Mode at tadoc.org.

+ +

Documentation Index +All Function Groups

+
+ + + + + + diff --git a/func_groups/math_operators.html b/func_groups/math_operators.html new file mode 100644 index 000000000..40f1994b2 --- /dev/null +++ b/func_groups/math_operators.html @@ -0,0 +1,119 @@ + + + + + + + + + TA-Lib + + + +
+
+ Browse TA-Lib on GitHub +
+ +
+
+

TA-Lib

+

Python wrapper for TA-Lib (http://ta-lib.org/).

+
+ Download this project as a .zip file + Download this project as a tar.gz file +
+
+
+ + +
+
+Math Operator Functions + +

+ADD - Vector Arithmetic Add

+ +
real = ADD(high, low)
+
+ +

+DIV - Vector Arithmetic Div

+ +
real = DIV(high, low)
+
+ +

+MAX - Highest value over a specified period

+ +
real = MAX(close, timeperiod=30)
+
+ +

+MAXINDEX - Index of highest value over a specified period

+ +
integer = MAXINDEX(close, timeperiod=30)
+
+ +

+MIN - Lowest value over a specified period

+ +
real = MIN(close, timeperiod=30)
+
+ +

+MININDEX - Index of lowest value over a specified period

+ +
integer = MININDEX(close, timeperiod=30)
+
+ +

+MINMAX - Lowest and highest values over a specified period

+ +
min, max = MINMAX(close, timeperiod=30)
+
+ +

+MINMAXINDEX - Indexes of lowest and highest values over a specified period

+ +
minidx, maxidx = MINMAXINDEX(close, timeperiod=30)
+
+ +

+MULT - Vector Arithmetic Mult

+ +
real = MULT(high, low)
+
+ +

+SUB - Vector Arithmetic Substraction

+ +
real = SUB(high, low)
+
+ +

+SUM - Summation

+ +
real = SUM(close, timeperiod=30)
+
+ +

Documentation Index +All Function Groups

+
+ + + + + + diff --git a/func_groups/math_transform.html b/func_groups/math_transform.html new file mode 100644 index 000000000..b49679982 --- /dev/null +++ b/func_groups/math_transform.html @@ -0,0 +1,143 @@ + + + + + + + + + TA-Lib + + + +
+
+ Browse TA-Lib on GitHub +
+ +
+
+

TA-Lib

+

Python wrapper for TA-Lib (http://ta-lib.org/).

+
+ Download this project as a .zip file + Download this project as a tar.gz file +
+
+
+ + +
+
+Math Transform Functions + +

+ACOS - Vector Trigonometric ACos

+ +
real = ACOS(close)
+
+ +

+ASIN - Vector Trigonometric ASin

+ +
real = ASIN(close)
+
+ +

+ATAN - Vector Trigonometric ATan

+ +
real = ATAN(close)
+
+ +

+CEIL - Vector Ceil

+ +
real = CEIL(close)
+
+ +

+COS - Vector Trigonometric Cos

+ +
real = COS(close)
+
+ +

+COSH - Vector Trigonometric Cosh

+ +
real = COSH(close)
+
+ +

+EXP - Vector Arithmetic Exp

+ +
real = EXP(close)
+
+ +

+FLOOR - Vector Floor

+ +
real = FLOOR(close)
+
+ +

+LN - Vector Log Natural

+ +
real = LN(close)
+
+ +

+LOG10 - Vector Log10

+ +
real = LOG10(close)
+
+ +

+SIN - Vector Trigonometric Sin

+ +
real = SIN(close)
+
+ +

+SINH - Vector Trigonometric Sinh

+ +
real = SINH(close)
+
+ +

+SQRT - Vector Square Root

+ +
real = SQRT(close)
+
+ +

+TAN - Vector Trigonometric Tan

+ +
real = TAN(close)
+
+ +

+TANH - Vector Trigonometric Tanh

+ +
real = TANH(close)
+
+ +

Documentation Index +All Function Groups

+
+ + + + + + diff --git a/func_groups/momentum_indicators.html b/func_groups/momentum_indicators.html new file mode 100644 index 000000000..dc55865aa --- /dev/null +++ b/func_groups/momentum_indicators.html @@ -0,0 +1,289 @@ + + + + + + + + + TA-Lib + + + +
+
+ Browse TA-Lib on GitHub +
+ +
+
+

TA-Lib

+

Python wrapper for TA-Lib (http://ta-lib.org/).

+
+ Download this project as a .zip file + Download this project as a tar.gz file +
+
+
+ + +
+
+Momentum Indicator Functions + +

+ADX - Average Directional Movement Index

+ +
real = ADX(high, low, close, timeperiod=14)
+
+ +

Learn more about the Average Directional Movement Index at tadoc.org.

+ +

+ADXR - Average Directional Movement Index Rating

+ +
real = ADXR(high, low, close, timeperiod=14)
+
+ +

Learn more about the Average Directional Movement Index Rating at tadoc.org.

+ +

+APO - Absolute Price Oscillator

+ +
real = APO(close, fastperiod=12, slowperiod=26, matype=0)
+
+ +

Learn more about the Absolute Price Oscillator at tadoc.org.

+ +

+AROON - Aroon

+ +
aroondown, aroonup = AROON(high, low, timeperiod=14)
+
+ +

Learn more about the Aroon at tadoc.org.

+ +

+AROONOSC - Aroon Oscillator

+ +
real = AROONOSC(high, low, timeperiod=14)
+
+ +

Learn more about the Aroon Oscillator at tadoc.org.

+ +

+BOP - Balance Of Power

+ +
real = BOP(open, high, low, close)
+
+ +

Learn more about the Balance Of Power at tadoc.org.

+ +

+CCI - Commodity Channel Index

+ +
real = CCI(high, low, close, timeperiod=14)
+
+ +

Learn more about the Commodity Channel Index at tadoc.org.

+ +

+CMO - Chande Momentum Oscillator

+ +
real = CMO(close, timeperiod=14)
+
+ +

Learn more about the Chande Momentum Oscillator at tadoc.org.

+ +

+DX - Directional Movement Index

+ +
real = DX(high, low, close, timeperiod=14)
+
+ +

Learn more about the Directional Movement Index at tadoc.org.

+ +

+MACD - Moving Average Convergence/Divergence

+ +
macd, macdsignal, macdhist = MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)
+
+ +

Learn more about the Moving Average Convergence/Divergence at tadoc.org.

+ +

+MACDEXT - MACD with controllable MA type

+ +
macd, macdsignal, macdhist = MACDEXT(close, fastperiod=12, fastmatype=0, slowperiod=26, slowmatype=0, signalperiod=9, signalmatype=0)
+
+ +

+MACDFIX - Moving Average Convergence/Divergence Fix 12/26

+ +
macd, macdsignal, macdhist = MACDFIX(close, signalperiod=9)
+
+ +

+MFI - Money Flow Index

+ +
real = MFI(high, low, close, volume, timeperiod=14)
+
+ +

Learn more about the Money Flow Index at tadoc.org.

+ +

+MINUS_DI - Minus Directional Indicator

+ +
real = MINUS_DI(high, low, close, timeperiod=14)
+
+ +

Learn more about the Minus Directional Indicator at tadoc.org.

+ +

+MINUS_DM - Minus Directional Movement

+ +
real = MINUS_DM(high, low, timeperiod=14)
+
+ +

Learn more about the Minus Directional Movement at tadoc.org.

+ +

+MOM - Momentum

+ +
real = MOM(close, timeperiod=10)
+
+ +

Learn more about the Momentum at tadoc.org.

+ +

+PLUS_DI - Plus Directional Indicator

+ +
real = PLUS_DI(high, low, close, timeperiod=14)
+
+ +

Learn more about the Plus Directional Indicator at tadoc.org.

+ +

+PLUS_DM - Plus Directional Movement

+ +
real = PLUS_DM(high, low, timeperiod=14)
+
+ +

Learn more about the Plus Directional Movement at tadoc.org.

+ +

+PPO - Percentage Price Oscillator

+ +
real = PPO(close, fastperiod=12, slowperiod=26, matype=0)
+
+ +

Learn more about the Percentage Price Oscillator at tadoc.org.

+ +

+ROC - Rate of change : ((price/prevPrice)-1)*100

+ +
real = ROC(close, timeperiod=10)
+
+ +

Learn more about the Rate of change : ((price/prevPrice)-1)*100 at tadoc.org.

+ +

+ROCP - Rate of change Percentage: (price-prevPrice)/prevPrice

+ +
real = ROCP(close, timeperiod=10)
+
+ +

Learn more about the Rate of change Percentage: (price-prevPrice)/prevPrice at tadoc.org.

+ +

+ROCR - Rate of change ratio: (price/prevPrice)

+ +
real = ROCR(close, timeperiod=10)
+
+ +

Learn more about the Rate of change ratio: (price/prevPrice) at tadoc.org.

+ +

+ROCR100 - Rate of change ratio 100 scale: (price/prevPrice)*100

+ +
real = ROCR100(close, timeperiod=10)
+
+ +

Learn more about the Rate of change ratio 100 scale: (price/prevPrice)*100 at tadoc.org.

+ +

+RSI - Relative Strength Index

+ +
real = RSI(close, timeperiod=14)
+
+ +

Learn more about the Relative Strength Index at tadoc.org.

+ +

+STOCH - Stochastic

+ +
slowk, slowd = STOCH(high, low, close, fastk_period=5, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)
+
+ +

Learn more about the Stochastic at tadoc.org.

+ +

+STOCHF - Stochastic Fast

+ +
fastk, fastd = STOCHF(high, low, close, fastk_period=5, fastd_period=3, fastd_matype=0)
+
+ +

Learn more about the Stochastic Fast at tadoc.org.

+ +

+STOCHRSI - Stochastic Relative Strength Index

+ +
fastk, fastd = STOCHRSI(close, timeperiod=14, fastk_period=5, fastd_period=3, fastd_matype=0)
+
+ +

Learn more about the Stochastic Relative Strength Index at tadoc.org.

+ +

+TRIX - 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA

+ +
real = TRIX(close, timeperiod=30)
+
+ +

Learn more about the 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA at tadoc.org.

+ +

+ULTOSC - Ultimate Oscillator

+ +
real = ULTOSC(high, low, close, timeperiod1=7, timeperiod2=14, timeperiod3=28)
+
+ +

Learn more about the Ultimate Oscillator at tadoc.org.

+ +

+WILLR - Williams' %R

+ +
real = WILLR(high, low, close, timeperiod=14)
+
+ +

Learn more about the Williams' %R at tadoc.org.

+ +

Documentation Index +All Function Groups

+
+ + + + + + diff --git a/func_groups/overlap_studies.html b/func_groups/overlap_studies.html new file mode 100644 index 000000000..d76e878bd --- /dev/null +++ b/func_groups/overlap_studies.html @@ -0,0 +1,183 @@ + + + + + + + + + TA-Lib + + + +
+
+ Browse TA-Lib on GitHub +
+ +
+
+

TA-Lib

+

Python wrapper for TA-Lib (http://ta-lib.org/).

+
+ Download this project as a .zip file + Download this project as a tar.gz file +
+
+
+ + +
+
+Overlap Studies Functions + +

+BBANDS - Bollinger Bands

+ +
upperband, middleband, lowerband = BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)
+
+ +

Learn more about the Bollinger Bands at tadoc.org.

+ +

+DEMA - Double Exponential Moving Average

+ +
real = DEMA(close, timeperiod=30)
+
+ +

Learn more about the Double Exponential Moving Average at tadoc.org.

+ +

+EMA - Exponential Moving Average

+ +
real = EMA(close, timeperiod=30)
+
+ +

Learn more about the Exponential Moving Average at tadoc.org.

+ +

+HT_TRENDLINE - Hilbert Transform - Instantaneous Trendline

+ +
real = HT_TRENDLINE(close)
+
+ +

Learn more about the Hilbert Transform - Instantaneous Trendline at tadoc.org.

+ +

+KAMA - Kaufman Adaptive Moving Average

+ +
real = KAMA(close, timeperiod=30)
+
+ +

Learn more about the Kaufman Adaptive Moving Average at tadoc.org.

+ +

+MA - Moving average

+ +
real = MA(close, timeperiod=30, matype=0)
+
+ +

+MAMA - MESA Adaptive Moving Average

+ +
mama, fama = MAMA(close, fastlimit=0, slowlimit=0)
+
+ +

Learn more about the MESA Adaptive Moving Average at tadoc.org.

+ +

+MAVP - Moving average with variable period

+ +
real = MAVP(close, periods, minperiod=2, maxperiod=30, matype=0)
+
+ +

+MIDPOINT - MidPoint over period

+ +
real = MIDPOINT(close, timeperiod=14)
+
+ +

Learn more about the MidPoint over period at tadoc.org.

+ +

+MIDPRICE - Midpoint Price over period

+ +
real = MIDPRICE(high, low, timeperiod=14)
+
+ +

Learn more about the Midpoint Price over period at tadoc.org.

+ +

+SAR - Parabolic SAR

+ +
real = SAR(high, low, acceleration=0, maximum=0)
+
+ +

Learn more about the Parabolic SAR at tadoc.org.

+ +

+SAREXT - Parabolic SAR - Extended

+ +
real = SAREXT(high, low, startvalue=0, offsetonreverse=0, accelerationinitlong=0, accelerationlong=0, accelerationmaxlong=0, accelerationinitshort=0, accelerationshort=0, accelerationmaxshort=0)
+
+ +

+SMA - Simple Moving Average

+ +
real = SMA(close, timeperiod=30)
+
+ +

Learn more about the Simple Moving Average at tadoc.org.

+ +

+T3 - Triple Exponential Moving Average (T3)

+ +
real = T3(close, timeperiod=5, vfactor=0)
+
+ +

Learn more about the Triple Exponential Moving Average (T3) at tadoc.org.

+ +

+TEMA - Triple Exponential Moving Average

+ +
real = TEMA(close, timeperiod=30)
+
+ +

Learn more about the Triple Exponential Moving Average at tadoc.org.

+ +

+TRIMA - Triangular Moving Average

+ +
real = TRIMA(close, timeperiod=30)
+
+ +

Learn more about the Triangular Moving Average at tadoc.org.

+ +

+WMA - Weighted Moving Average

+ +
real = WMA(close, timeperiod=30)
+
+ +

Learn more about the Weighted Moving Average at tadoc.org.

+ +

Documentation Index +All Function Groups

+
+ + + + + + diff --git a/func_groups/pattern_recognition.html b/func_groups/pattern_recognition.html new file mode 100644 index 000000000..1fca19174 --- /dev/null +++ b/func_groups/pattern_recognition.html @@ -0,0 +1,419 @@ + + + + + + + + + TA-Lib + + + +
+
+ Browse TA-Lib on GitHub +
+ +
+
+

TA-Lib

+

Python wrapper for TA-Lib (http://ta-lib.org/).

+
+ Download this project as a .zip file + Download this project as a tar.gz file +
+
+
+ + +
+
+Pattern Recognition Functions + +

+CDL2CROWS - Two Crows

+ +
integer = CDL2CROWS(open, high, low, close)
+
+ +

+CDL3BLACKCROWS - Three Black Crows

+ +
integer = CDL3BLACKCROWS(open, high, low, close)
+
+ +

+CDL3INSIDE - Three Inside Up/Down

+ +
integer = CDL3INSIDE(open, high, low, close)
+
+ +

+CDL3LINESTRIKE - Three-Line Strike

+ +
integer = CDL3LINESTRIKE(open, high, low, close)
+
+ +

+CDL3OUTSIDE - Three Outside Up/Down

+ +
integer = CDL3OUTSIDE(open, high, low, close)
+
+ +

+CDL3STARSINSOUTH - Three Stars In The South

+ +
integer = CDL3STARSINSOUTH(open, high, low, close)
+
+ +

+CDL3WHITESOLDIERS - Three Advancing White Soldiers

+ +
integer = CDL3WHITESOLDIERS(open, high, low, close)
+
+ +

+CDLABANDONEDBABY - Abandoned Baby

+ +
integer = CDLABANDONEDBABY(open, high, low, close, penetration=0)
+
+ +

+CDLADVANCEBLOCK - Advance Block

+ +
integer = CDLADVANCEBLOCK(open, high, low, close)
+
+ +

+CDLBELTHOLD - Belt-hold

+ +
integer = CDLBELTHOLD(open, high, low, close)
+
+ +

+CDLBREAKAWAY - Breakaway

+ +
integer = CDLBREAKAWAY(open, high, low, close)
+
+ +

+CDLCLOSINGMARUBOZU - Closing Marubozu

+ +
integer = CDLCLOSINGMARUBOZU(open, high, low, close)
+
+ +

+CDLCONCEALBABYSWALL - Concealing Baby Swallow

+ +
integer = CDLCONCEALBABYSWALL(open, high, low, close)
+
+ +

+CDLCOUNTERATTACK - Counterattack

+ +
integer = CDLCOUNTERATTACK(open, high, low, close)
+
+ +

+CDLDARKCLOUDCOVER - Dark Cloud Cover

+ +
integer = CDLDARKCLOUDCOVER(open, high, low, close, penetration=0)
+
+ +

+CDLDOJI - Doji

+ +
integer = CDLDOJI(open, high, low, close)
+
+ +

+CDLDOJISTAR - Doji Star

+ +
integer = CDLDOJISTAR(open, high, low, close)
+
+ +

+CDLDRAGONFLYDOJI - Dragonfly Doji

+ +
integer = CDLDRAGONFLYDOJI(open, high, low, close)
+
+ +

+CDLENGULFING - Engulfing Pattern

+ +
integer = CDLENGULFING(open, high, low, close)
+
+ +

+CDLEVENINGDOJISTAR - Evening Doji Star

+ +
integer = CDLEVENINGDOJISTAR(open, high, low, close, penetration=0)
+
+ +

+CDLEVENINGSTAR - Evening Star

+ +
integer = CDLEVENINGSTAR(open, high, low, close, penetration=0)
+
+ +

+CDLGAPSIDESIDEWHITE - Up/Down-gap side-by-side white lines

+ +
integer = CDLGAPSIDESIDEWHITE(open, high, low, close)
+
+ +

+CDLGRAVESTONEDOJI - Gravestone Doji

+ +
integer = CDLGRAVESTONEDOJI(open, high, low, close)
+
+ +

+CDLHAMMER - Hammer

+ +
integer = CDLHAMMER(open, high, low, close)
+
+ +

+CDLHANGINGMAN - Hanging Man

+ +
integer = CDLHANGINGMAN(open, high, low, close)
+
+ +

+CDLHARAMI - Harami Pattern

+ +
integer = CDLHARAMI(open, high, low, close)
+
+ +

+CDLHARAMICROSS - Harami Cross Pattern

+ +
integer = CDLHARAMICROSS(open, high, low, close)
+
+ +

+CDLHIGHWAVE - High-Wave Candle

+ +
integer = CDLHIGHWAVE(open, high, low, close)
+
+ +

+CDLHIKKAKE - Hikkake Pattern

+ +
integer = CDLHIKKAKE(open, high, low, close)
+
+ +

+CDLHIKKAKEMOD - Modified Hikkake Pattern

+ +
integer = CDLHIKKAKEMOD(open, high, low, close)
+
+ +

+CDLHOMINGPIGEON - Homing Pigeon

+ +
integer = CDLHOMINGPIGEON(open, high, low, close)
+
+ +

+CDLIDENTICAL3CROWS - Identical Three Crows

+ +
integer = CDLIDENTICAL3CROWS(open, high, low, close)
+
+ +

+CDLINNECK - In-Neck Pattern

+ +
integer = CDLINNECK(open, high, low, close)
+
+ +

+CDLINVERTEDHAMMER - Inverted Hammer

+ +
integer = CDLINVERTEDHAMMER(open, high, low, close)
+
+ +

+CDLKICKING - Kicking

+ +
integer = CDLKICKING(open, high, low, close)
+
+ +

+CDLKICKINGBYLENGTH - Kicking - bull/bear determined by the longer marubozu

+ +
integer = CDLKICKINGBYLENGTH(open, high, low, close)
+
+ +

+CDLLADDERBOTTOM - Ladder Bottom

+ +
integer = CDLLADDERBOTTOM(open, high, low, close)
+
+ +

+CDLLONGLEGGEDDOJI - Long Legged Doji

+ +
integer = CDLLONGLEGGEDDOJI(open, high, low, close)
+
+ +

+CDLLONGLINE - Long Line Candle

+ +
integer = CDLLONGLINE(open, high, low, close)
+
+ +

+CDLMARUBOZU - Marubozu

+ +
integer = CDLMARUBOZU(open, high, low, close)
+
+ +

+CDLMATCHINGLOW - Matching Low

+ +
integer = CDLMATCHINGLOW(open, high, low, close)
+
+ +

+CDLMATHOLD - Mat Hold

+ +
integer = CDLMATHOLD(open, high, low, close, penetration=0)
+
+ +

+CDLMORNINGDOJISTAR - Morning Doji Star

+ +
integer = CDLMORNINGDOJISTAR(open, high, low, close, penetration=0)
+
+ +

+CDLMORNINGSTAR - Morning Star

+ +
integer = CDLMORNINGSTAR(open, high, low, close, penetration=0)
+
+ +

+CDLONNECK - On-Neck Pattern

+ +
integer = CDLONNECK(open, high, low, close)
+
+ +

+CDLPIERCING - Piercing Pattern

+ +
integer = CDLPIERCING(open, high, low, close)
+
+ +

+CDLRICKSHAWMAN - Rickshaw Man

+ +
integer = CDLRICKSHAWMAN(open, high, low, close)
+
+ +

+CDLRISEFALL3METHODS - Rising/Falling Three Methods

+ +
integer = CDLRISEFALL3METHODS(open, high, low, close)
+
+ +

+CDLSEPARATINGLINES - Separating Lines

+ +
integer = CDLSEPARATINGLINES(open, high, low, close)
+
+ +

+CDLSHOOTINGSTAR - Shooting Star

+ +
integer = CDLSHOOTINGSTAR(open, high, low, close)
+
+ +

+CDLSHORTLINE - Short Line Candle

+ +
integer = CDLSHORTLINE(open, high, low, close)
+
+ +

+CDLSPINNINGTOP - Spinning Top

+ +
integer = CDLSPINNINGTOP(open, high, low, close)
+
+ +

+CDLSTALLEDPATTERN - Stalled Pattern

+ +
integer = CDLSTALLEDPATTERN(open, high, low, close)
+
+ +

+CDLSTICKSANDWICH - Stick Sandwich

+ +
integer = CDLSTICKSANDWICH(open, high, low, close)
+
+ +

+CDLTAKURI - Takuri (Dragonfly Doji with very long lower shadow)

+ +
integer = CDLTAKURI(open, high, low, close)
+
+ +

+CDLTASUKIGAP - Tasuki Gap

+ +
integer = CDLTASUKIGAP(open, high, low, close)
+
+ +

+CDLTHRUSTING - Thrusting Pattern

+ +
integer = CDLTHRUSTING(open, high, low, close)
+
+ +

+CDLTRISTAR - Tristar Pattern

+ +
integer = CDLTRISTAR(open, high, low, close)
+
+ +

+CDLUNIQUE3RIVER - Unique 3 River

+ +
integer = CDLUNIQUE3RIVER(open, high, low, close)
+
+ +

+CDLUPSIDEGAP2CROWS - Upside Gap Two Crows

+ +
integer = CDLUPSIDEGAP2CROWS(open, high, low, close)
+
+ +

+CDLXSIDEGAP3METHODS - Upside/Downside Gap Three Methods

+ +
integer = CDLXSIDEGAP3METHODS(open, high, low, close)
+
+ +

Documentation Index +All Function Groups

+
+ + + + + + diff --git a/func_groups/price_transform.html b/func_groups/price_transform.html new file mode 100644 index 000000000..c3bce1bbb --- /dev/null +++ b/func_groups/price_transform.html @@ -0,0 +1,85 @@ + + + + + + + + + TA-Lib + + + +
+
+ Browse TA-Lib on GitHub +
+ +
+
+

TA-Lib

+

Python wrapper for TA-Lib (http://ta-lib.org/).

+
+ Download this project as a .zip file + Download this project as a tar.gz file +
+
+
+ + +
+
+Price Transform Functions + +

+AVGPRICE - Average Price

+ +
real = AVGPRICE(open, high, low, close)
+
+ +

Learn more about the Average Price at tadoc.org.

+ +

+MEDPRICE - Median Price

+ +
real = MEDPRICE(high, low)
+
+ +

Learn more about the Median Price at tadoc.org.

+ +

+TYPPRICE - Typical Price

+ +
real = TYPPRICE(high, low, close)
+
+ +

Learn more about the Typical Price at tadoc.org.

+ +

+WCLPRICE - Weighted Close Price

+ +
real = WCLPRICE(high, low, close)
+
+ +

Learn more about the Weighted Close Price at tadoc.org.

+ +

Documentation Index +All Function Groups

+
+ + + + + + diff --git a/func_groups/statistic_functions.html b/func_groups/statistic_functions.html new file mode 100644 index 000000000..2caacbdbc --- /dev/null +++ b/func_groups/statistic_functions.html @@ -0,0 +1,125 @@ + + + + + + + + + TA-Lib + + + +
+
+ Browse TA-Lib on GitHub +
+ +
+
+

TA-Lib

+

Python wrapper for TA-Lib (http://ta-lib.org/).

+
+ Download this project as a .zip file + Download this project as a tar.gz file +
+
+
+ + +
+
+Statistic Functions + +

+BETA - Beta

+ +
real = BETA(high, low, timeperiod=5)
+
+ +

Learn more about the Beta at tadoc.org.

+ +

+CORREL - Pearson's Correlation Coefficient (r)

+ +
real = CORREL(high, low, timeperiod=30)
+
+ +

Learn more about the Pearson's Correlation Coefficient (r) at tadoc.org.

+ +

+LINEARREG - Linear Regression

+ +
real = LINEARREG(close, timeperiod=14)
+
+ +

Learn more about the Linear Regression at tadoc.org.

+ +

+LINEARREG_ANGLE - Linear Regression Angle

+ +
real = LINEARREG_ANGLE(close, timeperiod=14)
+
+ +

Learn more about the Linear Regression Angle at tadoc.org.

+ +

+LINEARREG_INTERCEPT - Linear Regression Intercept

+ +
real = LINEARREG_INTERCEPT(close, timeperiod=14)
+
+ +

Learn more about the Linear Regression Intercept at tadoc.org.

+ +

+LINEARREG_SLOPE - Linear Regression Slope

+ +
real = LINEARREG_SLOPE(close, timeperiod=14)
+
+ +

Learn more about the Linear Regression Slope at tadoc.org.

+ +

+STDDEV - Standard Deviation

+ +
real = STDDEV(close, timeperiod=5, nbdev=1)
+
+ +

Learn more about the Standard Deviation at tadoc.org.

+ +

+TSF - Time Series Forecast

+ +
real = TSF(close, timeperiod=14)
+
+ +

Learn more about the Time Series Forecast at tadoc.org.

+ +

+VAR - Variance

+ +
real = VAR(close, timeperiod=5, nbdev=1)
+
+ +

Learn more about the Variance at tadoc.org.

+ +

Documentation Index +All Function Groups

+
+ + + + + + diff --git a/func_groups/volatility_indicators.html b/func_groups/volatility_indicators.html new file mode 100644 index 000000000..c558940f8 --- /dev/null +++ b/func_groups/volatility_indicators.html @@ -0,0 +1,77 @@ + + + + + + + + + TA-Lib + + + +
+
+ Browse TA-Lib on GitHub +
+ +
+
+

TA-Lib

+

Python wrapper for TA-Lib (http://ta-lib.org/).

+
+ Download this project as a .zip file + Download this project as a tar.gz file +
+
+
+ + +
+
+Volatility Indicator Functions + +

+ATR - Average True Range

+ +
real = ATR(high, low, close, timeperiod=14)
+
+ +

Learn more about the Average True Range at tadoc.org.

+ +

+NATR - Normalized Average True Range

+ +
real = NATR(high, low, close, timeperiod=14)
+
+ +

Learn more about the Normalized Average True Range at tadoc.org.

+ +

+TRANGE - True Range

+ +
real = TRANGE(high, low, close)
+
+ +

Learn more about the True Range at tadoc.org.

+ +

Documentation Index +All Function Groups

+
+ + + + + + diff --git a/func_groups/volume_indicators.html b/func_groups/volume_indicators.html new file mode 100644 index 000000000..b7a9303ab --- /dev/null +++ b/func_groups/volume_indicators.html @@ -0,0 +1,77 @@ + + + + + + + + + TA-Lib + + + +
+
+ Browse TA-Lib on GitHub +
+ +
+
+

TA-Lib

+

Python wrapper for TA-Lib (http://ta-lib.org/).

+
+ Download this project as a .zip file + Download this project as a tar.gz file +
+
+
+ + +
+
+Volume Indicator Functions + +

+AD - Chaikin A/D Line

+ +
real = AD(high, low, close, volume)
+
+ +

Learn more about the Chaikin A/D Line at tadoc.org.

+ +

+ADOSC - Chaikin A/D Oscillator

+ +
real = ADOSC(high, low, close, volume, fastperiod=3, slowperiod=10)
+
+ +

Learn more about the Chaikin A/D Oscillator at tadoc.org.

+ +

+OBV - On Balance Volume

+ +
real = OBV(volume)
+
+ +

Learn more about the On Balance Volume at tadoc.org.

+ +

Documentation Index +All Function Groups

+
+ + + + + + diff --git a/funcs.html b/funcs.html new file mode 100644 index 000000000..7fb74b6ef --- /dev/null +++ b/funcs.html @@ -0,0 +1,283 @@ + + + + + + + + + TA-Lib + + + +
+
+ Browse TA-Lib on GitHub +
+ +
+
+

TA-Lib

+

Python wrapper for TA-Lib (http://ta-lib.org/).

+
+ Download this project as a .zip file + Download this project as a tar.gz file +
+
+
+ + +
+
+All Supported Indicators and Functions + + + +

+Overlap Studies +

+ +
BBANDS               Bollinger Bands
+DEMA                 Double Exponential Moving Average
+EMA                  Exponential Moving Average
+HT_TRENDLINE         Hilbert Transform - Instantaneous Trendline
+KAMA                 Kaufman Adaptive Moving Average
+MA                   Moving average
+MAMA                 MESA Adaptive Moving Average
+MAVP                 Moving average with variable period
+MIDPOINT             MidPoint over period
+MIDPRICE             Midpoint Price over period
+SAR                  Parabolic SAR
+SAREXT               Parabolic SAR - Extended
+SMA                  Simple Moving Average
+T3                   Triple Exponential Moving Average (T3)
+TEMA                 Triple Exponential Moving Average
+TRIMA                Triangular Moving Average
+WMA                  Weighted Moving Average
+
+ +

+Momentum Indicators +

+ +
ADX                  Average Directional Movement Index
+ADXR                 Average Directional Movement Index Rating
+APO                  Absolute Price Oscillator
+AROON                Aroon
+AROONOSC             Aroon Oscillator
+BOP                  Balance Of Power
+CCI                  Commodity Channel Index
+CMO                  Chande Momentum Oscillator
+DX                   Directional Movement Index
+MACD                 Moving Average Convergence/Divergence
+MACDEXT              MACD with controllable MA type
+MACDFIX              Moving Average Convergence/Divergence Fix 12/26
+MFI                  Money Flow Index
+MINUS_DI             Minus Directional Indicator
+MINUS_DM             Minus Directional Movement
+MOM                  Momentum
+PLUS_DI              Plus Directional Indicator
+PLUS_DM              Plus Directional Movement
+PPO                  Percentage Price Oscillator
+ROC                  Rate of change : ((price/prevPrice)-1)*100
+ROCP                 Rate of change Percentage: (price-prevPrice)/prevPrice
+ROCR                 Rate of change ratio: (price/prevPrice)
+ROCR100              Rate of change ratio 100 scale: (price/prevPrice)*100
+RSI                  Relative Strength Index
+STOCH                Stochastic
+STOCHF               Stochastic Fast
+STOCHRSI             Stochastic Relative Strength Index
+TRIX                 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA
+ULTOSC               Ultimate Oscillator
+WILLR                Williams' %R
+
+ +

+Volume Indicators +

+ +
AD                   Chaikin A/D Line
+ADOSC                Chaikin A/D Oscillator
+OBV                  On Balance Volume
+
+ +

+Cycle Indicators +

+ +
HT_DCPERIOD          Hilbert Transform - Dominant Cycle Period
+HT_DCPHASE           Hilbert Transform - Dominant Cycle Phase
+HT_PHASOR            Hilbert Transform - Phasor Components
+HT_SINE              Hilbert Transform - SineWave
+HT_TRENDMODE         Hilbert Transform - Trend vs Cycle Mode
+
+ +

+Price Transform +

+ +
AVGPRICE             Average Price
+MEDPRICE             Median Price
+TYPPRICE             Typical Price
+WCLPRICE             Weighted Close Price
+
+ +

+Volatility Indicators +

+ +
ATR                  Average True Range
+NATR                 Normalized Average True Range
+TRANGE               True Range
+
+ +

+Pattern Recognition +

+ +
CDL2CROWS            Two Crows
+CDL3BLACKCROWS       Three Black Crows
+CDL3INSIDE           Three Inside Up/Down
+CDL3LINESTRIKE       Three-Line Strike
+CDL3OUTSIDE          Three Outside Up/Down
+CDL3STARSINSOUTH     Three Stars In The South
+CDL3WHITESOLDIERS    Three Advancing White Soldiers
+CDLABANDONEDBABY     Abandoned Baby
+CDLADVANCEBLOCK      Advance Block
+CDLBELTHOLD          Belt-hold
+CDLBREAKAWAY         Breakaway
+CDLCLOSINGMARUBOZU   Closing Marubozu
+CDLCONCEALBABYSWALL  Concealing Baby Swallow
+CDLCOUNTERATTACK     Counterattack
+CDLDARKCLOUDCOVER    Dark Cloud Cover
+CDLDOJI              Doji
+CDLDOJISTAR          Doji Star
+CDLDRAGONFLYDOJI     Dragonfly Doji
+CDLENGULFING         Engulfing Pattern
+CDLEVENINGDOJISTAR   Evening Doji Star
+CDLEVENINGSTAR       Evening Star
+CDLGAPSIDESIDEWHITE  Up/Down-gap side-by-side white lines
+CDLGRAVESTONEDOJI    Gravestone Doji
+CDLHAMMER            Hammer
+CDLHANGINGMAN        Hanging Man
+CDLHARAMI            Harami Pattern
+CDLHARAMICROSS       Harami Cross Pattern
+CDLHIGHWAVE          High-Wave Candle
+CDLHIKKAKE           Hikkake Pattern
+CDLHIKKAKEMOD        Modified Hikkake Pattern
+CDLHOMINGPIGEON      Homing Pigeon
+CDLIDENTICAL3CROWS   Identical Three Crows
+CDLINNECK            In-Neck Pattern
+CDLINVERTEDHAMMER    Inverted Hammer
+CDLKICKING           Kicking
+CDLKICKINGBYLENGTH   Kicking - bull/bear determined by the longer marubozu
+CDLLADDERBOTTOM      Ladder Bottom
+CDLLONGLEGGEDDOJI    Long Legged Doji
+CDLLONGLINE          Long Line Candle
+CDLMARUBOZU          Marubozu
+CDLMATCHINGLOW       Matching Low
+CDLMATHOLD           Mat Hold
+CDLMORNINGDOJISTAR   Morning Doji Star
+CDLMORNINGSTAR       Morning Star
+CDLONNECK            On-Neck Pattern
+CDLPIERCING          Piercing Pattern
+CDLRICKSHAWMAN       Rickshaw Man
+CDLRISEFALL3METHODS  Rising/Falling Three Methods
+CDLSEPARATINGLINES   Separating Lines
+CDLSHOOTINGSTAR      Shooting Star
+CDLSHORTLINE         Short Line Candle
+CDLSPINNINGTOP       Spinning Top
+CDLSTALLEDPATTERN    Stalled Pattern
+CDLSTICKSANDWICH     Stick Sandwich
+CDLTAKURI            Takuri (Dragonfly Doji with very long lower shadow)
+CDLTASUKIGAP         Tasuki Gap
+CDLTHRUSTING         Thrusting Pattern
+CDLTRISTAR           Tristar Pattern
+CDLUNIQUE3RIVER      Unique 3 River
+CDLUPSIDEGAP2CROWS   Upside Gap Two Crows
+CDLXSIDEGAP3METHODS  Upside/Downside Gap Three Methods
+
+ +

+Statistic Functions +

+ +
BETA                 Beta
+CORREL               Pearson's Correlation Coefficient (r)
+LINEARREG            Linear Regression
+LINEARREG_ANGLE      Linear Regression Angle
+LINEARREG_INTERCEPT  Linear Regression Intercept
+LINEARREG_SLOPE      Linear Regression Slope
+STDDEV               Standard Deviation
+TSF                  Time Series Forecast
+VAR                  Variance
+
+ +

+Math Transform +

+ +
ACOS                 Vector Trigonometric ACos
+ASIN                 Vector Trigonometric ASin
+ATAN                 Vector Trigonometric ATan
+CEIL                 Vector Ceil
+COS                  Vector Trigonometric Cos
+COSH                 Vector Trigonometric Cosh
+EXP                  Vector Arithmetic Exp
+FLOOR                Vector Floor
+LN                   Vector Log Natural
+LOG10                Vector Log10
+SIN                  Vector Trigonometric Sin
+SINH                 Vector Trigonometric Sinh
+SQRT                 Vector Square Root
+TAN                  Vector Trigonometric Tan
+TANH                 Vector Trigonometric Tanh
+
+ +

+Math Operators +

+ +
ADD                  Vector Arithmetic Add
+DIV                  Vector Arithmetic Div
+MAX                  Highest value over a specified period
+MAXINDEX             Index of highest value over a specified period
+MIN                  Lowest value over a specified period
+MININDEX             Index of lowest value over a specified period
+MINMAX               Lowest and highest values over a specified period
+MINMAXINDEX          Indexes of lowest and highest values over a specified period
+MULT                 Vector Arithmetic Mult
+SUB                  Vector Arithmetic Substraction
+SUM                  Summation
+
+ +

Documentation Index

+
+ + + + + + diff --git a/index.html b/index.html new file mode 100644 index 000000000..4cd19d562 --- /dev/null +++ b/index.html @@ -0,0 +1,349 @@ + + + + + + + + + TA-Lib + + + +
+
+ Browse TA-Lib on GitHub +
+ +
+
+

TA-Lib

+

Python wrapper for TA-Lib (http://ta-lib.org/).

+
+ Download this project as a .zip file + Download this project as a tar.gz file +
+
+
+ + +
+
+About + +

This is a Python wrapper for TA-LIB based on Cython +instead of SWIG. From the homepage:

+ +
+

TA-Lib is widely used by trading software developers requiring to perform +technical analysis of financial market data.

+ +
    +
  • Includes 150+ indicators such as ADX, MACD, RSI, Stochastic, Bollinger +Bands, etc.
  • +
  • Candlestick pattern recognition
  • +
  • Open-source API for C/C++, Java, Perl, Python and 100% Managed .NET
  • +
+
+ +

The original Python bindings use SWIG which unfortunately +are difficult to install and aren't as efficient as they could be. Therefore +this project uses Cython and Numpy to efficiently and cleanly bind to TA-Lib +-- producing results 2-4 times faster than the SWIG interface.

+ +

+ +Install TA-Lib or Read the Docs +

+ +

+Examples

+ +

Similar to TA-Lib, the function interface provides a lightweight wrapper of +the exposed TA-Lib indicators.

+ +

Each function returns an output array and have default values for their +parameters, unless specified as keyword arguments. Typically, these functions +will have an initial "lookback" period (a required number of observations +before an output is generated) set to NaN.

+ +

All of the following examples use the function API:

+ +
import numpy
+import talib
+
+close = numpy.random.random(100)
+ +

Calculate a simple moving average of the close prices:

+ +
output = talib.SMA(close)
+ +

Calculating bollinger bands, with triple exponential moving average:

+ +
from talib import MA_Type
+
+upper, middle, lower = talib.BBANDS(close, matype=MA_Type.T3)
+ +

Calculating momentum of the close prices, with a time period of 5:

+ +
output = talib.MOM(close, timeperiod=5)
+ +

+Abstract API Quick Start

+ +

If you're already familiar with using the function API, you should feel right +at home using the abstract API. Every function takes the same input, passed +as a dictionary of Numpy arrays:

+ +
import numpy as np
+# note that all ndarrays must be the same length!
+inputs = {
+    'open': np.random.random(100),
+    'high': np.random.random(100),
+    'low': np.random.random(100),
+    'close': np.random.random(100),
+    'volume': np.random.random(100)
+}
+ +

Functions can either be imported directly or instantiated by name:

+ +
from talib import abstract
+sma = abstract.SMA
+sma = abstract.Function('sma')
+ +

From there, calling functions is basically the same as the function API:

+ +
from talib.abstract import *
+output = SMA(input_arrays, timeperiod=25) # calculate on close prices by default
+output = SMA(input_arrays, timeperiod=25, price='open') # calculate on opens
+upper, middle, lower = BBANDS(input_arrays, 20, 2, 2)
+slowk, slowd = STOCH(input_arrays, 5, 3, 0, 3, 0) # uses high, low, close by default
+slowk, slowd = STOCH(input_arrays, 5, 3, 0, 3, 0, prices=['high', 'low', 'open'])
+ +

Learn about more advanced usage of TA-Lib here.

+ +

+Supported Indicators

+ +

We can show all the TA functions supported by TA-Lib, either as a list or +as a dict sorted by group (e.g. "Overlap Studies", "Momentum Indicators", +etc):

+ +
import talib
+
+print talib.get_functions()
+print talib.get_function_groups()
+ +

+Function Groups

+ + + +

+Overlap Studies +

+ +
BBANDS               Bollinger Bands
+DEMA                 Double Exponential Moving Average
+EMA                  Exponential Moving Average
+HT_TRENDLINE         Hilbert Transform - Instantaneous Trendline
+KAMA                 Kaufman Adaptive Moving Average
+MA                   Moving average
+MAMA                 MESA Adaptive Moving Average
+MAVP                 Moving average with variable period
+MIDPOINT             MidPoint over period
+MIDPRICE             Midpoint Price over period
+SAR                  Parabolic SAR
+SAREXT               Parabolic SAR - Extended
+SMA                  Simple Moving Average
+T3                   Triple Exponential Moving Average (T3)
+TEMA                 Triple Exponential Moving Average
+TRIMA                Triangular Moving Average
+WMA                  Weighted Moving Average
+
+ +

+Momentum Indicators +

+ +
ADX                  Average Directional Movement Index
+ADXR                 Average Directional Movement Index Rating
+APO                  Absolute Price Oscillator
+AROON                Aroon
+AROONOSC             Aroon Oscillator
+BOP                  Balance Of Power
+CCI                  Commodity Channel Index
+CMO                  Chande Momentum Oscillator
+DX                   Directional Movement Index
+MACD                 Moving Average Convergence/Divergence
+MACDEXT              MACD with controllable MA type
+MACDFIX              Moving Average Convergence/Divergence Fix 12/26
+MFI                  Money Flow Index
+MINUS_DI             Minus Directional Indicator
+MINUS_DM             Minus Directional Movement
+MOM                  Momentum
+PLUS_DI              Plus Directional Indicator
+PLUS_DM              Plus Directional Movement
+PPO                  Percentage Price Oscillator
+ROC                  Rate of change : ((price/prevPrice)-1)*100
+ROCP                 Rate of change Percentage: (price-prevPrice)/prevPrice
+ROCR                 Rate of change ratio: (price/prevPrice)
+ROCR100              Rate of change ratio 100 scale: (price/prevPrice)*100
+RSI                  Relative Strength Index
+STOCH                Stochastic
+STOCHF               Stochastic Fast
+STOCHRSI             Stochastic Relative Strength Index
+TRIX                 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA
+ULTOSC               Ultimate Oscillator
+WILLR                Williams' %R
+
+ +

+Volume Indicators +

+ +
AD                   Chaikin A/D Line
+ADOSC                Chaikin A/D Oscillator
+OBV                  On Balance Volume
+
+ +

+Volatility Indicators +

+ +
ATR                  Average True Range
+NATR                 Normalized Average True Range
+TRANGE               True Range
+
+ +

+Price Transform +

+ +
AVGPRICE             Average Price
+MEDPRICE             Median Price
+TYPPRICE             Typical Price
+WCLPRICE             Weighted Close Price
+
+ +

+Cycle Indicators +

+ +
HT_DCPERIOD          Hilbert Transform - Dominant Cycle Period
+HT_DCPHASE           Hilbert Transform - Dominant Cycle Phase
+HT_PHASOR            Hilbert Transform - Phasor Components
+HT_SINE              Hilbert Transform - SineWave
+HT_TRENDMODE         Hilbert Transform - Trend vs Cycle Mode
+
+ +

+Pattern Recognition +

+ +
CDL2CROWS            Two Crows
+CDL3BLACKCROWS       Three Black Crows
+CDL3INSIDE           Three Inside Up/Down
+CDL3LINESTRIKE       Three-Line Strike
+CDL3OUTSIDE          Three Outside Up/Down
+CDL3STARSINSOUTH     Three Stars In The South
+CDL3WHITESOLDIERS    Three Advancing White Soldiers
+CDLABANDONEDBABY     Abandoned Baby
+CDLADVANCEBLOCK      Advance Block
+CDLBELTHOLD          Belt-hold
+CDLBREAKAWAY         Breakaway
+CDLCLOSINGMARUBOZU   Closing Marubozu
+CDLCONCEALBABYSWALL  Concealing Baby Swallow
+CDLCOUNTERATTACK     Counterattack
+CDLDARKCLOUDCOVER    Dark Cloud Cover
+CDLDOJI              Doji
+CDLDOJISTAR          Doji Star
+CDLDRAGONFLYDOJI     Dragonfly Doji
+CDLENGULFING         Engulfing Pattern
+CDLEVENINGDOJISTAR   Evening Doji Star
+CDLEVENINGSTAR       Evening Star
+CDLGAPSIDESIDEWHITE  Up/Down-gap side-by-side white lines
+CDLGRAVESTONEDOJI    Gravestone Doji
+CDLHAMMER            Hammer
+CDLHANGINGMAN        Hanging Man
+CDLHARAMI            Harami Pattern
+CDLHARAMICROSS       Harami Cross Pattern
+CDLHIGHWAVE          High-Wave Candle
+CDLHIKKAKE           Hikkake Pattern
+CDLHIKKAKEMOD        Modified Hikkake Pattern
+CDLHOMINGPIGEON      Homing Pigeon
+CDLIDENTICAL3CROWS   Identical Three Crows
+CDLINNECK            In-Neck Pattern
+CDLINVERTEDHAMMER    Inverted Hammer
+CDLKICKING           Kicking
+CDLKICKINGBYLENGTH   Kicking - bull/bear determined by the longer marubozu
+CDLLADDERBOTTOM      Ladder Bottom
+CDLLONGLEGGEDDOJI    Long Legged Doji
+CDLLONGLINE          Long Line Candle
+CDLMARUBOZU          Marubozu
+CDLMATCHINGLOW       Matching Low
+CDLMATHOLD           Mat Hold
+CDLMORNINGDOJISTAR   Morning Doji Star
+CDLMORNINGSTAR       Morning Star
+CDLONNECK            On-Neck Pattern
+CDLPIERCING          Piercing Pattern
+CDLRICKSHAWMAN       Rickshaw Man
+CDLRISEFALL3METHODS  Rising/Falling Three Methods
+CDLSEPARATINGLINES   Separating Lines
+CDLSHOOTINGSTAR      Shooting Star
+CDLSHORTLINE         Short Line Candle
+CDLSPINNINGTOP       Spinning Top
+CDLSTALLEDPATTERN    Stalled Pattern
+CDLSTICKSANDWICH     Stick Sandwich
+CDLTAKURI            Takuri (Dragonfly Doji with very long lower shadow)
+CDLTASUKIGAP         Tasuki Gap
+CDLTHRUSTING         Thrusting Pattern
+CDLTRISTAR           Tristar Pattern
+CDLUNIQUE3RIVER      Unique 3 River
+CDLUPSIDEGAP2CROWS   Upside Gap Two Crows
+CDLXSIDEGAP3METHODS  Upside/Downside Gap Three Methods
+
+ +

+Statistic Functions +

+ +
BETA                 Beta
+CORREL               Pearson's Correlation Coefficient (r)
+LINEARREG            Linear Regression
+LINEARREG_ANGLE      Linear Regression Angle
+LINEARREG_INTERCEPT  Linear Regression Intercept
+LINEARREG_SLOPE      Linear Regression Slope
+STDDEV               Standard Deviation
+TSF                  Time Series Forecast
+VAR                  Variance
+
+
+ + + + + + diff --git a/install.html b/install.html new file mode 100644 index 000000000..e16e0e14d --- /dev/null +++ b/install.html @@ -0,0 +1,107 @@ + + + + + + + + + TA-Lib + + + +
+
+ Browse TA-Lib on GitHub +
+ +
+
+

TA-Lib

+

Python wrapper for TA-Lib (http://ta-lib.org/).

+
+ Download this project as a .zip file + Download this project as a tar.gz file +
+
+
+ + +
+
+Installation + +

You can install from PyPI:

+ +
$ pip install TA-Lib
+
+ +

Or checkout the sources and run setup.py yourself:

+ +
$ python setup.py install
+
+ +

+Troubleshooting Install Errors

+ +
func.c:256:28: fatal error: ta-lib/ta_libc.h: No such file or directory
+compilation terminated.
+
+ +

If you get build errors like this, it typically means that it can't find the +underlying TA-Lib library and needs to be installed:

+ +

+Dependencies

+ +

To use TA-Lib for python, you need to have the TA-Lib +already installed:

+ +

+Mac OS X

+ +
$ brew install ta-lib
+
+ +

+Windows

+ +

Download ta-lib-0.4.0-msvc.zip +and unzip to C:\ta-lib

+ +

+Linux

+ +

Download ta-lib-0.4.0-src.tar.gz and:

+ +
$ untar and cd
+$ ./configure --prefix=/usr
+$ make
+$ sudo make install
+
+ +
+

If you build TA-Lib using make -jX it will fail but that's OK! +Simply rerun make -jX followed by [sudo] make install.

+
+ +

Documentation Index +Next: Using the Function API

+
+ + + + + + From c8e3c4cdf22eec4b945d3409b2c071299deb29cc Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Sun, 3 May 2015 17:31:10 -0700 Subject: [PATCH 2/7] adding stylesheet. --- stylesheets/stylesheet.css | 429 +++++++++++++++++++++++++++++++++++++ 1 file changed, 429 insertions(+) create mode 100644 stylesheets/stylesheet.css diff --git a/stylesheets/stylesheet.css b/stylesheets/stylesheet.css new file mode 100644 index 000000000..bfc79143e --- /dev/null +++ b/stylesheets/stylesheet.css @@ -0,0 +1,429 @@ +/******************************************************************************* +Slate Theme for Github Pages +by Jason Costello, @jsncostello +*******************************************************************************/ + +@import url(pygment_trac.css); + +/******************************************************************************* +MeyerWeb Reset +*******************************************************************************/ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; +} + +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} + +ol, ul { + list-style: none; +} + +blockquote, q { +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +a:focus { + outline: none; +} + +/******************************************************************************* +Theme Styles +*******************************************************************************/ + +body { + box-sizing: border-box; + color:#373737; + background: #212121; + font-size: 16px; + font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif; + line-height: 1.5; + -webkit-font-smoothing: antialiased; +} + +h1, h2, h3, h4, h5, h6 { + margin: 10px 0; + font-weight: 700; + color:#222222; + font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif; + letter-spacing: -1px; +} + +h1 { + font-size: 36px; + font-weight: 700; +} + +h2 { + padding-bottom: 10px; + font-size: 32px; + background: url('../images/bg_hr.png') repeat-x bottom; +} + +h3 { + font-size: 24px; +} + +h4 { + font-size: 21px; +} + +h5 { + font-size: 18px; +} + +h6 { + font-size: 16px; +} + +p { + margin: 10px 0 15px 0; +} + +footer p { + color: #f2f2f2; +} + +a { + text-decoration: none; + color: #007edf; + text-shadow: none; + + transition: color 0.5s ease; + transition: text-shadow 0.5s ease; + -moz-transition: color 0.5s ease; + -moz-transition: text-shadow 0.5s ease; + -o-transition: color 0.5s ease; + -o-transition: text-shadow 0.5s ease; + -ms-transition: color 0.5s ease; + -ms-transition: text-shadow 0.5s ease; +} + +#main_content a:hover { + color: #0069ba; + text-shadow: #0090ff 0px 0px 2px; +} + +footer a:hover { + color: #43adff; + text-shadow: #0090ff 0px 0px 2px; +} + +em { + font-style: italic; +} + +strong { + font-weight: bold; +} + +img { + position: relative; + margin: 0 auto; + max-width: 739px; + padding: 5px; + margin: 10px 0 10px 0; + border: 1px solid #ebebeb; + + box-shadow: 0 0 5px #ebebeb; + -webkit-box-shadow: 0 0 5px #ebebeb; + -moz-box-shadow: 0 0 5px #ebebeb; + -o-box-shadow: 0 0 5px #ebebeb; + -ms-box-shadow: 0 0 5px #ebebeb; +} + +pre, code { + width: 100%; + color: #222; + background-color: #fff; + + font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; + font-size: 14px; + + border-radius: 2px; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + + + +} + +pre { + width: 100%; + padding: 10px; + box-shadow: 0 0 10px rgba(0,0,0,.1); + overflow: auto; +} + +code { + padding: 3px; + margin: 0 3px; + box-shadow: 0 0 10px rgba(0,0,0,.1); +} + +pre code { + display: block; + box-shadow: none; +} + +blockquote { + color: #666; + margin-bottom: 20px; + padding: 0 0 0 20px; + border-left: 3px solid #bbb; +} + +ul, ol, dl { + margin-bottom: 15px +} + +ul li { + list-style: inside; + padding-left: 20px; +} + +ol li { + list-style: decimal inside; + padding-left: 20px; +} + +dl dt { + font-weight: bold; +} + +dl dd { + padding-left: 20px; + font-style: italic; +} + +dl p { + padding-left: 20px; + font-style: italic; +} + +hr { + height: 1px; + margin-bottom: 5px; + border: none; + background: url('../images/bg_hr.png') repeat-x center; +} + +table { + border: 1px solid #373737; + margin-bottom: 20px; + text-align: left; + } + +th { + font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif; + padding: 10px; + background: #373737; + color: #fff; + } + +td { + padding: 10px; + border: 1px solid #373737; + } + +form { + background: #f2f2f2; + padding: 20px; +} + +img { + width: 100%; + max-width: 100%; +} + +/******************************************************************************* +Full-Width Styles +*******************************************************************************/ + +.outer { + width: 100%; +} + +.inner { + position: relative; + max-width: 640px; + padding: 20px 10px; + margin: 0 auto; +} + +#forkme_banner { + display: block; + position: absolute; + top:0; + right: 10px; + z-index: 10; + padding: 10px 50px 10px 10px; + color: #fff; + background: url('../images/blacktocat.png') #0090ff no-repeat 95% 50%; + font-weight: 700; + box-shadow: 0 0 10px rgba(0,0,0,.5); + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; +} + +#header_wrap { + background: #212121; + background: -moz-linear-gradient(top, #373737, #212121); + background: -webkit-linear-gradient(top, #373737, #212121); + background: -ms-linear-gradient(top, #373737, #212121); + background: -o-linear-gradient(top, #373737, #212121); + background: linear-gradient(top, #373737, #212121); +} + +#header_wrap .inner { + padding: 50px 10px 30px 10px; +} + +#project_title { + margin: 0; + color: #fff; + font-size: 42px; + font-weight: 700; + text-shadow: #111 0px 0px 10px; +} + +#project_tagline { + color: #fff; + font-size: 24px; + font-weight: 300; + background: none; + text-shadow: #111 0px 0px 10px; +} + +#downloads { + position: absolute; + width: 210px; + z-index: 10; + bottom: -40px; + right: 0; + height: 70px; + background: url('../images/icon_download.png') no-repeat 0% 90%; +} + +.zip_download_link { + display: block; + float: right; + width: 90px; + height:70px; + text-indent: -5000px; + overflow: hidden; + background: url(../images/sprite_download.png) no-repeat bottom left; +} + +.tar_download_link { + display: block; + float: right; + width: 90px; + height:70px; + text-indent: -5000px; + overflow: hidden; + background: url(../images/sprite_download.png) no-repeat bottom right; + margin-left: 10px; +} + +.zip_download_link:hover { + background: url(../images/sprite_download.png) no-repeat top left; +} + +.tar_download_link:hover { + background: url(../images/sprite_download.png) no-repeat top right; +} + +#main_content_wrap { + background: #f2f2f2; + border-top: 1px solid #111; + border-bottom: 1px solid #111; +} + +#main_content { + padding-top: 40px; +} + +#footer_wrap { + background: #212121; +} + + + +/******************************************************************************* +Small Device Styles +*******************************************************************************/ + +@media screen and (max-width: 480px) { + body { + font-size:14px; + } + + #downloads { + display: none; + } + + .inner { + min-width: 320px; + max-width: 480px; + } + + #project_title { + font-size: 32px; + } + + h1 { + font-size: 28px; + } + + h2 { + font-size: 24px; + } + + h3 { + font-size: 21px; + } + + h4 { + font-size: 18px; + } + + h5 { + font-size: 14px; + } + + h6 { + font-size: 12px; + } + + code, pre { + min-width: 320px; + max-width: 480px; + font-size: 11px; + } + +} From 6359e4e1db49b9ee251edff76a1b9b9e48a6b6ca Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Sun, 3 May 2015 17:38:06 -0700 Subject: [PATCH 3/7] more resources. --- images/bg_hr.png | Bin 0 -> 943 bytes images/blacktocat.png | Bin 0 -> 1428 bytes images/icon_download.png | Bin 0 -> 1162 bytes images/sprite_download.png | Bin 0 -> 16799 bytes stylesheets/pygment_trac.css | 70 +++++++++++++++++++++++++++++++++++ 5 files changed, 70 insertions(+) create mode 100644 images/bg_hr.png create mode 100644 images/blacktocat.png create mode 100644 images/icon_download.png create mode 100644 images/sprite_download.png create mode 100644 stylesheets/pygment_trac.css diff --git a/images/bg_hr.png b/images/bg_hr.png new file mode 100644 index 0000000000000000000000000000000000000000..7973bd69888c7e10ccad1111d555ceabb7cd99b6 GIT binary patch literal 943 zcmaJ=O^ee&7!FiK7FWCot{@Ck@nrMW&tx0B-6VAbrk1u~FTzffX&bu9#AIsIdef8t z!QZfdz=K}>3m(LO;6X3qN}Y6@>cJYA%)G<%Jn!ec>9im1@7>wsIBwrMF}iHO!q%;8 zSJ@xEd~(FL18NRvkBsOXMVM>4WQc*~qcQGc17IjxRnj!O_^B1gan0x#EWT48PK->5B2>mI;LIx zC*FSw$Nfc!g)WZCEOJ=mM)}lLsOk|$ltg_(&ax_YCWMlBLPDVT%D_gB7o_$YZ`-OB z#1sV%whRq21>W;qwN$N?OUGtQQe;JvOsQrna;+v+j8dth=*?orHHb6waX>S!yXCgT zo!oR3{E&GzaOAzfZYv@_Sf{LdyJInS>TS60&R9%yCs$y>2x(*gYIJtRrYAja$Ceq} z!N&oc_K1!3-Ft`U>`CM;quEbB4KG%!MovB*9_3!QzFhqHwrbwK|Doo-y>auDJNSP6 T=d)j*_4El@X4^PFK7I8YBT*xD literal 0 HcmV?d00001 diff --git a/images/blacktocat.png b/images/blacktocat.png new file mode 100644 index 0000000000000000000000000000000000000000..6e264fe57a2e35a2855405ac7d4102c3f6ddcdae GIT binary patch literal 1428 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 literal 0 HcmV?d00001 diff --git a/stylesheets/pygment_trac.css b/stylesheets/pygment_trac.css new file mode 100644 index 000000000..e65cedff6 --- /dev/null +++ b/stylesheets/pygment_trac.css @@ -0,0 +1,70 @@ +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f0f3f3; } +.highlight .c { color: #0099FF; font-style: italic } /* Comment */ +.highlight .err { color: #AA0000; background-color: #FFAAAA } /* Error */ +.highlight .k { color: #006699; font-weight: bold } /* Keyword */ +.highlight .o { color: #555555 } /* Operator */ +.highlight .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #009999 } /* Comment.Preproc */ +.highlight .c1 { color: #0099FF; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #0099FF; font-weight: bold; font-style: italic } /* Comment.Special */ +.highlight .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #003300; font-weight: bold } /* Generic.Heading */ +.highlight .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */ +.highlight .go { color: #AAAAAA } /* Generic.Output */ +.highlight .gp { color: #000099; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #003300; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #99CC66 } /* Generic.Traceback */ +.highlight .kc { color: #006699; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #006699; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #006699; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #006699 } /* Keyword.Pseudo */ +.highlight .kr { color: #006699; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #007788; font-weight: bold } /* Keyword.Type */ +.highlight .m { color: #FF6600 } /* Literal.Number */ +.highlight .s { color: #CC3300 } /* Literal.String */ +.highlight .na { color: #330099 } /* Name.Attribute */ +.highlight .nb { color: #336666 } /* Name.Builtin */ +.highlight .nc { color: #00AA88; font-weight: bold } /* Name.Class */ +.highlight .no { color: #336600 } /* Name.Constant */ +.highlight .nd { color: #9999FF } /* Name.Decorator */ +.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #CC0000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #CC00FF } /* Name.Function */ +.highlight .nl { color: #9999FF } /* Name.Label */ +.highlight .nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #330099; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #003333 } /* Name.Variable */ +.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #FF6600 } /* Literal.Number.Float */ +.highlight .mh { color: #FF6600 } /* Literal.Number.Hex */ +.highlight .mi { color: #FF6600 } /* Literal.Number.Integer */ +.highlight .mo { color: #FF6600 } /* Literal.Number.Oct */ +.highlight .sb { color: #CC3300 } /* Literal.String.Backtick */ +.highlight .sc { color: #CC3300 } /* Literal.String.Char */ +.highlight .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #CC3300 } /* Literal.String.Double */ +.highlight .se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #CC3300 } /* Literal.String.Heredoc */ +.highlight .si { color: #AA0000 } /* Literal.String.Interpol */ +.highlight .sx { color: #CC3300 } /* Literal.String.Other */ +.highlight .sr { color: #33AAAA } /* Literal.String.Regex */ +.highlight .s1 { color: #CC3300 } /* Literal.String.Single */ +.highlight .ss { color: #FFCC33 } /* Literal.String.Symbol */ +.highlight .bp { color: #336666 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #003333 } /* Name.Variable.Class */ +.highlight .vg { color: #003333 } /* Name.Variable.Global */ +.highlight .vi { color: #003333 } /* Name.Variable.Instance */ +.highlight .il { color: #FF6600 } /* Literal.Number.Integer.Long */ + +.type-csharp .highlight .k { color: #0000FF } +.type-csharp .highlight .kt { color: #0000FF } +.type-csharp .highlight .nf { color: #000000; font-weight: normal } +.type-csharp .highlight .nc { color: #2B91AF } +.type-csharp .highlight .nn { color: #000000 } +.type-csharp .highlight .s { color: #A31515 } +.type-csharp .highlight .sc { color: #A31515 } From 21d0d6df0fa59ce34466ac999b75023bb49cafd5 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Sun, 3 May 2015 18:13:10 -0700 Subject: [PATCH 4/7] try to fix syntax highlighting. --- index.html | 2 +- stylesheets/github-light.css | 115 +++++++++++++++++++++++++++++++++++ stylesheets/stylesheet.css | 1 + 3 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 stylesheets/github-light.css diff --git a/index.html b/index.html index 4cd19d562..651c2ac3f 100644 --- a/index.html +++ b/index.html @@ -12,7 +12,7 @@
- Browse TA-Lib on GitHub + View on GitHub
+