From 682f6bc137939306f2f0177477b2025667186c46 Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Wed, 24 Apr 2024 09:21:43 +0000 Subject: [PATCH] build based on 24860dd --- dev/.documenter-siteinfo.json | 2 +- dev/api/index.html | 8 ++++---- dev/features/index.html | 2 +- dev/implementing_your_indic/index.html | 2 +- dev/index.html | 2 +- dev/indicators_support/index.html | 2 +- dev/install/index.html | 2 +- dev/internals/index.html | 2 +- dev/search_index.js | 2 +- dev/usage/index.html | 2 +- dev/usage_more/index.html | 4 ++-- 11 files changed, 15 insertions(+), 15 deletions(-) diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index ffd8d91..6f1c099 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.10.2","generation_timestamp":"2024-04-24T09:18:38","documenter_version":"1.2.1"}} \ No newline at end of file +{"documenter":{"julia_version":"1.10.2","generation_timestamp":"2024-04-24T09:21:40","documenter_version":"1.2.1"}} \ No newline at end of file diff --git a/dev/api/index.html b/dev/api/index.html index 8be1b25..fb52504 100644 --- a/dev/api/index.html +++ b/dev/api/index.html @@ -1,5 +1,5 @@ -API Documentation · IncTA.jl

API Documentation

Indicators (alphabetically ordered)

IncTA.ADXType
ADX{Tohlcv}(; di_period = 14, adx_period = 14, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The ADX type implements an Average Directional Index indicator.

source
IncTA.ALMAType
ALMA{T}(; period = ALMA_PERIOD, offset = ALMA_OFFSET, sigma = ALMA_SIGMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The ALMA type implements an Arnaud Legoux Moving Average indicator.

source
IncTA.AOType
AO{Tohlcv}(; fast_period = AO_FAST_PERIOD, slow_period = AO_SLOW_PERIOD, fast_ma = SMA, slow_ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The AO type implements an Awesome Oscillator indicator.

source
IncTA.ATRType
ATR{Tohlcv}(; period = ATR_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The ATR type implements an Average True Range indicator.

source
IncTA.AccuDistType
AccuDist{Tohlcv}(input_filter = always_true, input_modifier = identity)

The AccuDist type implements an Accumulation and Distribution indicator.

source
IncTA.AroonType
Aroon{Tohlcv}(; period = Aroon_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The Aroon type implements an Aroon indicator.

source
IncTA.BBType
BB{T}(; period = BB_PERIOD, std_dev_mult = BB_STD_DEV_MULT, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The BB type implements Bollinger Bands indicator.

source
IncTA.BOPType
BOP{Tohlcv}(input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The BOP type implements a Balance Of Power indicator.

source
IncTA.CCIType
CCI{Tohlcv}(; period=CCI_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The CCI type implements a Commodity Channel Index.

source
IncTA.CHOPType
CHOP{Tohlcv}(; period = CHOP_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The CHOP type implements a Choppiness Index indicator.

source
IncTA.ChaikinOscType
ChaikinOsc{Tohlcv}(; fast_period = ChaikinOsc_FAST_PERIOD, slow_period = ChaikinOsc_SLOW_PERIOD, fast_ma = EMA, slow_ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The ChaikinOsc type implements a Chaikin Oscillator.

source
IncTA.ChandeKrollStopType
ChandeKrollStop{Tohlcv}(; atr_period = ChandeKrollStop_ATR_PERIOD, atr_mult = ChandeKrollStop_ATR_MULT, period = ChandeKrollStop_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The ChandeKrollStop type implements a ChandeKrollStop indicator.

source
IncTA.CoppockCurveType
CoppockCurve{T}(; fast_roc_period = CoppockCurve_FAST_ROC_PERIOD, slow_roc_period = CoppockCurve_SLOW_ROC_PERIOD, wma_period = CoppockCurve_WMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The CoppockCurve type implements a Coppock Curve indicator.

source
IncTA.DEMAType
DEMA{T}(; period = DEMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The DEMA type implements a Double Exponential Moving Average indicator.

source
IncTA.DPOType
DPO{T}(; period = DPO_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The DPO type implements a Detrended Price Oscillator indicator.

source
IncTA.DonchianChannelsType
DonchianChannels{Tohlcv}(; period = DonchianChannels_ATR_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The DonchianChannels type implements a Donchian Channels indicator.

source
IncTA.EMAType
EMA{T}(; period = EMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The EMA type implements an Exponential Moving Average indicator.

source
IncTA.EMVType
EMV{Tohlcv}(; period = EMV_PERIOD, volume_div = EMV_VOLUME_DIV, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The EMV type implements a Ease of Movement indicator.

source
IncTA.ForceIndexType
ForceIndex{Tohlcv}(; period = ForceIndex_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The ForceIndex type implements a Force Index indicator.

source
IncTA.HMAType
HMA{T}(; period = HMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The HMA type implements a Hull Moving Average indicator.

source
IncTA.KAMAType
KAMA{T}(; period = KAMA_PERIOD, fast_ema_constant_period = KAMA_FAST_EMA_CONSTANT_PERIOD, slow_ema_constant_period = KAMA_SLOW_EMA_CONSTANT_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The KAMA type implements a Kaufman's Adaptive Moving Average indicator.

source
IncTA.KSTType
KST{T}(;
+API · IncTA.jl

API Documentation

Indicators (alphabetically ordered)

IncTA.ADXType
ADX{Tohlcv}(; di_period = 14, adx_period = 14, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The ADX type implements an Average Directional Index indicator.

source
IncTA.ALMAType
ALMA{T}(; period = ALMA_PERIOD, offset = ALMA_OFFSET, sigma = ALMA_SIGMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The ALMA type implements an Arnaud Legoux Moving Average indicator.

source
IncTA.AOType
AO{Tohlcv}(; fast_period = AO_FAST_PERIOD, slow_period = AO_SLOW_PERIOD, fast_ma = SMA, slow_ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The AO type implements an Awesome Oscillator indicator.

source
IncTA.ATRType
ATR{Tohlcv}(; period = ATR_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The ATR type implements an Average True Range indicator.

source
IncTA.AccuDistType
AccuDist{Tohlcv}(input_filter = always_true, input_modifier = identity)

The AccuDist type implements an Accumulation and Distribution indicator.

source
IncTA.AroonType
Aroon{Tohlcv}(; period = Aroon_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The Aroon type implements an Aroon indicator.

source
IncTA.BBType
BB{T}(; period = BB_PERIOD, std_dev_mult = BB_STD_DEV_MULT, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The BB type implements Bollinger Bands indicator.

source
IncTA.BOPType
BOP{Tohlcv}(input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The BOP type implements a Balance Of Power indicator.

source
IncTA.CCIType
CCI{Tohlcv}(; period=CCI_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The CCI type implements a Commodity Channel Index.

source
IncTA.CHOPType
CHOP{Tohlcv}(; period = CHOP_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The CHOP type implements a Choppiness Index indicator.

source
IncTA.ChaikinOscType
ChaikinOsc{Tohlcv}(; fast_period = ChaikinOsc_FAST_PERIOD, slow_period = ChaikinOsc_SLOW_PERIOD, fast_ma = EMA, slow_ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The ChaikinOsc type implements a Chaikin Oscillator.

source
IncTA.ChandeKrollStopType
ChandeKrollStop{Tohlcv}(; atr_period = ChandeKrollStop_ATR_PERIOD, atr_mult = ChandeKrollStop_ATR_MULT, period = ChandeKrollStop_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The ChandeKrollStop type implements a ChandeKrollStop indicator.

source
IncTA.CoppockCurveType
CoppockCurve{T}(; fast_roc_period = CoppockCurve_FAST_ROC_PERIOD, slow_roc_period = CoppockCurve_SLOW_ROC_PERIOD, wma_period = CoppockCurve_WMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The CoppockCurve type implements a Coppock Curve indicator.

source
IncTA.DEMAType
DEMA{T}(; period = DEMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The DEMA type implements a Double Exponential Moving Average indicator.

source
IncTA.DPOType
DPO{T}(; period = DPO_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The DPO type implements a Detrended Price Oscillator indicator.

source
IncTA.DonchianChannelsType
DonchianChannels{Tohlcv}(; period = DonchianChannels_ATR_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The DonchianChannels type implements a Donchian Channels indicator.

source
IncTA.EMAType
EMA{T}(; period = EMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The EMA type implements an Exponential Moving Average indicator.

source
IncTA.EMVType
EMV{Tohlcv}(; period = EMV_PERIOD, volume_div = EMV_VOLUME_DIV, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The EMV type implements a Ease of Movement indicator.

source
IncTA.ForceIndexType
ForceIndex{Tohlcv}(; period = ForceIndex_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The ForceIndex type implements a Force Index indicator.

source
IncTA.HMAType
HMA{T}(; period = HMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The HMA type implements a Hull Moving Average indicator.

source
IncTA.KAMAType
KAMA{T}(; period = KAMA_PERIOD, fast_ema_constant_period = KAMA_FAST_EMA_CONSTANT_PERIOD, slow_ema_constant_period = KAMA_SLOW_EMA_CONSTANT_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The KAMA type implements a Kaufman's Adaptive Moving Average indicator.

source
IncTA.KSTType
KST{T}(;
     roc1_period = KST_ROC1_PERIOD,
     roc1_ma_period = KST_ROC1_MA_PERIOD,
     roc2_period = KST_ROC2_PERIOD,
@@ -13,11 +13,11 @@
     input_filter = always_true,
     input_modifier = identity,
     input_modifier_return_type = T
-)

The KST type implements Know Sure Thing indicator.

source
IncTA.KVOType
KVO{Tohlcv}(; fast_period = KVO_FAST_PERIOD, slow_period = KVO_SLOW_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The KVO type implements a Klinger Volume Oscillator.

source
IncTA.KeltnerChannelsType
KeltnerChannels{Tohlcv}(; ma_period = KeltnerChannels_MA_PERIOD, atr_period = KeltnerChannels_ATR_PERIOD, atr_mult_up = KeltnerChannels_ATR_MULT_UP, atr_mult_down = KeltnerChannels_ATR_MULT_DOWN, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The KeltnerChannels type implements a Keltner Channels indicator.

source
IncTA.MACDType
MACD{T}(; fast_period = MACD_FAST_PERIOD, slow_period = MACD_SLOW_PERIOD, signal_period = MACD_SIGNAL_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The MACD type implements Moving Average Convergence Divergence indicator.

source
IncTA.MassIndexType
MassIndex{T}(; ma_period = MassIndex_MA_PERIOD, ma_ma_period = MassIndex_MA_MA_PERIOD, ma_ratio_period = MassIndex_MA_RATIO_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The MassIndex type implements a Commodity Channel Index.

source
IncTA.McGinleyDynamicType
McGinleyDynamic{T}(; period = McGinleyDynamic_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The McGinleyDynamic type implements a McGinley Dynamic indicator.

source
IncTA.MeanDevType
MeanDev{T}(; period = MeanDev_PERIOD, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The MeanDev type implements a Mean Deviation indicator.

source
IncTA.OBVType
OBV{Tohlcv}(input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The OBV type implements On Balance Volume indicator.

source
IncTA.ParabolicSARType
ParabolicSAR{Tohlcv}(; atr_period = ParabolicSAR_ATR_PERIOD, mult = ParabolicSAR_MULT, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The ParabolicSAR type implements a Super Trend indicator.

source
IncTA.PivotsHLType
PivotsHL{Tohlcv}(; high_period = PivotsHL_HIGH_PERIOD, low_period = PivotsHL_LOW_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The PivotsHL type implements a High/Low Pivots Indicator.

source
IncTA.ROCType
ROC{T}(; period = ROC_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The ROC type implements a Rate Of Change indicator.

source
IncTA.RSIType
RSI{T}(; period = SMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The RSI type implements a Relative Strength Index indicator.

source
IncTA.SFXType
SFX{Tohlcv}(; atr_period = SFX_ATR_PERIOD, std_dev_period = SFX_STD_DEV_PERIOD, std_dev_smoothing_period = SFX_STD_DEV_SMOOTHING_PERIOD, ma = SMA, , input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The SFX type implements a SFX indicator.

source
IncTA.SMAType
SMA{T1}(; period = SMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T2)

The SMA type implements a Simple Moving Average indicator.

fit!(o, val) with o of type SMA will catch val of type T1

input val will be filtered using input_filter function (true means that val will be provided to o)

input val will be modified/transformed using input_modifier function (default is identity function which means that val won't be modified)

input_modifier_return_type is the type T2 of return of the input_modifier function it's also type of indicator value

by default T2 = T1

IN = false means that indicator is of "single input" type IN = true means that indicator is of "multiple input" (candle) type

source
IncTA.SMMAType
SMMA{T}(; period = SMMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The SMMA type implements a SMoothed Moving Average indicator.

source
IncTA.SOBVType
SOBV{Tohlcv}(; period = SOBV_PERIOD, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The SOBV type implements a Smoothed On Balance Volume indicator.

source
IncTA.STCType
STC{T}(; fast_macd_period = STC_FAST_MACD_PERIOD, slow_macd_period = STC_SLOW_MACD_PERIOD, stoch_period = STC_STOCH_PERIOD, stoch_smoothing_period = STC_STOCH_SMOOTHING_PERIOD, ma = SMA, , input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The STC type implements a Schaff Trend Cycle indicator.

source
IncTA.StdDevType
StdDev{T}(; period = StdDev_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The StdDev type implements a Standard Deviation indicator.

source
IncTA.StochType
Stoch{Tohlcv}(; period = STOCH_PERIOD, smoothing_period = STOCH_SMOOTHING_PERIOD, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The Stoch type implements the Stochastic indicator.

source
IncTA.StochRSIType
StochRSI{T}(; fast_period = StochRSI_FAST_PERIOD, slow_period = StochRSI_SLOW_PERIOD, signal_period = StochRSI_SIGNAL_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The StochRSI type implements Moving Average Convergence Divergence indicator.

source
IncTA.SuperTrendType
SuperTrend{Tohlcv}(; atr_period = SuperTrend_ATR_PERIOD, mult = SuperTrend_MULT, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The SuperTrend type implements a Super Trend indicator.

source
IncTA.T3Type
T3{T}(; period = T3_PERIOD, factor = T3_FACTOR, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The T3 type implements a T3 Moving Average indicator.

source
IncTA.TEMAType
TEMA{T}(; period = TEMA_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The TEMA type implements a Triple Exponential Moving Average indicator.

source
IncTA.TRIXType
TRIX{T}(; period = TRIX_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The TRIX type implements a TRIX Moving Average indicator.

source
IncTA.TSIType
TSI{T}(; fast_period = TSI_FAST_PERIOD, slow_period = TSI_SLOW_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The TSI type implements a True Strength Index indicator.

source
IncTA.TTMType
TTM{Tohlcv}(; atr_period = TTM_ATR_PERIOD, std_dev_period = TTM_STD_DEV_PERIOD, std_dev_smoothing_period = TTM_STD_DEV_SMOOTHING_PERIOD, ma = SMA)

The TTM type implements a TTM indicator.

source
IncTA.UOType
UO{Tohlcv}(; fast_period = UO_FAST_PERIOD, mid_period = UO_MID_PERIOD, slow_period = UO_SLOW_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The UO type implements an Ultimate Oscillator.

source
IncTA.VTXType
VTX{Tohlcv}(; period = VTX_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The VTX type implements a Vortex Indicator.

source
IncTA.VWAPType
VWAP{Tohlcv}(input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The VWAP type implements a Volume Weighted Moving Average indicator.

source
IncTA.VWMAType
VWMA{Tohlcv}(; period = VWMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The VWMA type implements a Volume Weighted Moving Average indicator.

source
IncTA.WMAType
WMA{T}(; period = WMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The WMA type implements a Weighted Moving Average indicator.

source
IncTA.ZLEMAType
ZLEMA{T}(; period=ZLEMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The ZLEMA type implements a Zero Lag Exponential Moving Average indicator.

source

Other

IncTA.StatLagType
StatLag(ind, b)

Track a moving window (previous b copies) of ind.

Example

ind = SMA{Float64}(period = 3)
+)

The KST type implements Know Sure Thing indicator.

source
IncTA.KVOType
KVO{Tohlcv}(; fast_period = KVO_FAST_PERIOD, slow_period = KVO_SLOW_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The KVO type implements a Klinger Volume Oscillator.

source
IncTA.KeltnerChannelsType
KeltnerChannels{Tohlcv}(; ma_period = KeltnerChannels_MA_PERIOD, atr_period = KeltnerChannels_ATR_PERIOD, atr_mult_up = KeltnerChannels_ATR_MULT_UP, atr_mult_down = KeltnerChannels_ATR_MULT_DOWN, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The KeltnerChannels type implements a Keltner Channels indicator.

source
IncTA.MACDType
MACD{T}(; fast_period = MACD_FAST_PERIOD, slow_period = MACD_SLOW_PERIOD, signal_period = MACD_SIGNAL_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The MACD type implements Moving Average Convergence Divergence indicator.

source
IncTA.MassIndexType
MassIndex{T}(; ma_period = MassIndex_MA_PERIOD, ma_ma_period = MassIndex_MA_MA_PERIOD, ma_ratio_period = MassIndex_MA_RATIO_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The MassIndex type implements a Commodity Channel Index.

source
IncTA.McGinleyDynamicType
McGinleyDynamic{T}(; period = McGinleyDynamic_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The McGinleyDynamic type implements a McGinley Dynamic indicator.

source
IncTA.MeanDevType
MeanDev{T}(; period = MeanDev_PERIOD, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The MeanDev type implements a Mean Deviation indicator.

source
IncTA.OBVType
OBV{Tohlcv}(input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The OBV type implements On Balance Volume indicator.

source
IncTA.ParabolicSARType
ParabolicSAR{Tohlcv}(; atr_period = ParabolicSAR_ATR_PERIOD, mult = ParabolicSAR_MULT, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The ParabolicSAR type implements a Super Trend indicator.

source
IncTA.PivotsHLType
PivotsHL{Tohlcv}(; high_period = PivotsHL_HIGH_PERIOD, low_period = PivotsHL_LOW_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The PivotsHL type implements a High/Low Pivots Indicator.

source
IncTA.ROCType
ROC{T}(; period = ROC_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The ROC type implements a Rate Of Change indicator.

source
IncTA.RSIType
RSI{T}(; period = SMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The RSI type implements a Relative Strength Index indicator.

source
IncTA.SFXType
SFX{Tohlcv}(; atr_period = SFX_ATR_PERIOD, std_dev_period = SFX_STD_DEV_PERIOD, std_dev_smoothing_period = SFX_STD_DEV_SMOOTHING_PERIOD, ma = SMA, , input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The SFX type implements a SFX indicator.

source
IncTA.SMAType
SMA{T1}(; period = SMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T2)

The SMA type implements a Simple Moving Average indicator.

fit!(o, val) with o of type SMA will catch val of type T1

input val will be filtered using input_filter function (true means that val will be provided to o)

input val will be modified/transformed using input_modifier function (default is identity function which means that val won't be modified)

input_modifier_return_type is the type T2 of return of the input_modifier function it's also type of indicator value

by default T2 = T1

IN = false means that indicator is of "single input" type IN = true means that indicator is of "multiple input" (candle) type

source
IncTA.SMMAType
SMMA{T}(; period = SMMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The SMMA type implements a SMoothed Moving Average indicator.

source
IncTA.SOBVType
SOBV{Tohlcv}(; period = SOBV_PERIOD, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The SOBV type implements a Smoothed On Balance Volume indicator.

source
IncTA.STCType
STC{T}(; fast_macd_period = STC_FAST_MACD_PERIOD, slow_macd_period = STC_SLOW_MACD_PERIOD, stoch_period = STC_STOCH_PERIOD, stoch_smoothing_period = STC_STOCH_SMOOTHING_PERIOD, ma = SMA, , input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The STC type implements a Schaff Trend Cycle indicator.

source
IncTA.StdDevType
StdDev{T}(; period = StdDev_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The StdDev type implements a Standard Deviation indicator.

source
IncTA.StochType
Stoch{Tohlcv}(; period = STOCH_PERIOD, smoothing_period = STOCH_SMOOTHING_PERIOD, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The Stoch type implements the Stochastic indicator.

source
IncTA.StochRSIType
StochRSI{T}(; fast_period = StochRSI_FAST_PERIOD, slow_period = StochRSI_SLOW_PERIOD, signal_period = StochRSI_SIGNAL_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The StochRSI type implements Moving Average Convergence Divergence indicator.

source
IncTA.SuperTrendType
SuperTrend{Tohlcv}(; atr_period = SuperTrend_ATR_PERIOD, mult = SuperTrend_MULT, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The SuperTrend type implements a Super Trend indicator.

source
IncTA.T3Type
T3{T}(; period = T3_PERIOD, factor = T3_FACTOR, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The T3 type implements a T3 Moving Average indicator.

source
IncTA.TEMAType
TEMA{T}(; period = TEMA_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The TEMA type implements a Triple Exponential Moving Average indicator.

source
IncTA.TRIXType
TRIX{T}(; period = TRIX_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The TRIX type implements a TRIX Moving Average indicator.

source
IncTA.TSIType
TSI{T}(; fast_period = TSI_FAST_PERIOD, slow_period = TSI_SLOW_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The TSI type implements a True Strength Index indicator.

source
IncTA.TTMType
TTM{Tohlcv}(; atr_period = TTM_ATR_PERIOD, std_dev_period = TTM_STD_DEV_PERIOD, std_dev_smoothing_period = TTM_STD_DEV_SMOOTHING_PERIOD, ma = SMA)

The TTM type implements a TTM indicator.

source
IncTA.UOType
UO{Tohlcv}(; fast_period = UO_FAST_PERIOD, mid_period = UO_MID_PERIOD, slow_period = UO_SLOW_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The UO type implements an Ultimate Oscillator.

source
IncTA.VTXType
VTX{Tohlcv}(; period = VTX_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The VTX type implements a Vortex Indicator.

source
IncTA.VWAPType
VWAP{Tohlcv}(input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The VWAP type implements a Volume Weighted Moving Average indicator.

source
IncTA.VWMAType
VWMA{Tohlcv}(; period = VWMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)

The VWMA type implements a Volume Weighted Moving Average indicator.

source
IncTA.WMAType
WMA{T}(; period = WMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The WMA type implements a Weighted Moving Average indicator.

source
IncTA.ZLEMAType
ZLEMA{T}(; period=ZLEMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)

The ZLEMA type implements a Zero Lag Exponential Moving Average indicator.

source

Other

IncTA.StatLagType
StatLag(ind, b)

Track a moving window (previous b copies) of ind.

Example

ind = SMA{Float64}(period = 3)
 prices = [10.81, 10.58, 10.07, 10.58, 10.56, 10.4, 10.74, 10.16, 10.29, 9.4, 9.62]
 ind = StatLag(ind, 4)
 fit!(ind, prices)
-ind.lag[end-1]
source
IncTA.TechnicalIndicatorIteratorType
TechnicalIndicatorIterator(indicator_type, iterable_input, args...; kwargs...)

Returns an iterator.

Example

using IncTA
 using IncTA.SampleData: CLOSE_TMPL

SISO indicator

itr = TechnicalIndicatorIterator(SMA, CLOSE_TMPL; period = 3)
 
 println("First iteration")
@@ -43,4 +43,4 @@
 println(collect(itr))
 
 println("")

SIMO indicator

itr = TechnicalIndicatorIterator(BB, CLOSE_TMPL)
-println(collect(itr))
source
+println(collect(itr))
source
diff --git a/dev/features/index.html b/dev/features/index.html index 7786fea..d41cc31 100644 --- a/dev/features/index.html +++ b/dev/features/index.html @@ -1,2 +1,2 @@ -Package Features · IncTA.jl

Package Features

  • Input new data (one observation at a time) to indicator with fit! function (from OnlineStats.jl)
  • Input data which inherits AbstractVector
  • Input data as compatible Tables.jl format
  • Sub-indicators
  • Indicators chaining
  • Filter/transform input of indicator
+Package Features · IncTA.jl

Package Features

  • Input new data (one observation at a time) to indicator with fit! function (from OnlineStats.jl)
  • Input data which inherits AbstractVector
  • Input data as compatible Tables.jl format
  • Sub-indicators
  • Indicators chaining
  • Filter/transform input of indicator
diff --git a/dev/implementing_your_indic/index.html b/dev/implementing_your_indic/index.html index 08ddf86..9e6e35a 100644 --- a/dev/implementing_your_indic/index.html +++ b/dev/implementing_your_indic/index.html @@ -1,2 +1,2 @@ -Implementing your own indicator · IncTA.jl

Implementing your own indicator

Categorization of your indicator

Categorization of indicators is done to better understand implementation of indicators, not to understand the role of each indicator. To better understand the role of each indicator other categories such as moving averages, momentum indicators, volatility indicators are better suited.

SISO indicators (🔢 🔢)

A SISO indicator takes one simple observation (price of an asset, volume of assets traded...) and output just one value for this observation.

SMA, EMA are good examples of such indicator category (but also most of others moving average indicators).

SIMO indicators (🔢 Ⓜ️)

The very famous BB (Bollinger Bands developed by financial analyst John Bollinger) indicator is an example of SIMO indicator. Like a SISO indicator it takes one simple value at a time. But contrary to SISO indicator, SIMO indicators generate several values at a time (upper band, central value, lower band in the case of Bollinger Bands indicator).

MISO indicators (🕯️ 🔢)

IncTA have also some MISO indicators ie indicators which takes several values at a time. It can be candlestick OHLCV data for example. Average True Range (ATR) is an example of such an indicator. It's the average of true ranges over the specified period. ATR measures volatility, taking into account any gaps in the price movement. It was developed by a very prolific author named J. Welles Wilder (also author of RSI, ParabolicSAR and ADX).

MIMO indicators (🕯️ Ⓜ️)

The last implementation type of indicator are MIMO indicators ie indicator which take several values at a time (such a candlestick data) and ouput several values at a time. Stochastic oscillator (Stoch also known as KD indicator) is an example of such indicator implementation category). It was developed in the late 1950s by a technical analyst named Georges Lane. This method attempts to predict price turning points by comparing the closing price of a security to its price range. Such indicator ouputs 2 values at a time : k and d.

Steps to implement your own indicator

  1. First step to implement your own indicator is to categorized it in the SISO, SIMO, MISO, MIMO category.

  2. Look at indicator dependencies and try to find out an existing indicator of similar category with similar features used.

  3. Watch existing code of an indicator of a similar category with quite similar dependencies.

  4. Copy file into src\indicators directory with same name for struct and filename (that's important for tests)

  5. Increment number of indicators in test_indicators_interface.jl

    @test length(files) == ... # number of indicators

  6. Create unit tests (in the correct category) and ensure they are passing.

+Implementing your own indicator · IncTA.jl

Implementing your own indicator

Categorization of your indicator

Categorization of indicators is done to better understand implementation of indicators, not to understand the role of each indicator. To better understand the role of each indicator other categories such as moving averages, momentum indicators, volatility indicators are better suited.

SISO indicators (🔢 🔢)

A SISO indicator takes one simple observation (price of an asset, volume of assets traded...) and output just one value for this observation.

SMA, EMA are good examples of such indicator category (but also most of others moving average indicators).

SIMO indicators (🔢 Ⓜ️)

The very famous BB (Bollinger Bands developed by financial analyst John Bollinger) indicator is an example of SIMO indicator. Like a SISO indicator it takes one simple value at a time. But contrary to SISO indicator, SIMO indicators generate several values at a time (upper band, central value, lower band in the case of Bollinger Bands indicator).

MISO indicators (🕯️ 🔢)

IncTA have also some MISO indicators ie indicators which takes several values at a time. It can be candlestick OHLCV data for example. Average True Range (ATR) is an example of such an indicator. It's the average of true ranges over the specified period. ATR measures volatility, taking into account any gaps in the price movement. It was developed by a very prolific author named J. Welles Wilder (also author of RSI, ParabolicSAR and ADX).

MIMO indicators (🕯️ Ⓜ️)

The last implementation type of indicator are MIMO indicators ie indicator which take several values at a time (such a candlestick data) and ouput several values at a time. Stochastic oscillator (Stoch also known as KD indicator) is an example of such indicator implementation category). It was developed in the late 1950s by a technical analyst named Georges Lane. This method attempts to predict price turning points by comparing the closing price of a security to its price range. Such indicator ouputs 2 values at a time : k and d.

Steps to implement your own indicator

  1. First step to implement your own indicator is to categorized it in the SISO, SIMO, MISO, MIMO category.

  2. Look at indicator dependencies and try to find out an existing indicator of similar category with similar features used.

  3. Watch existing code of an indicator of a similar category with quite similar dependencies.

  4. Copy file into src\indicators directory with same name for struct and filename (that's important for tests)

  5. Increment number of indicators in test_indicators_interface.jl

    @test length(files) == ... # number of indicators

  6. Create unit tests (in the correct category) and ensure they are passing.

diff --git a/dev/index.html b/dev/index.html index df34cfb..2cf06da 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,2 +1,2 @@ -Home · IncTA.jl

Build Status

IncTA.jl

This project implements some Technical Analysis Indicators in Julia in an incremental approach.

It's inspired by Python project talipp which is used as "reference implementation" for unit tests.

It depends especially on OnlineStatsBase.jl and on Tables.jl.

Currently more than 50 technical analysis indicators are supported (SMA, EMA, SMMA, RSI, MeanDev, StdDev, ROC, WMA, KAMA, HMA, DPO, CoppockCurve, DEMA, TEMA, ALMA, McGinleyDynamic, ZLEMA, T3, TRIX, TSI ; BB, MACD, StochRSI, KST ; AccuDist, BOP, CCI, ChaikinOsc, VWMA, VWAP, AO, ATR, ForceIndex, OBV, SOBV, EMV, MassIndex, CHOP, KVO, UO ; Stoch, ADX, SuperTrend, VTX, DonchianChannels, KeltnerChannels, Aroon, ChandeKrollStop, ParabolicSAR, SFX, TTM, PivotsHL ; STC)

🚧 This software is under construction. API can have breaking changes.

Contents

+Home · IncTA.jl

Build Status

IncTA.jl

This project implements some Technical Analysis Indicators in Julia in an incremental approach.

It's inspired by Python project talipp which is used as "reference implementation" for unit tests.

It depends especially on OnlineStatsBase.jl and on Tables.jl.

Currently more than 50 technical analysis indicators are supported (SMA, EMA, SMMA, RSI, MeanDev, StdDev, ROC, WMA, KAMA, HMA, DPO, CoppockCurve, DEMA, TEMA, ALMA, McGinleyDynamic, ZLEMA, T3, TRIX, TSI ; BB, MACD, StochRSI, KST ; AccuDist, BOP, CCI, ChaikinOsc, VWMA, VWAP, AO, ATR, ForceIndex, OBV, SOBV, EMV, MassIndex, CHOP, KVO, UO ; Stoch, ADX, SuperTrend, VTX, DonchianChannels, KeltnerChannels, Aroon, ChandeKrollStop, ParabolicSAR, SFX, TTM, PivotsHL ; STC)

🚧 This software is under construction. API can have breaking changes.

Contents

diff --git a/dev/indicators_support/index.html b/dev/indicators_support/index.html index 48c2e89..4590145 100644 --- a/dev/indicators_support/index.html +++ b/dev/indicators_support/index.html @@ -1,2 +1,2 @@ -Indicators support · IncTA.jl

Indicators support

NameDescriptionInputOutputDependenciesImplementation status
AccuDistAccumulation and Distribution🕯️🔢-✔️
ADXAverage Directional Index🕯️Ⓜ️ATR✔️
ALMAArnaud Legoux Moving Average🔢🔢CircBuff✔️
AOAwesome Oscillator🕯️🔢SMA✔️
AroonAroon Up/Down🕯️Ⓜ️CirBuff✔️
ATRAverage True Range🕯️🔢CircBuff✔️
BBBollinger Bands🔢Ⓜ️SMA, StdDev✔️
BOPBalance Of Power🕯️🔢-✔️
CCICommodity Channel Index🕯️🔢MeanDev✔️
ChaikinOscChaikin Oscillator🕯️🔢AccuDist, EMA✔️
ChandeKrollStopChande Kroll Stop🕯️Ⓜ️CircBuff, ATR✔️
CHOPChoppiness Index🕯️🔢CirBuff, ATR✔️
CoppockCurveCoppock Curve🔢🔢ROC, WMA✔️
DEMADouble Exponential Moving Average🔢🔢EMA✔️
DonchianChannelsDonchian Channels🕯️Ⓜ️CircBuff✔️
DPODetrended Price Oscillator🔢🔢CircBuff, SMA✔️
EMAExponential Moving Average🔢🔢CircBuff✔️
EMVEase of Movement🕯️🔢CircBuff, SMA✔️
FibRetracementFibonacci Retracementdoesn't look an indicator just a simple class with 236 382 5 618 786 values
ForceIndexForce Index🕯️🔢prev input val, EMA✔️
HMAHull Moving Average🔢🔢WMA✔️
IchimokuIchimoku Clouds🔢Ⓜ️CircBuff5 managed sequences ❓ unit tests doesn't exists in reference implementation
KAMAKaufman's Adaptive Moving Average🔢🔢CircBuff✔️
KeltnerChannelsKeltner Channels🕯️Ⓜ️ATR, EMA with input_modifier to extract close value of a candle✔️
KSTKnow Sure Thing🔢Ⓜ️ROC, SMA✔️
KVOKlinger Volume Oscillator🕯️🔢EMA✔️
MACDMoving Average Convergence Divergence🔢Ⓜ️EMA✔️
MassIndexMass Index🕯️🔢EMA, CircBuff✔️
McGinleyDynamicMcGinley Dynamic🔢🔢CircBuff✔️
MeanDevMean Deviation🔢🔢CircBuff, SMA✔️
OBVOn Balance Volume🕯️🔢prev input val✔️
ParabolicSARParabolic Stop And Reverse🕯️Ⓜ️CirBuff✔️
PivotsHLHigh/Low Pivots🕯️Ⓜ️-🚧 unit tests in reference implementation are missing but code seems quite ready ✔️
ROCRate Of Change🔢🔢CircBuff✔️
RSIRelative Strength Index🔢🔢CircBuff, SMMA✔️
SFXSFX🕯️Ⓜ️ATR, StdDev, SMA and input_modifier (to extract close)✔️
SMASimple Moving Average🔢🔢CircBuff✔️
SMMASmoothed Moving Average🔢🔢CircBuff✔️
SOBVSmoothed On Balance Volume🕯️🔢OBV, SMA✔️
STCSchaff Trend Cycle🔢🔢MACD, Stoch with input_modifier (MACDVal->OHLCV and stoch_d->OHLCV), indicator chaining, MAFactory (default SMA)✔️
StdDevStandard Deviation🔢🔢CircBuff✔️
StochStochastic🕯️Ⓜ️CircBuff, SMA✔️ 🎄
StochRSIStochastic RSI🔢Ⓜ️RSI, SMA✔️
SuperTrendSuper Trend🕯️Ⓜ️CircBuff, ATR✔️
T3T3 Moving Average🔢🔢EMA with indicator chaining and input filter✔️
TEMATriple Exponential Moving Average🔢🔢EMA✔️
TRIXTRIX🕯️Ⓜ️EMA, indicator chaining✔️
TSITrue Strength Index🔢🔢EMA, indicator chaining✔️
TTMTTM Squeeze🕯️Ⓜ️SMA, BB, DonchianChannels, KeltnerChannels and input_modifier to extract close value of a candle✔️
UOUltimate Oscillator🕯️🔢CircBuff✔️
VTXVortex Indicator🕯️Ⓜ️CircBuff, ATR✔️
VWAPVolume Weighted Average Price🕯️🔢-✔️
VWMAVolume Weighted Moving Average🕯️🔢CircBuff✔️
WMAWeighted Moving Average🔢🔢CircBuff✔️
ZLEMAZero Lag Exponential Moving Average🔢🔢EMA✔️

Legend

🔢 single number (input or ouput)

Ⓜ️ multiple numbers (output)

🕯️ OHLCV candlestick input

Indicators implementation category

🔢 🔢 SISO indicators

🔢 Ⓜ️ SIMO indicators

🕯️ 🔢 MISO indicators

🕯️ Ⓜ️ MIMO indicators

Indicators can be of 1 out of 4 categories given their input/output behavior : SISO, SIMO, MISO and MIMO.

+Indicators support · IncTA.jl

Indicators support

NameDescriptionInputOutputDependenciesImplementation status
AccuDistAccumulation and Distribution🕯️🔢-✔️
ADXAverage Directional Index🕯️Ⓜ️ATR✔️
ALMAArnaud Legoux Moving Average🔢🔢CircBuff✔️
AOAwesome Oscillator🕯️🔢SMA✔️
AroonAroon Up/Down🕯️Ⓜ️CirBuff✔️
ATRAverage True Range🕯️🔢CircBuff✔️
BBBollinger Bands🔢Ⓜ️SMA, StdDev✔️
BOPBalance Of Power🕯️🔢-✔️
CCICommodity Channel Index🕯️🔢MeanDev✔️
ChaikinOscChaikin Oscillator🕯️🔢AccuDist, EMA✔️
ChandeKrollStopChande Kroll Stop🕯️Ⓜ️CircBuff, ATR✔️
CHOPChoppiness Index🕯️🔢CirBuff, ATR✔️
CoppockCurveCoppock Curve🔢🔢ROC, WMA✔️
DEMADouble Exponential Moving Average🔢🔢EMA✔️
DonchianChannelsDonchian Channels🕯️Ⓜ️CircBuff✔️
DPODetrended Price Oscillator🔢🔢CircBuff, SMA✔️
EMAExponential Moving Average🔢🔢CircBuff✔️
EMVEase of Movement🕯️🔢CircBuff, SMA✔️
FibRetracementFibonacci Retracementdoesn't look an indicator just a simple class with 236 382 5 618 786 values
ForceIndexForce Index🕯️🔢prev input val, EMA✔️
HMAHull Moving Average🔢🔢WMA✔️
IchimokuIchimoku Clouds🔢Ⓜ️CircBuff5 managed sequences ❓ unit tests doesn't exists in reference implementation
KAMAKaufman's Adaptive Moving Average🔢🔢CircBuff✔️
KeltnerChannelsKeltner Channels🕯️Ⓜ️ATR, EMA with input_modifier to extract close value of a candle✔️
KSTKnow Sure Thing🔢Ⓜ️ROC, SMA✔️
KVOKlinger Volume Oscillator🕯️🔢EMA✔️
MACDMoving Average Convergence Divergence🔢Ⓜ️EMA✔️
MassIndexMass Index🕯️🔢EMA, CircBuff✔️
McGinleyDynamicMcGinley Dynamic🔢🔢CircBuff✔️
MeanDevMean Deviation🔢🔢CircBuff, SMA✔️
OBVOn Balance Volume🕯️🔢prev input val✔️
ParabolicSARParabolic Stop And Reverse🕯️Ⓜ️CirBuff✔️
PivotsHLHigh/Low Pivots🕯️Ⓜ️-🚧 unit tests in reference implementation are missing but code seems quite ready ✔️
ROCRate Of Change🔢🔢CircBuff✔️
RSIRelative Strength Index🔢🔢CircBuff, SMMA✔️
SFXSFX🕯️Ⓜ️ATR, StdDev, SMA and input_modifier (to extract close)✔️
SMASimple Moving Average🔢🔢CircBuff✔️
SMMASmoothed Moving Average🔢🔢CircBuff✔️
SOBVSmoothed On Balance Volume🕯️🔢OBV, SMA✔️
STCSchaff Trend Cycle🔢🔢MACD, Stoch with input_modifier (MACDVal->OHLCV and stoch_d->OHLCV), indicator chaining, MAFactory (default SMA)✔️
StdDevStandard Deviation🔢🔢CircBuff✔️
StochStochastic🕯️Ⓜ️CircBuff, SMA✔️ 🎄
StochRSIStochastic RSI🔢Ⓜ️RSI, SMA✔️
SuperTrendSuper Trend🕯️Ⓜ️CircBuff, ATR✔️
T3T3 Moving Average🔢🔢EMA with indicator chaining and input filter✔️
TEMATriple Exponential Moving Average🔢🔢EMA✔️
TRIXTRIX🕯️Ⓜ️EMA, indicator chaining✔️
TSITrue Strength Index🔢🔢EMA, indicator chaining✔️
TTMTTM Squeeze🕯️Ⓜ️SMA, BB, DonchianChannels, KeltnerChannels and input_modifier to extract close value of a candle✔️
UOUltimate Oscillator🕯️🔢CircBuff✔️
VTXVortex Indicator🕯️Ⓜ️CircBuff, ATR✔️
VWAPVolume Weighted Average Price🕯️🔢-✔️
VWMAVolume Weighted Moving Average🕯️🔢CircBuff✔️
WMAWeighted Moving Average🔢🔢CircBuff✔️
ZLEMAZero Lag Exponential Moving Average🔢🔢EMA✔️

Legend

🔢 single number (input or ouput)

Ⓜ️ multiple numbers (output)

🕯️ OHLCV candlestick input

Indicators implementation category

🔢 🔢 SISO indicators

🔢 Ⓜ️ SIMO indicators

🕯️ 🔢 MISO indicators

🕯️ Ⓜ️ MIMO indicators

Indicators can be of 1 out of 4 categories given their input/output behavior : SISO, SIMO, MISO and MIMO.

diff --git a/dev/install/index.html b/dev/install/index.html index 3668ff2..635ebd4 100644 --- a/dev/install/index.html +++ b/dev/install/index.html @@ -1,2 +1,2 @@ -Install · IncTA.jl

Install

Open Julia command line interface.

Type ] dev https://github.com/femtotrader/IncTA.jl/

+Install · IncTA.jl

Install

Open Julia command line interface.

Type ] dev https://github.com/femtotrader/IncTA.jl/

diff --git a/dev/internals/index.html b/dev/internals/index.html index d825468..64a9eec 100644 --- a/dev/internals/index.html +++ b/dev/internals/index.html @@ -1,2 +1,2 @@ -Internals · IncTA.jl

IncTA internals

Sub-indicator(s)

An indicator can be composed internally of sub-indicator(s). Input values catched by fit! calls are transmitted to each sub_indicators to be processed to _calculate_new_value function which calculates value of indicator output.

Example: Bollinger Bands (BB) indicator owns 2 internal sub-indicators

  • central_band which is a simple moving average of prices,
  • std_dev which is standard deviation of prices.

Composing new indicators

Indicators chaining

All indicators come with a great feature named indicators chaining. It's like building new indicator with Lego™ bricks.

Example:

  • DEMA : 2 EMA chained together
  • TEMA : 3 EMA chained together

Filtering and transforming input

Thanks to this indicator chaining feature it's possible to compose more complex indicators on top of the existing and simpler ones.

A mechanism for filtering and transforming input of an indicator which is feeded by an another one (using generally anonymous functions) have also be implemented.

Input of an indicator can be filtered / transformed to be used internaly by sub-indicators or be processed directly by _calculate_new_value function.

Moving average factory

  • SMA, EMA, ... are moving average.

Most complex indicators uses in their original form SMA or EMA as default moving average.

In some markets they can perform better by using instead an other kind of moving average.

A moving average factory have been implemented

This kind of indicators have a ma parameter in order to bypass their default moving average uses.

+Internals · IncTA.jl

IncTA internals

Sub-indicator(s)

An indicator can be composed internally of sub-indicator(s). Input values catched by fit! calls are transmitted to each sub_indicators to be processed to _calculate_new_value function which calculates value of indicator output.

Example: Bollinger Bands (BB) indicator owns 2 internal sub-indicators

  • central_band which is a simple moving average of prices,
  • std_dev which is standard deviation of prices.

Composing new indicators

Indicators chaining

All indicators come with a great feature named indicators chaining. It's like building new indicator with Lego™ bricks.

Example:

  • DEMA : 2 EMA chained together
  • TEMA : 3 EMA chained together

Filtering and transforming input

Thanks to this indicator chaining feature it's possible to compose more complex indicators on top of the existing and simpler ones.

A mechanism for filtering and transforming input of an indicator which is feeded by an another one (using generally anonymous functions) have also be implemented.

Input of an indicator can be filtered / transformed to be used internaly by sub-indicators or be processed directly by _calculate_new_value function.

Moving average factory

  • SMA, EMA, ... are moving average.

Most complex indicators uses in their original form SMA or EMA as default moving average.

In some markets they can perform better by using instead an other kind of moving average.

A moving average factory have been implemented

This kind of indicators have a ma parameter in order to bypass their default moving average uses.

diff --git a/dev/search_index.js b/dev/search_index.js index a7056b7..012fed4 100644 --- a/dev/search_index.js +++ b/dev/search_index.js @@ -1,3 +1,3 @@ var documenterSearchIndex = {"docs": -[{"location":"api/#API-Documentation","page":"API Documentation","title":"API Documentation","text":"","category":"section"},{"location":"api/#Indicators-(alphabetically-ordered)","page":"API Documentation","title":"Indicators (alphabetically ordered)","text":"","category":"section"},{"location":"api/","page":"API Documentation","title":"API Documentation","text":"IncTA.ADX\nIncTA.ALMA\nIncTA.AO\nIncTA.ATR\nIncTA.AccuDist\nIncTA.Aroon\nIncTA.BB\nIncTA.BOP\nIncTA.CCI\nIncTA.CHOP\nIncTA.ChaikinOsc\nIncTA.ChandeKrollStop\nIncTA.CoppockCurve\nIncTA.DEMA\nIncTA.DPO\nIncTA.DonchianChannels\nIncTA.EMA\nIncTA.EMV\nIncTA.ForceIndex\nIncTA.HMA\nIncTA.KAMA\nIncTA.KST\nIncTA.KVO\nIncTA.KeltnerChannels\nIncTA.MACD\nIncTA.MassIndex\nIncTA.McGinleyDynamic\nIncTA.MeanDev\nIncTA.OBV\nIncTA.ParabolicSAR\nIncTA.PivotsHL\nIncTA.ROC\nIncTA.RSI\nIncTA.SFX\nIncTA.SMA\nIncTA.SMMA\nIncTA.SOBV\nIncTA.STC\nIncTA.StdDev\nIncTA.Stoch\nIncTA.StochRSI\nIncTA.SuperTrend\nIncTA.T3\nIncTA.TEMA\nIncTA.TRIX\nIncTA.TSI\nIncTA.TTM\nIncTA.UO\nIncTA.VTX\nIncTA.VWAP\nIncTA.VWMA\nIncTA.WMA\nIncTA.ZLEMA","category":"page"},{"location":"api/#IncTA.ADX","page":"API Documentation","title":"IncTA.ADX","text":"ADX{Tohlcv}(; di_period = 14, adx_period = 14, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe ADX type implements an Average Directional Index indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.ALMA","page":"API Documentation","title":"IncTA.ALMA","text":"ALMA{T}(; period = ALMA_PERIOD, offset = ALMA_OFFSET, sigma = ALMA_SIGMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe ALMA type implements an Arnaud Legoux Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.AO","page":"API Documentation","title":"IncTA.AO","text":"AO{Tohlcv}(; fast_period = AO_FAST_PERIOD, slow_period = AO_SLOW_PERIOD, fast_ma = SMA, slow_ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe AO type implements an Awesome Oscillator indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.ATR","page":"API Documentation","title":"IncTA.ATR","text":"ATR{Tohlcv}(; period = ATR_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe ATR type implements an Average True Range indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.AccuDist","page":"API Documentation","title":"IncTA.AccuDist","text":"AccuDist{Tohlcv}(input_filter = always_true, input_modifier = identity)\n\nThe AccuDist type implements an Accumulation and Distribution indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.Aroon","page":"API Documentation","title":"IncTA.Aroon","text":"Aroon{Tohlcv}(; period = Aroon_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe Aroon type implements an Aroon indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.BB","page":"API Documentation","title":"IncTA.BB","text":"BB{T}(; period = BB_PERIOD, std_dev_mult = BB_STD_DEV_MULT, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe BB type implements Bollinger Bands indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.BOP","page":"API Documentation","title":"IncTA.BOP","text":"BOP{Tohlcv}(input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe BOP type implements a Balance Of Power indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.CCI","page":"API Documentation","title":"IncTA.CCI","text":"CCI{Tohlcv}(; period=CCI_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe CCI type implements a Commodity Channel Index.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.CHOP","page":"API Documentation","title":"IncTA.CHOP","text":"CHOP{Tohlcv}(; period = CHOP_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe CHOP type implements a Choppiness Index indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.ChaikinOsc","page":"API Documentation","title":"IncTA.ChaikinOsc","text":"ChaikinOsc{Tohlcv}(; fast_period = ChaikinOsc_FAST_PERIOD, slow_period = ChaikinOsc_SLOW_PERIOD, fast_ma = EMA, slow_ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe ChaikinOsc type implements a Chaikin Oscillator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.ChandeKrollStop","page":"API Documentation","title":"IncTA.ChandeKrollStop","text":"ChandeKrollStop{Tohlcv}(; atr_period = ChandeKrollStop_ATR_PERIOD, atr_mult = ChandeKrollStop_ATR_MULT, period = ChandeKrollStop_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe ChandeKrollStop type implements a ChandeKrollStop indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.CoppockCurve","page":"API Documentation","title":"IncTA.CoppockCurve","text":"CoppockCurve{T}(; fast_roc_period = CoppockCurve_FAST_ROC_PERIOD, slow_roc_period = CoppockCurve_SLOW_ROC_PERIOD, wma_period = CoppockCurve_WMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe CoppockCurve type implements a Coppock Curve indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.DEMA","page":"API Documentation","title":"IncTA.DEMA","text":"DEMA{T}(; period = DEMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe DEMA type implements a Double Exponential Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.DPO","page":"API Documentation","title":"IncTA.DPO","text":"DPO{T}(; period = DPO_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe DPO type implements a Detrended Price Oscillator indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.DonchianChannels","page":"API Documentation","title":"IncTA.DonchianChannels","text":"DonchianChannels{Tohlcv}(; period = DonchianChannels_ATR_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe DonchianChannels type implements a Donchian Channels indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.EMA","page":"API Documentation","title":"IncTA.EMA","text":"EMA{T}(; period = EMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe EMA type implements an Exponential Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.EMV","page":"API Documentation","title":"IncTA.EMV","text":"EMV{Tohlcv}(; period = EMV_PERIOD, volume_div = EMV_VOLUME_DIV, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe EMV type implements a Ease of Movement indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.ForceIndex","page":"API Documentation","title":"IncTA.ForceIndex","text":"ForceIndex{Tohlcv}(; period = ForceIndex_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe ForceIndex type implements a Force Index indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.HMA","page":"API Documentation","title":"IncTA.HMA","text":"HMA{T}(; period = HMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe HMA type implements a Hull Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.KAMA","page":"API Documentation","title":"IncTA.KAMA","text":"KAMA{T}(; period = KAMA_PERIOD, fast_ema_constant_period = KAMA_FAST_EMA_CONSTANT_PERIOD, slow_ema_constant_period = KAMA_SLOW_EMA_CONSTANT_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe KAMA type implements a Kaufman's Adaptive Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.KST","page":"API Documentation","title":"IncTA.KST","text":"KST{T}(;\n roc1_period = KST_ROC1_PERIOD,\n roc1_ma_period = KST_ROC1_MA_PERIOD,\n roc2_period = KST_ROC2_PERIOD,\n roc2_ma_period = KST_ROC2_MA_PERIOD,\n roc3_period = KST_ROC3_PERIOD,\n roc3_ma_period = KST_ROC3_MA_PERIOD,\n roc4_period = KST_ROC4_PERIOD,\n roc4_ma_period = KST_ROC4_MA_PERIOD,\n signal_period = KST_SIGNAL_PERIOD,\n ma = SMA,\n input_filter = always_true,\n input_modifier = identity,\n input_modifier_return_type = T\n)\n\nThe KST type implements Know Sure Thing indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.KVO","page":"API Documentation","title":"IncTA.KVO","text":"KVO{Tohlcv}(; fast_period = KVO_FAST_PERIOD, slow_period = KVO_SLOW_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe KVO type implements a Klinger Volume Oscillator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.KeltnerChannels","page":"API Documentation","title":"IncTA.KeltnerChannels","text":"KeltnerChannels{Tohlcv}(; ma_period = KeltnerChannels_MA_PERIOD, atr_period = KeltnerChannels_ATR_PERIOD, atr_mult_up = KeltnerChannels_ATR_MULT_UP, atr_mult_down = KeltnerChannels_ATR_MULT_DOWN, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe KeltnerChannels type implements a Keltner Channels indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.MACD","page":"API Documentation","title":"IncTA.MACD","text":"MACD{T}(; fast_period = MACD_FAST_PERIOD, slow_period = MACD_SLOW_PERIOD, signal_period = MACD_SIGNAL_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe MACD type implements Moving Average Convergence Divergence indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.MassIndex","page":"API Documentation","title":"IncTA.MassIndex","text":"MassIndex{T}(; ma_period = MassIndex_MA_PERIOD, ma_ma_period = MassIndex_MA_MA_PERIOD, ma_ratio_period = MassIndex_MA_RATIO_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe MassIndex type implements a Commodity Channel Index.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.McGinleyDynamic","page":"API Documentation","title":"IncTA.McGinleyDynamic","text":"McGinleyDynamic{T}(; period = McGinleyDynamic_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe McGinleyDynamic type implements a McGinley Dynamic indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.MeanDev","page":"API Documentation","title":"IncTA.MeanDev","text":"MeanDev{T}(; period = MeanDev_PERIOD, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe MeanDev type implements a Mean Deviation indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.OBV","page":"API Documentation","title":"IncTA.OBV","text":"OBV{Tohlcv}(input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe OBV type implements On Balance Volume indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.ParabolicSAR","page":"API Documentation","title":"IncTA.ParabolicSAR","text":"ParabolicSAR{Tohlcv}(; atr_period = ParabolicSAR_ATR_PERIOD, mult = ParabolicSAR_MULT, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe ParabolicSAR type implements a Super Trend indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.PivotsHL","page":"API Documentation","title":"IncTA.PivotsHL","text":"PivotsHL{Tohlcv}(; high_period = PivotsHL_HIGH_PERIOD, low_period = PivotsHL_LOW_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe PivotsHL type implements a High/Low Pivots Indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.ROC","page":"API Documentation","title":"IncTA.ROC","text":"ROC{T}(; period = ROC_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe ROC type implements a Rate Of Change indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.RSI","page":"API Documentation","title":"IncTA.RSI","text":"RSI{T}(; period = SMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe RSI type implements a Relative Strength Index indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.SFX","page":"API Documentation","title":"IncTA.SFX","text":"SFX{Tohlcv}(; atr_period = SFX_ATR_PERIOD, std_dev_period = SFX_STD_DEV_PERIOD, std_dev_smoothing_period = SFX_STD_DEV_SMOOTHING_PERIOD, ma = SMA, , input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe SFX type implements a SFX indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.SMA","page":"API Documentation","title":"IncTA.SMA","text":"SMA{T1}(; period = SMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T2)\n\nThe SMA type implements a Simple Moving Average indicator.\n\nfit!(o, val) with o of type SMA will catch val of type T1\n\ninput val will be filtered using input_filter function (true means that val will be provided to o)\n\ninput val will be modified/transformed using input_modifier function (default is identity function which means that val won't be modified)\n\ninput_modifier_return_type is the type T2 of return of the input_modifier function it's also type of indicator value\n\nby default T2 = T1\n\nIN = false means that indicator is of \"single input\" type IN = true means that indicator is of \"multiple input\" (candle) type\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.SMMA","page":"API Documentation","title":"IncTA.SMMA","text":"SMMA{T}(; period = SMMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe SMMA type implements a SMoothed Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.SOBV","page":"API Documentation","title":"IncTA.SOBV","text":"SOBV{Tohlcv}(; period = SOBV_PERIOD, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe SOBV type implements a Smoothed On Balance Volume indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.STC","page":"API Documentation","title":"IncTA.STC","text":"STC{T}(; fast_macd_period = STC_FAST_MACD_PERIOD, slow_macd_period = STC_SLOW_MACD_PERIOD, stoch_period = STC_STOCH_PERIOD, stoch_smoothing_period = STC_STOCH_SMOOTHING_PERIOD, ma = SMA, , input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe STC type implements a Schaff Trend Cycle indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.StdDev","page":"API Documentation","title":"IncTA.StdDev","text":"StdDev{T}(; period = StdDev_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe StdDev type implements a Standard Deviation indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.Stoch","page":"API Documentation","title":"IncTA.Stoch","text":"Stoch{Tohlcv}(; period = STOCH_PERIOD, smoothing_period = STOCH_SMOOTHING_PERIOD, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe Stoch type implements the Stochastic indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.StochRSI","page":"API Documentation","title":"IncTA.StochRSI","text":"StochRSI{T}(; fast_period = StochRSI_FAST_PERIOD, slow_period = StochRSI_SLOW_PERIOD, signal_period = StochRSI_SIGNAL_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe StochRSI type implements Moving Average Convergence Divergence indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.SuperTrend","page":"API Documentation","title":"IncTA.SuperTrend","text":"SuperTrend{Tohlcv}(; atr_period = SuperTrend_ATR_PERIOD, mult = SuperTrend_MULT, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe SuperTrend type implements a Super Trend indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.T3","page":"API Documentation","title":"IncTA.T3","text":"T3{T}(; period = T3_PERIOD, factor = T3_FACTOR, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe T3 type implements a T3 Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.TEMA","page":"API Documentation","title":"IncTA.TEMA","text":"TEMA{T}(; period = TEMA_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe TEMA type implements a Triple Exponential Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.TRIX","page":"API Documentation","title":"IncTA.TRIX","text":"TRIX{T}(; period = TRIX_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe TRIX type implements a TRIX Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.TSI","page":"API Documentation","title":"IncTA.TSI","text":"TSI{T}(; fast_period = TSI_FAST_PERIOD, slow_period = TSI_SLOW_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe TSI type implements a True Strength Index indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.TTM","page":"API Documentation","title":"IncTA.TTM","text":"TTM{Tohlcv}(; atr_period = TTM_ATR_PERIOD, std_dev_period = TTM_STD_DEV_PERIOD, std_dev_smoothing_period = TTM_STD_DEV_SMOOTHING_PERIOD, ma = SMA)\n\nThe TTM type implements a TTM indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.UO","page":"API Documentation","title":"IncTA.UO","text":"UO{Tohlcv}(; fast_period = UO_FAST_PERIOD, mid_period = UO_MID_PERIOD, slow_period = UO_SLOW_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe UO type implements an Ultimate Oscillator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.VTX","page":"API Documentation","title":"IncTA.VTX","text":"VTX{Tohlcv}(; period = VTX_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe VTX type implements a Vortex Indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.VWAP","page":"API Documentation","title":"IncTA.VWAP","text":"VWAP{Tohlcv}(input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe VWAP type implements a Volume Weighted Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.VWMA","page":"API Documentation","title":"IncTA.VWMA","text":"VWMA{Tohlcv}(; period = VWMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe VWMA type implements a Volume Weighted Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.WMA","page":"API Documentation","title":"IncTA.WMA","text":"WMA{T}(; period = WMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe WMA type implements a Weighted Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.ZLEMA","page":"API Documentation","title":"IncTA.ZLEMA","text":"ZLEMA{T}(; period=ZLEMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe ZLEMA type implements a Zero Lag Exponential Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#Other","page":"API Documentation","title":"Other","text":"","category":"section"},{"location":"api/","page":"API Documentation","title":"API Documentation","text":"IncTA.StatLag\nIncTA.TechnicalIndicatorIterator","category":"page"},{"location":"api/#IncTA.StatLag","page":"API Documentation","title":"IncTA.StatLag","text":"StatLag(ind, b)\n\nTrack a moving window (previous b copies) of ind.\n\nExample\n\nind = SMA{Float64}(period = 3)\nprices = [10.81, 10.58, 10.07, 10.58, 10.56, 10.4, 10.74, 10.16, 10.29, 9.4, 9.62]\nind = StatLag(ind, 4)\nfit!(ind, prices)\nind.lag[end-1]\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.TechnicalIndicatorIterator","page":"API Documentation","title":"IncTA.TechnicalIndicatorIterator","text":"TechnicalIndicatorIterator(indicator_type, iterable_input, args...; kwargs...)\n\nReturns an iterator.\n\nExample\n\nusing IncTA\nusing IncTA.SampleData: CLOSE_TMPL\n\nSISO indicator\n\nitr = TechnicalIndicatorIterator(SMA, CLOSE_TMPL; period = 3)\n\nprintln(\"First iteration\")\nfor val in itr\n println(val)\nend\n\nprintln(\"\")\n\nprintln(\"Second iteration\")\nIterators.reset!(itr)\nfor val in itr\n println(val)\nend\n\nprintln(\"\")\n\nprintln(\"Third iteration with collect\")\n# itr = TechnicalIndicatorIterator(SMA, CLOSE_TMPL; period = 3)\n# or\nIterators.reset!(itr)\nprintln(eltype(itr))\nprintln(collect(itr))\n\nprintln(\"\")\n\nSIMO indicator\n\nitr = TechnicalIndicatorIterator(BB, CLOSE_TMPL)\nprintln(collect(itr))\n\n\n\n\n\n","category":"type"},{"location":"usage/#Usage","page":"Usage","title":"Usage","text":"","category":"section"},{"location":"usage/","page":"Usage","title":"Usage","text":"See examples and tests","category":"page"},{"location":"usage/","page":"Usage","title":"Usage","text":"IncTA.jl - installing and using it","category":"page"},{"location":"usage/","page":"Usage","title":"Usage","text":"(Image: IncTA.jl - installing and using it)","category":"page"},{"location":"usage/","page":"Usage","title":"Usage","text":"IncTA.jl - dealing with TSFrames","category":"page"},{"location":"usage/","page":"Usage","title":"Usage","text":"(Image: IncTA.jl - dealing with TSFrames)","category":"page"},{"location":"usage_more/#Learn-more-about-IncTA-usage","page":"Learn more about usage","title":"Learn more about IncTA usage","text":"","category":"section"},{"location":"usage_more/#Feeding-a-technical-analysis-indicator-one-observation-at-a-time","page":"Learn more about usage","title":"Feeding a technical analysis indicator one observation at a time","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"A technical indicator can be feeded using fit! function.\nIt's feeded one observation at a time.","category":"page"},{"location":"usage_more/#Showing-sample-data-(close-prices)","page":"Learn more about usage","title":"Showing sample data (close prices)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"Some sample data are provided for testing purpose.","category":"page"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> using IncTA\njulia> using IncTA.SampleData: CLOSE_TMPL, V_OHLCV\njulia> CLOSE_TMPL\n50-element Vector{Float64}:\n 10.5\n 9.78\n 10.46\n 10.51\n ⋮\n 10.15\n 10.3\n 10.59\n 10.23\n 10.0","category":"page"},{"location":"usage_more/#Calculate-SMA-(simple-moving-average)","page":"Learn more about usage","title":"Calculate SMA (simple moving average)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> ind = SMA{Float64}(period = 3) # this is a SISO (single input / single output) indicator\nSMA: n=0 | value=missing\n\njulia> for p in CLOSE_TMPL\n fit!(ind, p)\n println(value(ind))\n end\nmissing\nmissing\n10.246666666666668\n10.250000000000002\n10.50666666666667\n10.593333333333335\n10.476666666666668\n ⋮\n9.283333333333339\n9.886666666666672\n10.346666666666671\n10.373333333333338\n10.273333333333339","category":"page"},{"location":"usage_more/#Calculate-BB-(Bollinger-bands)","page":"Learn more about usage","title":"Calculate BB (Bollinger bands)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> ind = BB{Float64}(period = 3) # this is a SIMO (single input / multiple output) indicator\n for p in CLOSE_TMPL\n fit!(ind, p)\n println(value(ind))\n end\nmissing\nmissing\nIncTA.BBVal{Float64}(9.585892709687261, 10.246666666666668, 10.907440623646075)\nIncTA.BBVal{Float64}(9.584067070444279, 10.250000000000002, 10.915932929555725)\nIncTA.BBVal{Float64}(10.433030926552087, 10.50666666666667, 10.580302406781252)\n ⋮\nIncTA.BBVal{Float64}(7.923987085233826, 9.283333333333339, 10.642679581432851)\nIncTA.BBVal{Float64}(8.921909932792502, 9.886666666666672, 10.851423400540842)\nIncTA.BBVal{Float64}(9.981396599151932, 10.346666666666671, 10.71193673418141)\nIncTA.BBVal{Float64}(10.061635473931714, 10.373333333333338, 10.685031192734963)\nIncTA.BBVal{Float64}(9.787718030627357, 10.273333333333339, 10.758948636039321)","category":"page"},{"location":"usage_more/#Showing-sample-data-(OHLCV-data)","page":"Learn more about usage","title":"Showing sample data (OHLCV data)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> V_OHLCV # fields are open/high/low/close/volume/time\n50-element Vector{OHLCV{Missing, Float64, Float64}}:\n OHLCV{Missing, Float64, Float64}(10.81, 11.02, 9.9, 10.5, 55.03, missing)\n OHLCV{Missing, Float64, Float64}(10.58, 10.74, 9.78, 9.78, 117.86, missing)\n OHLCV{Missing, Float64, Float64}(10.07, 10.65, 9.5, 10.46, 301.04, missing)\n OHLCV{Missing, Float64, Float64}(10.58, 11.05, 10.47, 10.51, 157.94, missing)\n ⋮\n OHLCV{Missing, Float64, Float64}(9.3, 10.5, 9.26, 10.15, 255.3, missing)\n OHLCV{Missing, Float64, Float64}(10.23, 10.3, 10.0, 10.3, 111.55, missing)\n OHLCV{Missing, Float64, Float64}(10.29, 10.86, 10.19, 10.59, 108.27, missing)\n OHLCV{Missing, Float64, Float64}(10.77, 10.77, 10.15, 10.23, 48.29, missing)\n OHLCV{Missing, Float64, Float64}(10.28, 10.39, 9.62, 10.0, 81.66, missing)","category":"page"},{"location":"usage_more/#Calculate-ATR-(Average-true-range)","page":"Learn more about usage","title":"Calculate ATR (Average true range)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> ind = ATR{OHLCV}(period = 3) # this is a MISO (multi input / single output) indicator\nATR: n=0 | value=missing\n\njulia> for candle in V_OHLCV\n fit!(ind, candle)\n println(value(ind))\n end\nmissing\nmissing\n1.0766666666666669\n0.9144444444444445\n0.7562962962962961\n ⋮\n0.898122497312842\n0.6987483315418949\n0.6891655543612633\n0.6661103695741752\n0.700740246382784","category":"page"},{"location":"usage_more/#Calculate-Stoch-(Stochastic)","page":"Learn more about usage","title":"Calculate Stoch (Stochastic)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> ind = Stoch{OHLCV{Missing,Float64,Float64}}(period = 3) # this is a MIMO indicator\nStoch: n=0 | value=missing\n\njulia> for candle in V_OHLCV\n fit!(ind, candle)\n println(value(ind))\n end\nIncTA.StochVal{Float64}(53.57142857142858, missing)\nIncTA.StochVal{Float64}(0.0, missing)\nIncTA.StochVal{Float64}(63.15789473684218, 38.90977443609025)\nIncTA.StochVal{Float64}(65.1612903225806, 42.77306168647426)\nIncTA.StochVal{Float64}(67.74193548387099, 65.35370684776458)\n ⋮\nIncTA.StochVal{Float64}(83.17307692307695, 54.98661936768733)\nIncTA.StochVal{Float64}(90.38461538461543, 83.17307692307693)\nIncTA.StochVal{Float64}(83.12500000000001, 85.56089743589745)\nIncTA.StochVal{Float64}(26.744186046511697, 66.75126714370903)\nIncTA.StochVal{Float64}(30.645161290322637, 46.83811577894477)","category":"page"},{"location":"usage_more/#Feeding-a-technical-analysis-indicator-with-a-compatible-Tables.jl-table-such-as-TSFrame","page":"Learn more about usage","title":"Feeding a technical analysis indicator with a compatible Tables.jl table such as TSFrame","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"A technical analysis indicator can also accept a Tables.jl compatible table (TSFrame) as input parameter.","category":"page"},{"location":"usage_more/#Showing-sample-data-(OHLCV-data)-2","page":"Learn more about usage","title":"Showing sample data (OHLCV data)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> using MarketData\njulia> using TSFrames\njulia> using Random\njulia> Random.seed!(1234) # to have reproductible results (so won't be really random)\njulia> ta = random_ohlcv() # should return a TimeSeries.TimeArray\njulia> ts = TSFrame(ta) # converts a TimeSeries.TimeArray to TSFrames.TSFrame\n500×5 TSFrame with DateTime Index\n Index Open High Low Close Volume\n DateTime Float64 Float64 Float64 Float64 Float64\n──────────────────────────────────────────────────────────────────\n 2020-01-01T00:00:00 326.75 334.03 326.18 333.16 83.6\n 2020-01-01T01:00:00 333.29 334.6 330.01 330.3 45.9\n 2020-01-01T02:00:00 330.79 336.7 329.99 334.0 71.2\n 2020-01-01T03:00:00 334.83 339.79 334.83 338.39 97.1\n 2020-01-01T04:00:00 338.36 339.09 331.22 331.22 79.1\n ⋮ ⋮ ⋮ ⋮ ⋮ ⋮\n 2020-01-21T15:00:00 353.2 360.62 349.99 358.86 59.0\n 2020-01-21T16:00:00 358.81 364.03 354.5 364.03 4.2\n 2020-01-21T17:00:00 363.06 367.52 362.31 362.31 90.0\n 2020-01-21T18:00:00 362.03 364.81 360.4 363.3 45.6\n 2020-01-21T19:00:00 362.35 363.23 358.28 361.52 19.8","category":"page"},{"location":"usage_more/#Simple-Moving-Average-(SMA)-of-close-prices","page":"Learn more about usage","title":"Simple Moving Average (SMA) of close prices","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> SMA(ts; period = 3)\n500×1 TSFrame with DateTime Index\n Index SMA\n DateTime Float64?\n──────────────────────────────────\n 2020-01-01T00:00:00 missing\n 2020-01-01T01:00:00 missing\n 2020-01-01T02:00:00 332.487\n 2020-01-01T03:00:00 334.23\n 2020-01-01T04:00:00 334.537\n ⋮ ⋮\n 2020-01-21T15:00:00 352.087\n 2020-01-21T16:00:00 358.41\n 2020-01-21T17:00:00 361.733\n 2020-01-21T18:00:00 363.213\n 2020-01-21T19:00:00 362.377","category":"page"},{"location":"usage_more/#Simple-Moving-Average-(SMA)-of-open-prices","page":"Learn more about usage","title":"Simple Moving Average (SMA) of open prices","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> SMA(ts; period = 3, default = :Open)\n500×1 TSFrame with DateTime Index\n Index SMA\n DateTime Float64?\n──────────────────────────────────\n 2020-01-01T00:00:00 missing\n 2020-01-01T01:00:00 missing\n 2020-01-01T02:00:00 330.277\n 2020-01-01T03:00:00 332.97\n 2020-01-01T04:00:00 334.66\n ⋮ ⋮\n 2020-01-21T15:00:00 346.72\n 2020-01-21T16:00:00 352.293\n 2020-01-21T17:00:00 358.357\n 2020-01-21T18:00:00 361.3\n 2020-01-21T19:00:00 362.48","category":"page"},{"location":"usage_more/#Calculate-BB-(Bollinger-bands)-2","page":"Learn more about usage","title":"Calculate BB (Bollinger bands)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> BB(ts; period = 3)\n500×3 TSFrame with DateTime Index\n Index BB_lower BB_central BB_upper\n DateTime Float64? Float64? Float64?\n────────────────────────────────────────────────────────────\n 2020-01-01T00:00:00 missing missing missing\n 2020-01-01T01:00:00 missing missing missing\n 2020-01-01T02:00:00 329.319 332.487 335.654\n 2020-01-01T03:00:00 327.617 334.23 340.843\n 2020-01-01T04:00:00 328.633 334.537 340.44\n ⋮ ⋮ ⋮ ⋮\n 2020-01-21T15:00:00 340.813 352.087 363.36\n 2020-01-21T16:00:00 348.844 358.41 367.976\n 2020-01-21T17:00:00 357.434 361.733 366.033\n 2020-01-21T18:00:00 361.804 363.213 364.623\n 2020-01-21T19:00:00 360.92 362.377 363.833","category":"page"},{"location":"usage_more/#Calculate-ATR-(Average-true-range)-2","page":"Learn more about usage","title":"Calculate ATR (Average true range)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> ATR(ts; period = 3)\n500×1 TSFrame with DateTime Index\n Index ATR\n DateTime Float64?\n────────────────────────────────────\n 2020-01-01T00:00:00 missing\n 2020-01-01T01:00:00 missing\n 2020-01-01T02:00:00 6.38333\n 2020-01-01T03:00:00 6.18556\n 2020-01-01T04:00:00 6.74704\n ⋮ ⋮\n 2020-01-21T15:00:00 8.53068\n 2020-01-21T16:00:00 8.86378\n 2020-01-21T17:00:00 7.64586\n 2020-01-21T18:00:00 6.56724\n 2020-01-21T19:00:00 6.05149","category":"page"},{"location":"usage_more/#Calculate-Stoch-(Stochastic)-2","page":"Learn more about usage","title":"Calculate Stoch (Stochastic)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> Stoch(ts; period = 3)\n500×2 TSFrame with DateTime Index\n Index Stoch_k Stoch_d\n DateTime Float64 Float64?\n───────────────────────────────────────────────\n 2020-01-01T00:00:00 88.9172 missing\n 2020-01-01T01:00:00 48.9311 missing\n 2020-01-01T02:00:00 74.3346 70.7276\n 2020-01-01T03:00:00 85.7143 69.66\n 2020-01-01T04:00:00 12.551 57.5333\n ⋮ ⋮ ⋮\n 2020-01-21T15:00:00 91.4272 93.9504\n 2020-01-21T16:00:00 100.0 97.1424\n 2020-01-21T17:00:00 70.2795 87.2356\n 2020-01-21T18:00:00 67.5883 79.2893\n 2020-01-21T19:00:00 35.0649 57.6443","category":"page"},{"location":"features/#Package-Features","page":"Package Features","title":"Package Features","text":"","category":"section"},{"location":"features/","page":"Package Features","title":"Package Features","text":"Input new data (one observation at a time) to indicator with fit! function (from OnlineStats.jl)\nInput data which inherits AbstractVector\nInput data as compatible Tables.jl format\nSub-indicators\nIndicators chaining\nFilter/transform input of indicator","category":"page"},{"location":"indicators_support/#Indicators-support","page":"Indicators support","title":"Indicators support","text":"","category":"section"},{"location":"indicators_support/","page":"Indicators support","title":"Indicators support","text":"Name Description Input Output Dependencies Implementation status\nAccuDist Accumulation and Distribution 🕯️ 🔢 - ✔️\nADX Average Directional Index 🕯️ Ⓜ️ ATR ✔️\nALMA Arnaud Legoux Moving Average 🔢 🔢 CircBuff ✔️\nAO Awesome Oscillator 🕯️ 🔢 SMA ✔️\nAroon Aroon Up/Down 🕯️ Ⓜ️ CirBuff ✔️\nATR Average True Range 🕯️ 🔢 CircBuff ✔️\nBB Bollinger Bands 🔢 Ⓜ️ SMA, StdDev ✔️\nBOP Balance Of Power 🕯️ 🔢 - ✔️\nCCI Commodity Channel Index 🕯️ 🔢 MeanDev ✔️\nChaikinOsc Chaikin Oscillator 🕯️ 🔢 AccuDist, EMA ✔️\nChandeKrollStop Chande Kroll Stop 🕯️ Ⓜ️ CircBuff, ATR ✔️\nCHOP Choppiness Index 🕯️ 🔢 CirBuff, ATR ✔️\nCoppockCurve Coppock Curve 🔢 🔢 ROC, WMA ✔️\nDEMA Double Exponential Moving Average 🔢 🔢 EMA ✔️\nDonchianChannels Donchian Channels 🕯️ Ⓜ️ CircBuff ✔️\nDPO Detrended Price Oscillator 🔢 🔢 CircBuff, SMA ✔️\nEMA Exponential Moving Average 🔢 🔢 CircBuff ✔️\nEMV Ease of Movement 🕯️ 🔢 CircBuff, SMA ✔️\nFibRetracement Fibonacci Retracement ❓ ❓ doesn't look an indicator just a simple class with 236 382 5 618 786 values\nForceIndex Force Index 🕯️ 🔢 prev input val, EMA ✔️\nHMA Hull Moving Average 🔢 🔢 WMA ✔️\nIchimoku Ichimoku Clouds 🔢 Ⓜ️ CircBuff 5 managed sequences ❓ unit tests doesn't exists in reference implementation\nKAMA Kaufman's Adaptive Moving Average 🔢 🔢 CircBuff ✔️\nKeltnerChannels Keltner Channels 🕯️ Ⓜ️ ATR, EMA with input_modifier to extract close value of a candle ✔️\nKST Know Sure Thing 🔢 Ⓜ️ ROC, SMA ✔️\nKVO Klinger Volume Oscillator 🕯️ 🔢 EMA ✔️\nMACD Moving Average Convergence Divergence 🔢 Ⓜ️ EMA ✔️\nMassIndex Mass Index 🕯️ 🔢 EMA, CircBuff ✔️\nMcGinleyDynamic McGinley Dynamic 🔢 🔢 CircBuff ✔️\nMeanDev Mean Deviation 🔢 🔢 CircBuff, SMA ✔️\nOBV On Balance Volume 🕯️ 🔢 prev input val ✔️\nParabolicSAR Parabolic Stop And Reverse 🕯️ Ⓜ️ CirBuff ✔️\nPivotsHL High/Low Pivots 🕯️ Ⓜ️ - 🚧 unit tests in reference implementation are missing but code seems quite ready ✔️\nROC Rate Of Change 🔢 🔢 CircBuff ✔️\nRSI Relative Strength Index 🔢 🔢 CircBuff, SMMA ✔️\nSFX SFX 🕯️ Ⓜ️ ATR, StdDev, SMA and input_modifier (to extract close) ✔️\nSMA Simple Moving Average 🔢 🔢 CircBuff ✔️\nSMMA Smoothed Moving Average 🔢 🔢 CircBuff ✔️\nSOBV Smoothed On Balance Volume 🕯️ 🔢 OBV, SMA ✔️\nSTC Schaff Trend Cycle 🔢 🔢 MACD, Stoch with input_modifier (MACDVal->OHLCV and stoch_d->OHLCV), indicator chaining, MAFactory (default SMA) ✔️\nStdDev Standard Deviation 🔢 🔢 CircBuff ✔️\nStoch Stochastic 🕯️ Ⓜ️ CircBuff, SMA ✔️ 🎄\nStochRSI Stochastic RSI 🔢 Ⓜ️ RSI, SMA ✔️\nSuperTrend Super Trend 🕯️ Ⓜ️ CircBuff, ATR ✔️\nT3 T3 Moving Average 🔢 🔢 EMA with indicator chaining and input filter ✔️\nTEMA Triple Exponential Moving Average 🔢 🔢 EMA ✔️\nTRIX TRIX 🕯️ Ⓜ️ EMA, indicator chaining ✔️\nTSI True Strength Index 🔢 🔢 EMA, indicator chaining ✔️\nTTM TTM Squeeze 🕯️ Ⓜ️ SMA, BB, DonchianChannels, KeltnerChannels and input_modifier to extract close value of a candle ✔️\nUO Ultimate Oscillator 🕯️ 🔢 CircBuff ✔️\nVTX Vortex Indicator 🕯️ Ⓜ️ CircBuff, ATR ✔️\nVWAP Volume Weighted Average Price 🕯️ 🔢 - ✔️\nVWMA Volume Weighted Moving Average 🕯️ 🔢 CircBuff ✔️\nWMA Weighted Moving Average 🔢 🔢 CircBuff ✔️\nZLEMA Zero Lag Exponential Moving Average 🔢 🔢 EMA ✔️","category":"page"},{"location":"indicators_support/#Legend","page":"Indicators support","title":"Legend","text":"","category":"section"},{"location":"indicators_support/","page":"Indicators support","title":"Indicators support","text":"🔢 single number (input or ouput)","category":"page"},{"location":"indicators_support/","page":"Indicators support","title":"Indicators support","text":"Ⓜ️ multiple numbers (output)","category":"page"},{"location":"indicators_support/","page":"Indicators support","title":"Indicators support","text":"🕯️ OHLCV candlestick input","category":"page"},{"location":"indicators_support/#Indicators-implementation-category","page":"Indicators support","title":"Indicators implementation category","text":"","category":"section"},{"location":"indicators_support/","page":"Indicators support","title":"Indicators support","text":"🔢 🔢 SISO indicators","category":"page"},{"location":"indicators_support/","page":"Indicators support","title":"Indicators support","text":"🔢 Ⓜ️ SIMO indicators","category":"page"},{"location":"indicators_support/","page":"Indicators support","title":"Indicators support","text":"🕯️ 🔢 MISO indicators","category":"page"},{"location":"indicators_support/","page":"Indicators support","title":"Indicators support","text":"🕯️ Ⓜ️ MIMO indicators","category":"page"},{"location":"indicators_support/","page":"Indicators support","title":"Indicators support","text":"Indicators can be of 1 out of 4 categories given their input/output behavior : SISO, SIMO, MISO and MIMO.","category":"page"},{"location":"implementing_your_indic/#Implementing-your-own-indicator","page":"Implementing your own indicator","title":"Implementing your own indicator","text":"","category":"section"},{"location":"implementing_your_indic/#Categorization-of-your-indicator","page":"Implementing your own indicator","title":"Categorization of your indicator","text":"","category":"section"},{"location":"implementing_your_indic/","page":"Implementing your own indicator","title":"Implementing your own indicator","text":"Categorization of indicators is done to better understand implementation of indicators, not to understand the role of each indicator. To better understand the role of each indicator other categories such as moving averages, momentum indicators, volatility indicators are better suited.","category":"page"},{"location":"implementing_your_indic/#SISO-indicators-(-)","page":"Implementing your own indicator","title":"SISO indicators (🔢 🔢)","text":"","category":"section"},{"location":"implementing_your_indic/","page":"Implementing your own indicator","title":"Implementing your own indicator","text":"A SISO indicator takes one simple observation (price of an asset, volume of assets traded...) and output just one value for this observation.","category":"page"},{"location":"implementing_your_indic/","page":"Implementing your own indicator","title":"Implementing your own indicator","text":"SMA, EMA are good examples of such indicator category (but also most of others moving average indicators).","category":"page"},{"location":"implementing_your_indic/#SIMO-indicators-(-)","page":"Implementing your own indicator","title":"SIMO indicators (🔢 Ⓜ️)","text":"","category":"section"},{"location":"implementing_your_indic/","page":"Implementing your own indicator","title":"Implementing your own indicator","text":"The very famous BB (Bollinger Bands developed by financial analyst John Bollinger) indicator is an example of SIMO indicator. Like a SISO indicator it takes one simple value at a time. But contrary to SISO indicator, SIMO indicators generate several values at a time (upper band, central value, lower band in the case of Bollinger Bands indicator).","category":"page"},{"location":"implementing_your_indic/#MISO-indicators-(-)","page":"Implementing your own indicator","title":"MISO indicators (🕯️ 🔢)","text":"","category":"section"},{"location":"implementing_your_indic/","page":"Implementing your own indicator","title":"Implementing your own indicator","text":"IncTA have also some MISO indicators ie indicators which takes several values at a time. It can be candlestick OHLCV data for example. Average True Range (ATR) is an example of such an indicator. It's the average of true ranges over the specified period. ATR measures volatility, taking into account any gaps in the price movement. It was developed by a very prolific author named J. Welles Wilder (also author of RSI, ParabolicSAR and ADX).","category":"page"},{"location":"implementing_your_indic/#MIMO-indicators-(-)","page":"Implementing your own indicator","title":"MIMO indicators (🕯️ Ⓜ️)","text":"","category":"section"},{"location":"implementing_your_indic/","page":"Implementing your own indicator","title":"Implementing your own indicator","text":"The last implementation type of indicator are MIMO indicators ie indicator which take several values at a time (such a candlestick data) and ouput several values at a time. Stochastic oscillator (Stoch also known as KD indicator) is an example of such indicator implementation category). It was developed in the late 1950s by a technical analyst named Georges Lane. This method attempts to predict price turning points by comparing the closing price of a security to its price range. Such indicator ouputs 2 values at a time : k and d.","category":"page"},{"location":"implementing_your_indic/#Steps-to-implement-your-own-indicator","page":"Implementing your own indicator","title":"Steps to implement your own indicator","text":"","category":"section"},{"location":"implementing_your_indic/","page":"Implementing your own indicator","title":"Implementing your own indicator","text":"First step to implement your own indicator is to categorized it in the SISO, SIMO, MISO, MIMO category.\nLook at indicator dependencies and try to find out an existing indicator of similar category with similar features used.\nWatch existing code of an indicator of a similar category with quite similar dependencies.\nCopy file into src\\indicators directory with same name for struct and filename (that's important for tests)\nIncrement number of indicators in test_indicators_interface.jl\n@test length(files) == ... # number of indicators\nCreate unit tests (in the correct category) and ensure they are passing.","category":"page"},{"location":"install/#Install","page":"Install","title":"Install","text":"","category":"section"},{"location":"install/","page":"Install","title":"Install","text":"Open Julia command line interface. ","category":"page"},{"location":"install/","page":"Install","title":"Install","text":"Type ] dev https://github.com/femtotrader/IncTA.jl/","category":"page"},{"location":"","page":"Home","title":"Home","text":"(Image: Build Status)","category":"page"},{"location":"#IncTA.jl","page":"Home","title":"IncTA.jl","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"This project implements some Technical Analysis Indicators in Julia in an incremental approach.","category":"page"},{"location":"","page":"Home","title":"Home","text":"It's inspired by Python project talipp which is used as \"reference implementation\" for unit tests.","category":"page"},{"location":"","page":"Home","title":"Home","text":"It depends especially on OnlineStatsBase.jl and on Tables.jl.","category":"page"},{"location":"","page":"Home","title":"Home","text":"Currently more than 50 technical analysis indicators are supported (SMA, EMA, SMMA, RSI, MeanDev, StdDev, ROC, WMA, KAMA, HMA, DPO, CoppockCurve, DEMA, TEMA, ALMA, McGinleyDynamic, ZLEMA, T3, TRIX, TSI ; BB, MACD, StochRSI, KST ; AccuDist, BOP, CCI, ChaikinOsc, VWMA, VWAP, AO, ATR, ForceIndex, OBV, SOBV, EMV, MassIndex, CHOP, KVO, UO ; Stoch, ADX, SuperTrend, VTX, DonchianChannels, KeltnerChannels, Aroon, ChandeKrollStop, ParabolicSAR, SFX, TTM, PivotsHL ; STC)","category":"page"},{"location":"","page":"Home","title":"Home","text":"🚧 This software is under construction. API can have breaking changes.","category":"page"},{"location":"#Contents","page":"Home","title":"Contents","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"Pages = [\n \"index.md\",\n \"features.md\",\n \"install.md\",\n \"usage.md\",\n \"indicators_support.md\",\n \"usage_more.md\",\n \"internals.md\",\n \"implementing_your_indic.md\",\n]","category":"page"},{"location":"internals/#IncTA-internals","page":"Internals","title":"IncTA internals","text":"","category":"section"},{"location":"internals/#Sub-indicator(s)","page":"Internals","title":"Sub-indicator(s)","text":"","category":"section"},{"location":"internals/","page":"Internals","title":"Internals","text":"An indicator can be composed internally of sub-indicator(s). Input values catched by fit! calls are transmitted to each sub_indicators to be processed to _calculate_new_value function which calculates value of indicator output.","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"Example: Bollinger Bands (BB) indicator owns 2 internal sub-indicators","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"central_band which is a simple moving average of prices,\nstd_dev which is standard deviation of prices.","category":"page"},{"location":"internals/#Composing-new-indicators","page":"Internals","title":"Composing new indicators","text":"","category":"section"},{"location":"internals/#Indicators-chaining","page":"Internals","title":"Indicators chaining","text":"","category":"section"},{"location":"internals/","page":"Internals","title":"Internals","text":"All indicators come with a great feature named indicators chaining. It's like building new indicator with Lego™ bricks.","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"Example:","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"DEMA : 2 EMA chained together\nTEMA : 3 EMA chained together","category":"page"},{"location":"internals/#Filtering-and-transforming-input","page":"Internals","title":"Filtering and transforming input","text":"","category":"section"},{"location":"internals/","page":"Internals","title":"Internals","text":"Thanks to this indicator chaining feature it's possible to compose more complex indicators on top of the existing and simpler ones.","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"A mechanism for filtering and transforming input of an indicator which is feeded by an another one (using generally anonymous functions) have also be implemented.","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"Input of an indicator can be filtered / transformed to be used internaly by sub-indicators or be processed directly by _calculate_new_value function.","category":"page"},{"location":"internals/#Moving-average-factory","page":"Internals","title":"Moving average factory","text":"","category":"section"},{"location":"internals/","page":"Internals","title":"Internals","text":"SMA, EMA, ... are moving average.","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"Most complex indicators uses in their original form SMA or EMA as default moving average.","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"In some markets they can perform better by using instead an other kind of moving average.","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"A moving average factory have been implemented ","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"This kind of indicators have a ma parameter in order to bypass their default moving average uses.","category":"page"}] +[{"location":"api/#API-Documentation","page":"API","title":"API Documentation","text":"","category":"section"},{"location":"api/#Indicators-(alphabetically-ordered)","page":"API","title":"Indicators (alphabetically ordered)","text":"","category":"section"},{"location":"api/","page":"API","title":"API","text":"IncTA.ADX\nIncTA.ALMA\nIncTA.AO\nIncTA.ATR\nIncTA.AccuDist\nIncTA.Aroon\nIncTA.BB\nIncTA.BOP\nIncTA.CCI\nIncTA.CHOP\nIncTA.ChaikinOsc\nIncTA.ChandeKrollStop\nIncTA.CoppockCurve\nIncTA.DEMA\nIncTA.DPO\nIncTA.DonchianChannels\nIncTA.EMA\nIncTA.EMV\nIncTA.ForceIndex\nIncTA.HMA\nIncTA.KAMA\nIncTA.KST\nIncTA.KVO\nIncTA.KeltnerChannels\nIncTA.MACD\nIncTA.MassIndex\nIncTA.McGinleyDynamic\nIncTA.MeanDev\nIncTA.OBV\nIncTA.ParabolicSAR\nIncTA.PivotsHL\nIncTA.ROC\nIncTA.RSI\nIncTA.SFX\nIncTA.SMA\nIncTA.SMMA\nIncTA.SOBV\nIncTA.STC\nIncTA.StdDev\nIncTA.Stoch\nIncTA.StochRSI\nIncTA.SuperTrend\nIncTA.T3\nIncTA.TEMA\nIncTA.TRIX\nIncTA.TSI\nIncTA.TTM\nIncTA.UO\nIncTA.VTX\nIncTA.VWAP\nIncTA.VWMA\nIncTA.WMA\nIncTA.ZLEMA","category":"page"},{"location":"api/#IncTA.ADX","page":"API","title":"IncTA.ADX","text":"ADX{Tohlcv}(; di_period = 14, adx_period = 14, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe ADX type implements an Average Directional Index indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.ALMA","page":"API","title":"IncTA.ALMA","text":"ALMA{T}(; period = ALMA_PERIOD, offset = ALMA_OFFSET, sigma = ALMA_SIGMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe ALMA type implements an Arnaud Legoux Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.AO","page":"API","title":"IncTA.AO","text":"AO{Tohlcv}(; fast_period = AO_FAST_PERIOD, slow_period = AO_SLOW_PERIOD, fast_ma = SMA, slow_ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe AO type implements an Awesome Oscillator indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.ATR","page":"API","title":"IncTA.ATR","text":"ATR{Tohlcv}(; period = ATR_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe ATR type implements an Average True Range indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.AccuDist","page":"API","title":"IncTA.AccuDist","text":"AccuDist{Tohlcv}(input_filter = always_true, input_modifier = identity)\n\nThe AccuDist type implements an Accumulation and Distribution indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.Aroon","page":"API","title":"IncTA.Aroon","text":"Aroon{Tohlcv}(; period = Aroon_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe Aroon type implements an Aroon indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.BB","page":"API","title":"IncTA.BB","text":"BB{T}(; period = BB_PERIOD, std_dev_mult = BB_STD_DEV_MULT, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe BB type implements Bollinger Bands indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.BOP","page":"API","title":"IncTA.BOP","text":"BOP{Tohlcv}(input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe BOP type implements a Balance Of Power indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.CCI","page":"API","title":"IncTA.CCI","text":"CCI{Tohlcv}(; period=CCI_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe CCI type implements a Commodity Channel Index.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.CHOP","page":"API","title":"IncTA.CHOP","text":"CHOP{Tohlcv}(; period = CHOP_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe CHOP type implements a Choppiness Index indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.ChaikinOsc","page":"API","title":"IncTA.ChaikinOsc","text":"ChaikinOsc{Tohlcv}(; fast_period = ChaikinOsc_FAST_PERIOD, slow_period = ChaikinOsc_SLOW_PERIOD, fast_ma = EMA, slow_ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe ChaikinOsc type implements a Chaikin Oscillator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.ChandeKrollStop","page":"API","title":"IncTA.ChandeKrollStop","text":"ChandeKrollStop{Tohlcv}(; atr_period = ChandeKrollStop_ATR_PERIOD, atr_mult = ChandeKrollStop_ATR_MULT, period = ChandeKrollStop_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe ChandeKrollStop type implements a ChandeKrollStop indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.CoppockCurve","page":"API","title":"IncTA.CoppockCurve","text":"CoppockCurve{T}(; fast_roc_period = CoppockCurve_FAST_ROC_PERIOD, slow_roc_period = CoppockCurve_SLOW_ROC_PERIOD, wma_period = CoppockCurve_WMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe CoppockCurve type implements a Coppock Curve indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.DEMA","page":"API","title":"IncTA.DEMA","text":"DEMA{T}(; period = DEMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe DEMA type implements a Double Exponential Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.DPO","page":"API","title":"IncTA.DPO","text":"DPO{T}(; period = DPO_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe DPO type implements a Detrended Price Oscillator indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.DonchianChannels","page":"API","title":"IncTA.DonchianChannels","text":"DonchianChannels{Tohlcv}(; period = DonchianChannels_ATR_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe DonchianChannels type implements a Donchian Channels indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.EMA","page":"API","title":"IncTA.EMA","text":"EMA{T}(; period = EMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe EMA type implements an Exponential Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.EMV","page":"API","title":"IncTA.EMV","text":"EMV{Tohlcv}(; period = EMV_PERIOD, volume_div = EMV_VOLUME_DIV, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe EMV type implements a Ease of Movement indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.ForceIndex","page":"API","title":"IncTA.ForceIndex","text":"ForceIndex{Tohlcv}(; period = ForceIndex_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe ForceIndex type implements a Force Index indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.HMA","page":"API","title":"IncTA.HMA","text":"HMA{T}(; period = HMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe HMA type implements a Hull Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.KAMA","page":"API","title":"IncTA.KAMA","text":"KAMA{T}(; period = KAMA_PERIOD, fast_ema_constant_period = KAMA_FAST_EMA_CONSTANT_PERIOD, slow_ema_constant_period = KAMA_SLOW_EMA_CONSTANT_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe KAMA type implements a Kaufman's Adaptive Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.KST","page":"API","title":"IncTA.KST","text":"KST{T}(;\n roc1_period = KST_ROC1_PERIOD,\n roc1_ma_period = KST_ROC1_MA_PERIOD,\n roc2_period = KST_ROC2_PERIOD,\n roc2_ma_period = KST_ROC2_MA_PERIOD,\n roc3_period = KST_ROC3_PERIOD,\n roc3_ma_period = KST_ROC3_MA_PERIOD,\n roc4_period = KST_ROC4_PERIOD,\n roc4_ma_period = KST_ROC4_MA_PERIOD,\n signal_period = KST_SIGNAL_PERIOD,\n ma = SMA,\n input_filter = always_true,\n input_modifier = identity,\n input_modifier_return_type = T\n)\n\nThe KST type implements Know Sure Thing indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.KVO","page":"API","title":"IncTA.KVO","text":"KVO{Tohlcv}(; fast_period = KVO_FAST_PERIOD, slow_period = KVO_SLOW_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe KVO type implements a Klinger Volume Oscillator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.KeltnerChannels","page":"API","title":"IncTA.KeltnerChannels","text":"KeltnerChannels{Tohlcv}(; ma_period = KeltnerChannels_MA_PERIOD, atr_period = KeltnerChannels_ATR_PERIOD, atr_mult_up = KeltnerChannels_ATR_MULT_UP, atr_mult_down = KeltnerChannels_ATR_MULT_DOWN, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe KeltnerChannels type implements a Keltner Channels indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.MACD","page":"API","title":"IncTA.MACD","text":"MACD{T}(; fast_period = MACD_FAST_PERIOD, slow_period = MACD_SLOW_PERIOD, signal_period = MACD_SIGNAL_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe MACD type implements Moving Average Convergence Divergence indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.MassIndex","page":"API","title":"IncTA.MassIndex","text":"MassIndex{T}(; ma_period = MassIndex_MA_PERIOD, ma_ma_period = MassIndex_MA_MA_PERIOD, ma_ratio_period = MassIndex_MA_RATIO_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe MassIndex type implements a Commodity Channel Index.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.McGinleyDynamic","page":"API","title":"IncTA.McGinleyDynamic","text":"McGinleyDynamic{T}(; period = McGinleyDynamic_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe McGinleyDynamic type implements a McGinley Dynamic indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.MeanDev","page":"API","title":"IncTA.MeanDev","text":"MeanDev{T}(; period = MeanDev_PERIOD, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe MeanDev type implements a Mean Deviation indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.OBV","page":"API","title":"IncTA.OBV","text":"OBV{Tohlcv}(input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe OBV type implements On Balance Volume indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.ParabolicSAR","page":"API","title":"IncTA.ParabolicSAR","text":"ParabolicSAR{Tohlcv}(; atr_period = ParabolicSAR_ATR_PERIOD, mult = ParabolicSAR_MULT, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe ParabolicSAR type implements a Super Trend indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.PivotsHL","page":"API","title":"IncTA.PivotsHL","text":"PivotsHL{Tohlcv}(; high_period = PivotsHL_HIGH_PERIOD, low_period = PivotsHL_LOW_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe PivotsHL type implements a High/Low Pivots Indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.ROC","page":"API","title":"IncTA.ROC","text":"ROC{T}(; period = ROC_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe ROC type implements a Rate Of Change indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.RSI","page":"API","title":"IncTA.RSI","text":"RSI{T}(; period = SMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe RSI type implements a Relative Strength Index indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.SFX","page":"API","title":"IncTA.SFX","text":"SFX{Tohlcv}(; atr_period = SFX_ATR_PERIOD, std_dev_period = SFX_STD_DEV_PERIOD, std_dev_smoothing_period = SFX_STD_DEV_SMOOTHING_PERIOD, ma = SMA, , input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe SFX type implements a SFX indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.SMA","page":"API","title":"IncTA.SMA","text":"SMA{T1}(; period = SMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T2)\n\nThe SMA type implements a Simple Moving Average indicator.\n\nfit!(o, val) with o of type SMA will catch val of type T1\n\ninput val will be filtered using input_filter function (true means that val will be provided to o)\n\ninput val will be modified/transformed using input_modifier function (default is identity function which means that val won't be modified)\n\ninput_modifier_return_type is the type T2 of return of the input_modifier function it's also type of indicator value\n\nby default T2 = T1\n\nIN = false means that indicator is of \"single input\" type IN = true means that indicator is of \"multiple input\" (candle) type\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.SMMA","page":"API","title":"IncTA.SMMA","text":"SMMA{T}(; period = SMMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe SMMA type implements a SMoothed Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.SOBV","page":"API","title":"IncTA.SOBV","text":"SOBV{Tohlcv}(; period = SOBV_PERIOD, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe SOBV type implements a Smoothed On Balance Volume indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.STC","page":"API","title":"IncTA.STC","text":"STC{T}(; fast_macd_period = STC_FAST_MACD_PERIOD, slow_macd_period = STC_SLOW_MACD_PERIOD, stoch_period = STC_STOCH_PERIOD, stoch_smoothing_period = STC_STOCH_SMOOTHING_PERIOD, ma = SMA, , input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe STC type implements a Schaff Trend Cycle indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.StdDev","page":"API","title":"IncTA.StdDev","text":"StdDev{T}(; period = StdDev_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe StdDev type implements a Standard Deviation indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.Stoch","page":"API","title":"IncTA.Stoch","text":"Stoch{Tohlcv}(; period = STOCH_PERIOD, smoothing_period = STOCH_SMOOTHING_PERIOD, ma = SMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe Stoch type implements the Stochastic indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.StochRSI","page":"API","title":"IncTA.StochRSI","text":"StochRSI{T}(; fast_period = StochRSI_FAST_PERIOD, slow_period = StochRSI_SLOW_PERIOD, signal_period = StochRSI_SIGNAL_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe StochRSI type implements Moving Average Convergence Divergence indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.SuperTrend","page":"API","title":"IncTA.SuperTrend","text":"SuperTrend{Tohlcv}(; atr_period = SuperTrend_ATR_PERIOD, mult = SuperTrend_MULT, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe SuperTrend type implements a Super Trend indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.T3","page":"API","title":"IncTA.T3","text":"T3{T}(; period = T3_PERIOD, factor = T3_FACTOR, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe T3 type implements a T3 Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.TEMA","page":"API","title":"IncTA.TEMA","text":"TEMA{T}(; period = TEMA_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe TEMA type implements a Triple Exponential Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.TRIX","page":"API","title":"IncTA.TRIX","text":"TRIX{T}(; period = TRIX_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe TRIX type implements a TRIX Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.TSI","page":"API","title":"IncTA.TSI","text":"TSI{T}(; fast_period = TSI_FAST_PERIOD, slow_period = TSI_SLOW_PERIOD, ma = EMA, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe TSI type implements a True Strength Index indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.TTM","page":"API","title":"IncTA.TTM","text":"TTM{Tohlcv}(; atr_period = TTM_ATR_PERIOD, std_dev_period = TTM_STD_DEV_PERIOD, std_dev_smoothing_period = TTM_STD_DEV_SMOOTHING_PERIOD, ma = SMA)\n\nThe TTM type implements a TTM indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.UO","page":"API","title":"IncTA.UO","text":"UO{Tohlcv}(; fast_period = UO_FAST_PERIOD, mid_period = UO_MID_PERIOD, slow_period = UO_SLOW_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe UO type implements an Ultimate Oscillator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.VTX","page":"API","title":"IncTA.VTX","text":"VTX{Tohlcv}(; period = VTX_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe VTX type implements a Vortex Indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.VWAP","page":"API","title":"IncTA.VWAP","text":"VWAP{Tohlcv}(input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe VWAP type implements a Volume Weighted Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.VWMA","page":"API","title":"IncTA.VWMA","text":"VWMA{Tohlcv}(; period = VWMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = Tohlcv)\n\nThe VWMA type implements a Volume Weighted Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.WMA","page":"API","title":"IncTA.WMA","text":"WMA{T}(; period = WMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe WMA type implements a Weighted Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.ZLEMA","page":"API","title":"IncTA.ZLEMA","text":"ZLEMA{T}(; period=ZLEMA_PERIOD, input_filter = always_true, input_modifier = identity, input_modifier_return_type = T)\n\nThe ZLEMA type implements a Zero Lag Exponential Moving Average indicator.\n\n\n\n\n\n","category":"type"},{"location":"api/#Other","page":"API","title":"Other","text":"","category":"section"},{"location":"api/","page":"API","title":"API","text":"IncTA.StatLag\nIncTA.TechnicalIndicatorIterator","category":"page"},{"location":"api/#IncTA.StatLag","page":"API","title":"IncTA.StatLag","text":"StatLag(ind, b)\n\nTrack a moving window (previous b copies) of ind.\n\nExample\n\nind = SMA{Float64}(period = 3)\nprices = [10.81, 10.58, 10.07, 10.58, 10.56, 10.4, 10.74, 10.16, 10.29, 9.4, 9.62]\nind = StatLag(ind, 4)\nfit!(ind, prices)\nind.lag[end-1]\n\n\n\n\n\n","category":"type"},{"location":"api/#IncTA.TechnicalIndicatorIterator","page":"API","title":"IncTA.TechnicalIndicatorIterator","text":"TechnicalIndicatorIterator(indicator_type, iterable_input, args...; kwargs...)\n\nReturns an iterator.\n\nExample\n\nusing IncTA\nusing IncTA.SampleData: CLOSE_TMPL\n\nSISO indicator\n\nitr = TechnicalIndicatorIterator(SMA, CLOSE_TMPL; period = 3)\n\nprintln(\"First iteration\")\nfor val in itr\n println(val)\nend\n\nprintln(\"\")\n\nprintln(\"Second iteration\")\nIterators.reset!(itr)\nfor val in itr\n println(val)\nend\n\nprintln(\"\")\n\nprintln(\"Third iteration with collect\")\n# itr = TechnicalIndicatorIterator(SMA, CLOSE_TMPL; period = 3)\n# or\nIterators.reset!(itr)\nprintln(eltype(itr))\nprintln(collect(itr))\n\nprintln(\"\")\n\nSIMO indicator\n\nitr = TechnicalIndicatorIterator(BB, CLOSE_TMPL)\nprintln(collect(itr))\n\n\n\n\n\n","category":"type"},{"location":"usage/#Usage","page":"Usage","title":"Usage","text":"","category":"section"},{"location":"usage/","page":"Usage","title":"Usage","text":"See examples and tests","category":"page"},{"location":"usage/","page":"Usage","title":"Usage","text":"IncTA.jl - installing and using it","category":"page"},{"location":"usage/","page":"Usage","title":"Usage","text":"(Image: IncTA.jl - installing and using it)","category":"page"},{"location":"usage/","page":"Usage","title":"Usage","text":"IncTA.jl - dealing with TSFrames","category":"page"},{"location":"usage/","page":"Usage","title":"Usage","text":"(Image: IncTA.jl - dealing with TSFrames)","category":"page"},{"location":"usage_more/#Learn-more-about-IncTA-usage","page":"Learn more about usage","title":"Learn more about IncTA usage","text":"","category":"section"},{"location":"usage_more/#Feeding-a-technical-analysis-indicator-one-observation-at-a-time","page":"Learn more about usage","title":"Feeding a technical analysis indicator one observation at a time","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"A technical indicator can be feeded using fit! function.\nIt's feeded one observation at a time.","category":"page"},{"location":"usage_more/#Showing-sample-data-(close-prices)","page":"Learn more about usage","title":"Showing sample data (close prices)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"Some sample data are provided for testing purpose.","category":"page"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> using IncTA\njulia> using IncTA.SampleData: CLOSE_TMPL, V_OHLCV\njulia> CLOSE_TMPL\n50-element Vector{Float64}:\n 10.5\n 9.78\n 10.46\n 10.51\n ⋮\n 10.15\n 10.3\n 10.59\n 10.23\n 10.0","category":"page"},{"location":"usage_more/#Calculate-SMA-(simple-moving-average)","page":"Learn more about usage","title":"Calculate SMA (simple moving average)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> ind = SMA{Float64}(period = 3) # this is a SISO (single input / single output) indicator\nSMA: n=0 | value=missing\n\njulia> for p in CLOSE_TMPL\n fit!(ind, p)\n println(value(ind))\n end\nmissing\nmissing\n10.246666666666668\n10.250000000000002\n10.50666666666667\n10.593333333333335\n10.476666666666668\n ⋮\n9.283333333333339\n9.886666666666672\n10.346666666666671\n10.373333333333338\n10.273333333333339","category":"page"},{"location":"usage_more/#Calculate-BB-(Bollinger-bands)","page":"Learn more about usage","title":"Calculate BB (Bollinger bands)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> ind = BB{Float64}(period = 3) # this is a SIMO (single input / multiple output) indicator\n for p in CLOSE_TMPL\n fit!(ind, p)\n println(value(ind))\n end\nmissing\nmissing\nIncTA.BBVal{Float64}(9.585892709687261, 10.246666666666668, 10.907440623646075)\nIncTA.BBVal{Float64}(9.584067070444279, 10.250000000000002, 10.915932929555725)\nIncTA.BBVal{Float64}(10.433030926552087, 10.50666666666667, 10.580302406781252)\n ⋮\nIncTA.BBVal{Float64}(7.923987085233826, 9.283333333333339, 10.642679581432851)\nIncTA.BBVal{Float64}(8.921909932792502, 9.886666666666672, 10.851423400540842)\nIncTA.BBVal{Float64}(9.981396599151932, 10.346666666666671, 10.71193673418141)\nIncTA.BBVal{Float64}(10.061635473931714, 10.373333333333338, 10.685031192734963)\nIncTA.BBVal{Float64}(9.787718030627357, 10.273333333333339, 10.758948636039321)","category":"page"},{"location":"usage_more/#Showing-sample-data-(OHLCV-data)","page":"Learn more about usage","title":"Showing sample data (OHLCV data)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> V_OHLCV # fields are open/high/low/close/volume/time\n50-element Vector{OHLCV{Missing, Float64, Float64}}:\n OHLCV{Missing, Float64, Float64}(10.81, 11.02, 9.9, 10.5, 55.03, missing)\n OHLCV{Missing, Float64, Float64}(10.58, 10.74, 9.78, 9.78, 117.86, missing)\n OHLCV{Missing, Float64, Float64}(10.07, 10.65, 9.5, 10.46, 301.04, missing)\n OHLCV{Missing, Float64, Float64}(10.58, 11.05, 10.47, 10.51, 157.94, missing)\n ⋮\n OHLCV{Missing, Float64, Float64}(9.3, 10.5, 9.26, 10.15, 255.3, missing)\n OHLCV{Missing, Float64, Float64}(10.23, 10.3, 10.0, 10.3, 111.55, missing)\n OHLCV{Missing, Float64, Float64}(10.29, 10.86, 10.19, 10.59, 108.27, missing)\n OHLCV{Missing, Float64, Float64}(10.77, 10.77, 10.15, 10.23, 48.29, missing)\n OHLCV{Missing, Float64, Float64}(10.28, 10.39, 9.62, 10.0, 81.66, missing)","category":"page"},{"location":"usage_more/#Calculate-ATR-(Average-true-range)","page":"Learn more about usage","title":"Calculate ATR (Average true range)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> ind = ATR{OHLCV}(period = 3) # this is a MISO (multi input / single output) indicator\nATR: n=0 | value=missing\n\njulia> for candle in V_OHLCV\n fit!(ind, candle)\n println(value(ind))\n end\nmissing\nmissing\n1.0766666666666669\n0.9144444444444445\n0.7562962962962961\n ⋮\n0.898122497312842\n0.6987483315418949\n0.6891655543612633\n0.6661103695741752\n0.700740246382784","category":"page"},{"location":"usage_more/#Calculate-Stoch-(Stochastic)","page":"Learn more about usage","title":"Calculate Stoch (Stochastic)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> ind = Stoch{OHLCV{Missing,Float64,Float64}}(period = 3) # this is a MIMO indicator\nStoch: n=0 | value=missing\n\njulia> for candle in V_OHLCV\n fit!(ind, candle)\n println(value(ind))\n end\nIncTA.StochVal{Float64}(53.57142857142858, missing)\nIncTA.StochVal{Float64}(0.0, missing)\nIncTA.StochVal{Float64}(63.15789473684218, 38.90977443609025)\nIncTA.StochVal{Float64}(65.1612903225806, 42.77306168647426)\nIncTA.StochVal{Float64}(67.74193548387099, 65.35370684776458)\n ⋮\nIncTA.StochVal{Float64}(83.17307692307695, 54.98661936768733)\nIncTA.StochVal{Float64}(90.38461538461543, 83.17307692307693)\nIncTA.StochVal{Float64}(83.12500000000001, 85.56089743589745)\nIncTA.StochVal{Float64}(26.744186046511697, 66.75126714370903)\nIncTA.StochVal{Float64}(30.645161290322637, 46.83811577894477)","category":"page"},{"location":"usage_more/#Feeding-a-technical-analysis-indicator-with-a-compatible-Tables.jl-table-such-as-TSFrame","page":"Learn more about usage","title":"Feeding a technical analysis indicator with a compatible Tables.jl table such as TSFrame","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"A technical analysis indicator can also accept a Tables.jl compatible table (TSFrame) as input parameter.","category":"page"},{"location":"usage_more/#Showing-sample-data-(OHLCV-data)-2","page":"Learn more about usage","title":"Showing sample data (OHLCV data)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> using MarketData\njulia> using TSFrames\njulia> using Random\njulia> Random.seed!(1234) # to have reproductible results (so won't be really random)\njulia> ta = random_ohlcv() # should return a TimeSeries.TimeArray\njulia> ts = TSFrame(ta) # converts a TimeSeries.TimeArray to TSFrames.TSFrame\n500×5 TSFrame with DateTime Index\n Index Open High Low Close Volume\n DateTime Float64 Float64 Float64 Float64 Float64\n──────────────────────────────────────────────────────────────────\n 2020-01-01T00:00:00 326.75 334.03 326.18 333.16 83.6\n 2020-01-01T01:00:00 333.29 334.6 330.01 330.3 45.9\n 2020-01-01T02:00:00 330.79 336.7 329.99 334.0 71.2\n 2020-01-01T03:00:00 334.83 339.79 334.83 338.39 97.1\n 2020-01-01T04:00:00 338.36 339.09 331.22 331.22 79.1\n ⋮ ⋮ ⋮ ⋮ ⋮ ⋮\n 2020-01-21T15:00:00 353.2 360.62 349.99 358.86 59.0\n 2020-01-21T16:00:00 358.81 364.03 354.5 364.03 4.2\n 2020-01-21T17:00:00 363.06 367.52 362.31 362.31 90.0\n 2020-01-21T18:00:00 362.03 364.81 360.4 363.3 45.6\n 2020-01-21T19:00:00 362.35 363.23 358.28 361.52 19.8","category":"page"},{"location":"usage_more/#Simple-Moving-Average-(SMA)-of-close-prices","page":"Learn more about usage","title":"Simple Moving Average (SMA) of close prices","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> SMA(ts; period = 3)\n500×1 TSFrame with DateTime Index\n Index SMA\n DateTime Float64?\n──────────────────────────────────\n 2020-01-01T00:00:00 missing\n 2020-01-01T01:00:00 missing\n 2020-01-01T02:00:00 332.487\n 2020-01-01T03:00:00 334.23\n 2020-01-01T04:00:00 334.537\n ⋮ ⋮\n 2020-01-21T15:00:00 352.087\n 2020-01-21T16:00:00 358.41\n 2020-01-21T17:00:00 361.733\n 2020-01-21T18:00:00 363.213\n 2020-01-21T19:00:00 362.377","category":"page"},{"location":"usage_more/#Simple-Moving-Average-(SMA)-of-open-prices","page":"Learn more about usage","title":"Simple Moving Average (SMA) of open prices","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> SMA(ts; period = 3, default = :Open)\n500×1 TSFrame with DateTime Index\n Index SMA\n DateTime Float64?\n──────────────────────────────────\n 2020-01-01T00:00:00 missing\n 2020-01-01T01:00:00 missing\n 2020-01-01T02:00:00 330.277\n 2020-01-01T03:00:00 332.97\n 2020-01-01T04:00:00 334.66\n ⋮ ⋮\n 2020-01-21T15:00:00 346.72\n 2020-01-21T16:00:00 352.293\n 2020-01-21T17:00:00 358.357\n 2020-01-21T18:00:00 361.3\n 2020-01-21T19:00:00 362.48","category":"page"},{"location":"usage_more/#Calculate-BB-(Bollinger-bands)-2","page":"Learn more about usage","title":"Calculate BB (Bollinger bands)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> BB(ts; period = 3)\n500×3 TSFrame with DateTime Index\n Index BB_lower BB_central BB_upper\n DateTime Float64? Float64? Float64?\n────────────────────────────────────────────────────────────\n 2020-01-01T00:00:00 missing missing missing\n 2020-01-01T01:00:00 missing missing missing\n 2020-01-01T02:00:00 329.319 332.487 335.654\n 2020-01-01T03:00:00 327.617 334.23 340.843\n 2020-01-01T04:00:00 328.633 334.537 340.44\n ⋮ ⋮ ⋮ ⋮\n 2020-01-21T15:00:00 340.813 352.087 363.36\n 2020-01-21T16:00:00 348.844 358.41 367.976\n 2020-01-21T17:00:00 357.434 361.733 366.033\n 2020-01-21T18:00:00 361.804 363.213 364.623\n 2020-01-21T19:00:00 360.92 362.377 363.833","category":"page"},{"location":"usage_more/#Calculate-ATR-(Average-true-range)-2","page":"Learn more about usage","title":"Calculate ATR (Average true range)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> ATR(ts; period = 3)\n500×1 TSFrame with DateTime Index\n Index ATR\n DateTime Float64?\n────────────────────────────────────\n 2020-01-01T00:00:00 missing\n 2020-01-01T01:00:00 missing\n 2020-01-01T02:00:00 6.38333\n 2020-01-01T03:00:00 6.18556\n 2020-01-01T04:00:00 6.74704\n ⋮ ⋮\n 2020-01-21T15:00:00 8.53068\n 2020-01-21T16:00:00 8.86378\n 2020-01-21T17:00:00 7.64586\n 2020-01-21T18:00:00 6.56724\n 2020-01-21T19:00:00 6.05149","category":"page"},{"location":"usage_more/#Calculate-Stoch-(Stochastic)-2","page":"Learn more about usage","title":"Calculate Stoch (Stochastic)","text":"","category":"section"},{"location":"usage_more/","page":"Learn more about usage","title":"Learn more about usage","text":"julia> Stoch(ts; period = 3)\n500×2 TSFrame with DateTime Index\n Index Stoch_k Stoch_d\n DateTime Float64 Float64?\n───────────────────────────────────────────────\n 2020-01-01T00:00:00 88.9172 missing\n 2020-01-01T01:00:00 48.9311 missing\n 2020-01-01T02:00:00 74.3346 70.7276\n 2020-01-01T03:00:00 85.7143 69.66\n 2020-01-01T04:00:00 12.551 57.5333\n ⋮ ⋮ ⋮\n 2020-01-21T15:00:00 91.4272 93.9504\n 2020-01-21T16:00:00 100.0 97.1424\n 2020-01-21T17:00:00 70.2795 87.2356\n 2020-01-21T18:00:00 67.5883 79.2893\n 2020-01-21T19:00:00 35.0649 57.6443","category":"page"},{"location":"features/#Package-Features","page":"Package Features","title":"Package Features","text":"","category":"section"},{"location":"features/","page":"Package Features","title":"Package Features","text":"Input new data (one observation at a time) to indicator with fit! function (from OnlineStats.jl)\nInput data which inherits AbstractVector\nInput data as compatible Tables.jl format\nSub-indicators\nIndicators chaining\nFilter/transform input of indicator","category":"page"},{"location":"indicators_support/#Indicators-support","page":"Indicators support","title":"Indicators support","text":"","category":"section"},{"location":"indicators_support/","page":"Indicators support","title":"Indicators support","text":"Name Description Input Output Dependencies Implementation status\nAccuDist Accumulation and Distribution 🕯️ 🔢 - ✔️\nADX Average Directional Index 🕯️ Ⓜ️ ATR ✔️\nALMA Arnaud Legoux Moving Average 🔢 🔢 CircBuff ✔️\nAO Awesome Oscillator 🕯️ 🔢 SMA ✔️\nAroon Aroon Up/Down 🕯️ Ⓜ️ CirBuff ✔️\nATR Average True Range 🕯️ 🔢 CircBuff ✔️\nBB Bollinger Bands 🔢 Ⓜ️ SMA, StdDev ✔️\nBOP Balance Of Power 🕯️ 🔢 - ✔️\nCCI Commodity Channel Index 🕯️ 🔢 MeanDev ✔️\nChaikinOsc Chaikin Oscillator 🕯️ 🔢 AccuDist, EMA ✔️\nChandeKrollStop Chande Kroll Stop 🕯️ Ⓜ️ CircBuff, ATR ✔️\nCHOP Choppiness Index 🕯️ 🔢 CirBuff, ATR ✔️\nCoppockCurve Coppock Curve 🔢 🔢 ROC, WMA ✔️\nDEMA Double Exponential Moving Average 🔢 🔢 EMA ✔️\nDonchianChannels Donchian Channels 🕯️ Ⓜ️ CircBuff ✔️\nDPO Detrended Price Oscillator 🔢 🔢 CircBuff, SMA ✔️\nEMA Exponential Moving Average 🔢 🔢 CircBuff ✔️\nEMV Ease of Movement 🕯️ 🔢 CircBuff, SMA ✔️\nFibRetracement Fibonacci Retracement ❓ ❓ doesn't look an indicator just a simple class with 236 382 5 618 786 values\nForceIndex Force Index 🕯️ 🔢 prev input val, EMA ✔️\nHMA Hull Moving Average 🔢 🔢 WMA ✔️\nIchimoku Ichimoku Clouds 🔢 Ⓜ️ CircBuff 5 managed sequences ❓ unit tests doesn't exists in reference implementation\nKAMA Kaufman's Adaptive Moving Average 🔢 🔢 CircBuff ✔️\nKeltnerChannels Keltner Channels 🕯️ Ⓜ️ ATR, EMA with input_modifier to extract close value of a candle ✔️\nKST Know Sure Thing 🔢 Ⓜ️ ROC, SMA ✔️\nKVO Klinger Volume Oscillator 🕯️ 🔢 EMA ✔️\nMACD Moving Average Convergence Divergence 🔢 Ⓜ️ EMA ✔️\nMassIndex Mass Index 🕯️ 🔢 EMA, CircBuff ✔️\nMcGinleyDynamic McGinley Dynamic 🔢 🔢 CircBuff ✔️\nMeanDev Mean Deviation 🔢 🔢 CircBuff, SMA ✔️\nOBV On Balance Volume 🕯️ 🔢 prev input val ✔️\nParabolicSAR Parabolic Stop And Reverse 🕯️ Ⓜ️ CirBuff ✔️\nPivotsHL High/Low Pivots 🕯️ Ⓜ️ - 🚧 unit tests in reference implementation are missing but code seems quite ready ✔️\nROC Rate Of Change 🔢 🔢 CircBuff ✔️\nRSI Relative Strength Index 🔢 🔢 CircBuff, SMMA ✔️\nSFX SFX 🕯️ Ⓜ️ ATR, StdDev, SMA and input_modifier (to extract close) ✔️\nSMA Simple Moving Average 🔢 🔢 CircBuff ✔️\nSMMA Smoothed Moving Average 🔢 🔢 CircBuff ✔️\nSOBV Smoothed On Balance Volume 🕯️ 🔢 OBV, SMA ✔️\nSTC Schaff Trend Cycle 🔢 🔢 MACD, Stoch with input_modifier (MACDVal->OHLCV and stoch_d->OHLCV), indicator chaining, MAFactory (default SMA) ✔️\nStdDev Standard Deviation 🔢 🔢 CircBuff ✔️\nStoch Stochastic 🕯️ Ⓜ️ CircBuff, SMA ✔️ 🎄\nStochRSI Stochastic RSI 🔢 Ⓜ️ RSI, SMA ✔️\nSuperTrend Super Trend 🕯️ Ⓜ️ CircBuff, ATR ✔️\nT3 T3 Moving Average 🔢 🔢 EMA with indicator chaining and input filter ✔️\nTEMA Triple Exponential Moving Average 🔢 🔢 EMA ✔️\nTRIX TRIX 🕯️ Ⓜ️ EMA, indicator chaining ✔️\nTSI True Strength Index 🔢 🔢 EMA, indicator chaining ✔️\nTTM TTM Squeeze 🕯️ Ⓜ️ SMA, BB, DonchianChannels, KeltnerChannels and input_modifier to extract close value of a candle ✔️\nUO Ultimate Oscillator 🕯️ 🔢 CircBuff ✔️\nVTX Vortex Indicator 🕯️ Ⓜ️ CircBuff, ATR ✔️\nVWAP Volume Weighted Average Price 🕯️ 🔢 - ✔️\nVWMA Volume Weighted Moving Average 🕯️ 🔢 CircBuff ✔️\nWMA Weighted Moving Average 🔢 🔢 CircBuff ✔️\nZLEMA Zero Lag Exponential Moving Average 🔢 🔢 EMA ✔️","category":"page"},{"location":"indicators_support/#Legend","page":"Indicators support","title":"Legend","text":"","category":"section"},{"location":"indicators_support/","page":"Indicators support","title":"Indicators support","text":"🔢 single number (input or ouput)","category":"page"},{"location":"indicators_support/","page":"Indicators support","title":"Indicators support","text":"Ⓜ️ multiple numbers (output)","category":"page"},{"location":"indicators_support/","page":"Indicators support","title":"Indicators support","text":"🕯️ OHLCV candlestick input","category":"page"},{"location":"indicators_support/#Indicators-implementation-category","page":"Indicators support","title":"Indicators implementation category","text":"","category":"section"},{"location":"indicators_support/","page":"Indicators support","title":"Indicators support","text":"🔢 🔢 SISO indicators","category":"page"},{"location":"indicators_support/","page":"Indicators support","title":"Indicators support","text":"🔢 Ⓜ️ SIMO indicators","category":"page"},{"location":"indicators_support/","page":"Indicators support","title":"Indicators support","text":"🕯️ 🔢 MISO indicators","category":"page"},{"location":"indicators_support/","page":"Indicators support","title":"Indicators support","text":"🕯️ Ⓜ️ MIMO indicators","category":"page"},{"location":"indicators_support/","page":"Indicators support","title":"Indicators support","text":"Indicators can be of 1 out of 4 categories given their input/output behavior : SISO, SIMO, MISO and MIMO.","category":"page"},{"location":"implementing_your_indic/#Implementing-your-own-indicator","page":"Implementing your own indicator","title":"Implementing your own indicator","text":"","category":"section"},{"location":"implementing_your_indic/#Categorization-of-your-indicator","page":"Implementing your own indicator","title":"Categorization of your indicator","text":"","category":"section"},{"location":"implementing_your_indic/","page":"Implementing your own indicator","title":"Implementing your own indicator","text":"Categorization of indicators is done to better understand implementation of indicators, not to understand the role of each indicator. To better understand the role of each indicator other categories such as moving averages, momentum indicators, volatility indicators are better suited.","category":"page"},{"location":"implementing_your_indic/#SISO-indicators-(-)","page":"Implementing your own indicator","title":"SISO indicators (🔢 🔢)","text":"","category":"section"},{"location":"implementing_your_indic/","page":"Implementing your own indicator","title":"Implementing your own indicator","text":"A SISO indicator takes one simple observation (price of an asset, volume of assets traded...) and output just one value for this observation.","category":"page"},{"location":"implementing_your_indic/","page":"Implementing your own indicator","title":"Implementing your own indicator","text":"SMA, EMA are good examples of such indicator category (but also most of others moving average indicators).","category":"page"},{"location":"implementing_your_indic/#SIMO-indicators-(-)","page":"Implementing your own indicator","title":"SIMO indicators (🔢 Ⓜ️)","text":"","category":"section"},{"location":"implementing_your_indic/","page":"Implementing your own indicator","title":"Implementing your own indicator","text":"The very famous BB (Bollinger Bands developed by financial analyst John Bollinger) indicator is an example of SIMO indicator. Like a SISO indicator it takes one simple value at a time. But contrary to SISO indicator, SIMO indicators generate several values at a time (upper band, central value, lower band in the case of Bollinger Bands indicator).","category":"page"},{"location":"implementing_your_indic/#MISO-indicators-(-)","page":"Implementing your own indicator","title":"MISO indicators (🕯️ 🔢)","text":"","category":"section"},{"location":"implementing_your_indic/","page":"Implementing your own indicator","title":"Implementing your own indicator","text":"IncTA have also some MISO indicators ie indicators which takes several values at a time. It can be candlestick OHLCV data for example. Average True Range (ATR) is an example of such an indicator. It's the average of true ranges over the specified period. ATR measures volatility, taking into account any gaps in the price movement. It was developed by a very prolific author named J. Welles Wilder (also author of RSI, ParabolicSAR and ADX).","category":"page"},{"location":"implementing_your_indic/#MIMO-indicators-(-)","page":"Implementing your own indicator","title":"MIMO indicators (🕯️ Ⓜ️)","text":"","category":"section"},{"location":"implementing_your_indic/","page":"Implementing your own indicator","title":"Implementing your own indicator","text":"The last implementation type of indicator are MIMO indicators ie indicator which take several values at a time (such a candlestick data) and ouput several values at a time. Stochastic oscillator (Stoch also known as KD indicator) is an example of such indicator implementation category). It was developed in the late 1950s by a technical analyst named Georges Lane. This method attempts to predict price turning points by comparing the closing price of a security to its price range. Such indicator ouputs 2 values at a time : k and d.","category":"page"},{"location":"implementing_your_indic/#Steps-to-implement-your-own-indicator","page":"Implementing your own indicator","title":"Steps to implement your own indicator","text":"","category":"section"},{"location":"implementing_your_indic/","page":"Implementing your own indicator","title":"Implementing your own indicator","text":"First step to implement your own indicator is to categorized it in the SISO, SIMO, MISO, MIMO category.\nLook at indicator dependencies and try to find out an existing indicator of similar category with similar features used.\nWatch existing code of an indicator of a similar category with quite similar dependencies.\nCopy file into src\\indicators directory with same name for struct and filename (that's important for tests)\nIncrement number of indicators in test_indicators_interface.jl\n@test length(files) == ... # number of indicators\nCreate unit tests (in the correct category) and ensure they are passing.","category":"page"},{"location":"install/#Install","page":"Install","title":"Install","text":"","category":"section"},{"location":"install/","page":"Install","title":"Install","text":"Open Julia command line interface. ","category":"page"},{"location":"install/","page":"Install","title":"Install","text":"Type ] dev https://github.com/femtotrader/IncTA.jl/","category":"page"},{"location":"","page":"Home","title":"Home","text":"(Image: Build Status)","category":"page"},{"location":"#IncTA.jl","page":"Home","title":"IncTA.jl","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"This project implements some Technical Analysis Indicators in Julia in an incremental approach.","category":"page"},{"location":"","page":"Home","title":"Home","text":"It's inspired by Python project talipp which is used as \"reference implementation\" for unit tests.","category":"page"},{"location":"","page":"Home","title":"Home","text":"It depends especially on OnlineStatsBase.jl and on Tables.jl.","category":"page"},{"location":"","page":"Home","title":"Home","text":"Currently more than 50 technical analysis indicators are supported (SMA, EMA, SMMA, RSI, MeanDev, StdDev, ROC, WMA, KAMA, HMA, DPO, CoppockCurve, DEMA, TEMA, ALMA, McGinleyDynamic, ZLEMA, T3, TRIX, TSI ; BB, MACD, StochRSI, KST ; AccuDist, BOP, CCI, ChaikinOsc, VWMA, VWAP, AO, ATR, ForceIndex, OBV, SOBV, EMV, MassIndex, CHOP, KVO, UO ; Stoch, ADX, SuperTrend, VTX, DonchianChannels, KeltnerChannels, Aroon, ChandeKrollStop, ParabolicSAR, SFX, TTM, PivotsHL ; STC)","category":"page"},{"location":"","page":"Home","title":"Home","text":"🚧 This software is under construction. API can have breaking changes.","category":"page"},{"location":"#Contents","page":"Home","title":"Contents","text":"","category":"section"},{"location":"","page":"Home","title":"Home","text":"Pages = [\n \"index.md\",\n \"features.md\",\n \"install.md\",\n \"usage.md\",\n \"indicators_support.md\",\n \"usage_more.md\",\n \"internals.md\",\n \"implementing_your_indic.md\",\n \"api.md\",\n]","category":"page"},{"location":"internals/#IncTA-internals","page":"Internals","title":"IncTA internals","text":"","category":"section"},{"location":"internals/#Sub-indicator(s)","page":"Internals","title":"Sub-indicator(s)","text":"","category":"section"},{"location":"internals/","page":"Internals","title":"Internals","text":"An indicator can be composed internally of sub-indicator(s). Input values catched by fit! calls are transmitted to each sub_indicators to be processed to _calculate_new_value function which calculates value of indicator output.","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"Example: Bollinger Bands (BB) indicator owns 2 internal sub-indicators","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"central_band which is a simple moving average of prices,\nstd_dev which is standard deviation of prices.","category":"page"},{"location":"internals/#Composing-new-indicators","page":"Internals","title":"Composing new indicators","text":"","category":"section"},{"location":"internals/#Indicators-chaining","page":"Internals","title":"Indicators chaining","text":"","category":"section"},{"location":"internals/","page":"Internals","title":"Internals","text":"All indicators come with a great feature named indicators chaining. It's like building new indicator with Lego™ bricks.","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"Example:","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"DEMA : 2 EMA chained together\nTEMA : 3 EMA chained together","category":"page"},{"location":"internals/#Filtering-and-transforming-input","page":"Internals","title":"Filtering and transforming input","text":"","category":"section"},{"location":"internals/","page":"Internals","title":"Internals","text":"Thanks to this indicator chaining feature it's possible to compose more complex indicators on top of the existing and simpler ones.","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"A mechanism for filtering and transforming input of an indicator which is feeded by an another one (using generally anonymous functions) have also be implemented.","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"Input of an indicator can be filtered / transformed to be used internaly by sub-indicators or be processed directly by _calculate_new_value function.","category":"page"},{"location":"internals/#Moving-average-factory","page":"Internals","title":"Moving average factory","text":"","category":"section"},{"location":"internals/","page":"Internals","title":"Internals","text":"SMA, EMA, ... are moving average.","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"Most complex indicators uses in their original form SMA or EMA as default moving average.","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"In some markets they can perform better by using instead an other kind of moving average.","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"A moving average factory have been implemented ","category":"page"},{"location":"internals/","page":"Internals","title":"Internals","text":"This kind of indicators have a ma parameter in order to bypass their default moving average uses.","category":"page"}] } diff --git a/dev/usage/index.html b/dev/usage/index.html index eea95c9..d3da825 100644 --- a/dev/usage/index.html +++ b/dev/usage/index.html @@ -1,2 +1,2 @@ -Usage · IncTA.jl

Usage

See examples and tests

IncTA.jl - installing and using it

IncTA.jl - installing and using it

IncTA.jl - dealing with TSFrames

IncTA.jl - dealing with TSFrames

+Usage · IncTA.jl

Usage

See examples and tests

IncTA.jl - installing and using it

IncTA.jl - installing and using it

IncTA.jl - dealing with TSFrames

IncTA.jl - dealing with TSFrames

diff --git a/dev/usage_more/index.html b/dev/usage_more/index.html index 5c870d7..bd27048 100644 --- a/dev/usage_more/index.html +++ b/dev/usage_more/index.html @@ -1,5 +1,5 @@ -Learn more about usage · IncTA.jl

Learn more about IncTA usage

Feeding a technical analysis indicator one observation at a time

  • A technical indicator can be feeded using fit! function.

  • It's feeded one observation at a time.

Showing sample data (close prices)

Some sample data are provided for testing purpose.

julia> using IncTA
+Learn more about usage · IncTA.jl

Learn more about IncTA usage

Feeding a technical analysis indicator one observation at a time

  • A technical indicator can be feeded using fit! function.

  • It's feeded one observation at a time.

Showing sample data (close prices)

Some sample data are provided for testing purpose.

julia> using IncTA
 julia> using IncTA.SampleData: CLOSE_TMPL, V_OHLCV
 julia> CLOSE_TMPL
 50-element Vector{Float64}:
@@ -186,4 +186,4 @@
  2020-01-21T16:00:00  100.0           97.1424
  2020-01-21T17:00:00   70.2795        87.2356
  2020-01-21T18:00:00   67.5883        79.2893
- 2020-01-21T19:00:00   35.0649        57.6443
+ 2020-01-21T19:00:00 35.0649 57.6443