TA-lib is a library for technical analysis of price and market data. - Includes over 200 indicators such as RSI, MACD, Moving Averages and Bollinger Bands - Price candle pattern recognition - Open Source libraries for C#, Python and .NET
Using TA-lib Indicators and Functions
To use a TA-lib indicator or function, you must import TA-lib into your algorithm.
using static TALib.Core;
Next, define any adjustable parameters for your indicator in your algorithm's class definition.
namespace MachinaEngine.Algorithm.CSharp
{
public class MyRSIstrategy : MEAlgorithm
{
#region Parameters
[Parameter("RSI Lookback")]
public int RSIPeriod { get; set; } = 14;
By defining the RSI lookback period in this manner, you are prompting the Machina Engine to create an adjustable parameter "RSI Lookback" in the Launcher panel.
By defining this parameter as public
in your algorithm's class definition, you also make the parameter (its name and value) available to other code methods in your algorithm. This will become clear in the rest of this example.
In your algorithm's Initialize()
method you should declare the maximum number of tradebars (candles) your indicator(s) will need before generating usable values.
public override void Initialize()
{
var barsBack = RSIPeriod;
In this case, our RSI has a default lookback period of 14 tradebars. However, we do not define var barsBack = 14;
because we previously made the RSI lookback period an adjustable parameter. You might change that lookback period to 21 for a particular backtest. So, instead of having to change your code in two places, we simply pass the correct lookback period value by using RSIPeriod
.
With the algorithm setup complete, we can now go to the OnTradeBar()
method where the Machina Engine iterates over the list of tradebars (candles) you have requested for your backtest.
public override void OnTradeBar(Slice slice)
{
foreach (Symbol symbol in slice.Symbols)
{
// Is tradebar history sufficient for the current symbol and period?
if (!IsHistoryReady(symbol, MTO.PeriodSeconds))
continue;
// Get the tradebars for this iteration
var tBars = SymbolHistory(symbol, MTO.PeriodSeconds);
// Build RSI for this iteration
var rsi = tBars.Rsi(RSIPeriod);
if (rsi.Rsi.Any())
{
var buyArea = (rsi.Rsi.LastOrDefault().Value > 50;
// Make trading decisions; execute orders
// Plot RSI indicator below price chart
Plotter($"RSI", "RSI", rsi.LastOrDefault().Value, "purple", SeriesType.Line, LineStyleType.Solid, 2, true);
}
Alphabetic List of TA-lib Indicators and Studies
Name | Description |
---|---|
AD | Chaikin A/D Line |
ADOSC | Chaikin A/D Oscillator |
ADX | Average Directional Movement Index |
ADXR | Average Directional Movement Index Rating |
APO | Absolute Price Oscillator |
AROON | Aroon |
AROONOSC | Aroon Oscillator |
ATR | Average True Range |
AVGPRICE | Average Price |
BBANDS | Bollinger Bands |
BETA | Beta |
BOP | Balance Of Power |
CCI | Commodity Channel Index |
CMO | Chande Momentum Oscillator |
CORREL | Pearson's Correlation Coefficient (r) |
DEMA | Double Exponential Moving Average |
DX | Directional Movement Index |
EMA | Exponential Moving Average |
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_TRENDLINE | Hilbert Transform - Instantaneous Trendline |
HT_TRENDMODE | Hilbert Transform - Trend vs Cycle Mode |
KAMA | Kaufman Adaptive Moving Average |
LINEARREG | Linear Regression |
LINEARREG_ANGLE | Linear Regression Angle |
LINEARREG_INTERCEPT | Linear Regression Intercept |
LINEARREG_SLOPE | Linear Regression Slope |
MA | All Moving Average |
MACD | Moving Average Convergence/Divergence |
MACDEXT | MACD with controllable MA type |
MACDFIX | Moving Average Convergence/Divergence Fix 12/26 |
MAMA | MESA Adaptive Moving Average |
MAX | Highest value over a specified period |
MAXINDEX | Index of highest value over a specified period |
MEDPRICE | Median Price |
MFI | Money Flow Index |
MIDPOINT | MidPoint over period |
MIDPRICE | Midpoint Price over 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 |
MINUS_DI | Minus Directional Indicator |
MINUS_DM | Minus Directional Movement |
MOM | Momentum |
NATR | Normalized Average True Range |
OBV | On Balance Volume |
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 |
SAR | Parabolic SAR |
SAREXT | Parabolic SAR - Extended |
SMA | Simple Moving Average |
STDDEV | Standard Deviation |
STOCH | Stochastic |
STOCHF | Stochastic Fast |
STOCHRSI | Stochastic Relative Strength Index |
SUM | Summation |
T3 | Triple Exponential Moving Average (T3) |
TEMA | Triple Exponential Moving Average |
TRANGE | True Range |
TRIMA | Triangular Moving Average |
TRIX | 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA |
TSF | Time Series Forecast |
TYPPRICE | Typical Price |
ULTOSC | Ultimate Oscillator |
VAR | Variance |
WCLPRICE | Weighted Close Price |
WILLR | Williams' %R |
WMA | Weighted Moving Average |
List of Recognized Candle Patterns
Name | Description |
---|---|
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 |
TA-lib Math, Statistical and Price Functions
Math Operators |
---|
ADD |
DIV |
MAX |
MAXINDEX |
MIN |
MININDEX |
MINMAX |
MINMAXINDEX |
MULT |
SUB |
SUM |
Math Transform |
---|
ACOS |
ASIN |
ATAN |
CEIL |
COS |
COSH |
EXP |
FLOOR |
LN |
LOG10 |
SIN |
SINH |
SQRT |
TAN |
TANH |
Price Transform |
---|
AVGPRICE |
MEDPRICE |
TYPPRICE |
WCLPRICE |
Statistic Functions |
---|
BETA |
CORREL |
LINEARREG |
LINEARREG_ANGLE |
LINEARREG_INTERCEPT |
LINEARREG_SLOPE |
STDDEV |
TSF |
VAR |
TA-lib Indicators Grouped by Type
Cycle Indicators |
---|
HT_DCPERIOD |
HT_DCPHASE |
HT_PHASOR |
HT_SINE |
HT_TRENDMODE |
Momentum Indicators |
---|
ADX |
ADXR |
APO |
AROON |
AROONOSC |
BOP |
CCI |
CMO |
DX |
MACD |
MACDEXT |
MACDFIX |
MFI |
MINUS_DI |
MINUS_DM |
MOM |
PLUS_DI |
PLUS_DM |
PPO |
ROC |
ROCP |
ROCR |
ROCR100 |
RSI |
STOCH |
STOCHF |
STOCHRSI |
TRIX |
ULTOSC |
WILLR |
Overlap Studies |
---|
BBANDS |
DEMA |
EMA |
HT_TRENDLINE |
KAMA |
MA |
MAMA |
MAVP |
MIDPOINT |
MIDPRICE |
SAR |
SAREXT |
SMA |
T3 |
TEMA |
TRIMA |
WMA |
Candle Pattern Recognition |
---|
CDL2CROWS |
CDL3BLACKCROWS |
CDL3INSIDE |
CDL3LINESTRIKE |
CDL3OUTSIDE |
CDL3STARSINSOUTH |
CDL3WHITESOLDIERS |
CDLABANDONEDBABY |
CDLADVANCEBLOCK |
CDLBELTHOLD |
CDLBREAKAWAY |
CDLCLOSINGMARUBOZU |
CDLCONCEALBABYSWALL |
CDLCOUNTERATTACK |
CDLDARKCLOUDCOVER |
CDLDOJI |
CDLDOJISTAR |
CDLDRAGONFLYDOJI |
CDLENGULFING |
CDLEVENINGDOJISTAR |
CDLEVENINGSTAR |
CDLGAPSIDESIDEWHITE |
CDLGRAVESTONEDOJI |
CDLHAMMER |
CDLHANGINGMAN |
CDLHARAMI |
CDLHARAMICROSS |
CDLHIGHWAVE |
CDLHIKKAKE |
CDLHIKKAKEMOD |
CDLHOMINGPIGEON |
CDLIDENTICAL3CROWS |
CDLINNECK |
CDLINVERTEDHAMMER |
CDLKICKING |
CDLKICKINGBYLENGTH |
CDLLADDERBOTTOM |
CDLLONGLEGGEDDOJI |
CDLLONGLINE |
CDLMARUBOZU |
CDLMATCHINGLOW |
CDLMATHOLD |
CDLMORNINGDOJISTAR |
CDLMORNINGSTAR |
CDLONNECK |
CDLPIERCING |
CDLRICKSHAWMAN |
CDLRISEFALL3METHODS |
CDLSEPARATINGLINES |
CDLSHOOTINGSTAR |
CDLSHORTLINE |
CDLSPINNINGTOP |
CDLSTALLEDPATTERN |
CDLSTICKSANDWICH |
CDLTAKURI |
CDLTASUKIGAP |
CDLTHRUSTING |
CDLTRISTAR |
CDLUNIQUE3RIVER |
CDLUPSIDEGAP2CROWS |
CDLXSIDEGAP3METHODS |
Volatility Indicators |
---|
ATR |
NATR |
TRANGE |
Volume Indicators |
---|
AD |
ADOSC |
OBV |