TechnicalIndicatorCharts

Documentation for TechnicalIndicatorCharts.

TechnicalIndicatorCharts.ChartType

Summary

A Chart is a mutable struct that has:

  • a name (typically of the asset like "BTCUSD" or "AAPL")
  • a timeframe (which controls how much time each candle on the chart represents)
  • a DataFrame to hold OHLCV values and indicator values
  • a Vector of OnlineTechnicalIndicators to display on the chart.
  • another Vector of display configuration for each indicator.

If you were to go to TradingView and look at a chart, imagine what kind of data structure would be required to represent it in memory. That's what the Chart struct aims to be.

Fields

  • name::AbstractString

  • tf::Dates.Period

  • indicators::AbstractVector{OnlineTechnicalIndicators.TechnicalIndicator}

  • visuals::AbstractVector

  • df::DataFrames.DataFrame

  • ts::Union{Missing, Dates.DateTime}

  • candle::Union{Missing, Candle}

Constructors

Chart(name, tf; indicators=[], visuals=[])

Examples

julia> just_candles = Chart("ETHUSD", Minute(1))

julia> golden_cross = Chart(
           "BTCUSD", Hour(4);
           indicators = [
               SMA{Float64}(;period=50),
               SMA{Float64}(;period=200)
           ],
           visuals = [
               Dict(
                   :label_name => "SMA 50",
                   :line_color => "#E072A4",
                   :line_width => 2
               ),
               Dict(
                   :label_name => "SMA 200",
                   :line_color => "#3D3B8E",
                   :line_width => 5
               )
           ]
       )

julia> default_visuals = Chart(
           "BNBUSDT", Hour(4);
           indicators = [BB{Float64}(), StochRSI{Float64}()],
           visuals    = [nothing,       nothing]  # To use defaults, pass in `nothing`.
       )
source
TechnicalIndicatorCharts.abbrevMethod
abbrev(p::Period) -> String

Return an abbreviated string representation of the given period.

Example

abbrev(Hour(4)) # "4h"
abbrev(Day(1))  # "1d"
source
TechnicalIndicatorCharts.extract_valueMethod
extract_value(value) -> Vector{Any}

Extract values out of an indicators value struct. This is only intended to be used for indicators that emit multiple values per tick.

source
TechnicalIndicatorCharts.ismultiinputMethod
ismultiinput(
    i::OnlineTechnicalIndicators.TechnicalIndicator
) -> Any

This is a wrapper around OnlineTechnicalIndicators.ismultiinput that takes any instance of a TechnicalIndicator and digs out its unparametrized type before running the original ismultiinput method.

source
TechnicalIndicatorCharts.ismultioutputMethod
ismultioutput(
    i::OnlineTechnicalIndicators.TechnicalIndicator
) -> Bool

This is a wrapper around OnlineTechnicalIndicators.ismultioutput that takes any instance of a TechnicalIndicator and digs out its unparametrized type before running the original ismultioutput method.

source
TechnicalIndicatorCharts.merge_candle!Method
merge_candle!(
    last_candle::Union{Missing, Candle},
    c::Union{Candle, DataFrames.DataFrameRow}
) -> Candle

If last candle is not provided, construct a new candle with the given OHLCV data. If last candle is provided, mutate last_candle such that it's HLCV are updated. When tw candles are passed in, it's assumed they have the same timestamp.

source
TechnicalIndicatorCharts.push_new_candle!Method
push_new_candle!(
    chart::Chart,
    c::Candle
) -> DataFrames.DataFrame

This is meant to be called on timeframe boundaries to onto the chart's dataframe. It also does indicator calculation at this time.

source
TechnicalIndicatorCharts.update!Method
update!(chart::Chart, c::Candle) -> Union{Nothing, Candle}

Update a chart with a candle. When a candle is completed, return it. Otherwise, return nothing on update.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    unimplemented,
    opts,
    df::DataFrames.DataFrame
) -> Vector{LightweightCharts.LWCChart}

This is a visualize method that's a catch-all for indicators that haven't had a visualize method made for them yet. For now, it returns missing.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    chart::Chart;
    min_height,
    mode,
    up_color,
    down_color
) -> LightweightCharts.LWCLayout

Return an LWCLayout that visualizes all the components in chart appropriately.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    adx::OnlineTechnicalIndicators.ADX,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> Vector{LightweightCharts.LWCChart}

Visualize ADX using 3 lwc_lines.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    alma::OnlineTechnicalIndicators.ALMA,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize ALMA using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    ao::OnlineTechnicalIndicators.AO,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize AO (Awesome Oscillator) using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    atr::OnlineTechnicalIndicators.ATR,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize ATR using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    ad::OnlineTechnicalIndicators.AccuDist,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize AccuDist (Accumulation/Distribution) using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    aroon::OnlineTechnicalIndicators.Aroon,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> Vector{LightweightCharts.LWCChart}

Visualize Aroon using 2 lwc_lines.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    bb::OnlineTechnicalIndicators.BB,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> Vector{LightweightCharts.LWCChart}

Visualize Bollinger Bands using 3 lwc_lines.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    bop::OnlineTechnicalIndicators.BOP,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize BOP (Balance of Power) using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    cci::OnlineTechnicalIndicators.CCI,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize CCI (Commodity Channel Index) using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    chop::OnlineTechnicalIndicators.CHOP,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize CHOP (Choppiness Index) using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    co::OnlineTechnicalIndicators.ChaikinOsc,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize ChaikinOsc (Chaikin Oscillator) using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    cks::OnlineTechnicalIndicators.ChandeKrollStop,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> Vector{LightweightCharts.LWCChart}

Visualize ChandeKrollStop using 2 lwc_lines.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    cc::OnlineTechnicalIndicators.CoppockCurve,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize CoppockCurve using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    dema::OnlineTechnicalIndicators.DEMA,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize DEMA using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    dpo::OnlineTechnicalIndicators.DPO,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize DPO using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    dc::OnlineTechnicalIndicators.DonchianChannels,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> Vector{LightweightCharts.LWCChart}

Visualize Donchian Channels using 3 lwc_lines.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    ema::OnlineTechnicalIndicators.EMA,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize EMA using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    emv::OnlineTechnicalIndicators.EMV,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize EMV (Ease of Movement) using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    fi::OnlineTechnicalIndicators.ForceIndex,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize ForceIndex using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    hma::OnlineTechnicalIndicators.HMA,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize HMA using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    kama::OnlineTechnicalIndicators.KAMA,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize KAMA using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    kst::OnlineTechnicalIndicators.KST,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> Vector{LightweightCharts.LWCChart}

Visualize KST using 2 lwc_lines.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    kvo::OnlineTechnicalIndicators.KVO,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize KVO (Klinger Volume Oscillator) using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    keltnerchannels::OnlineTechnicalIndicators.KeltnerChannels,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> Vector{LightweightCharts.LWCChart}

Visualize Keltner Channels (KC) using 3 lwc_lines.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    macd::OnlineTechnicalIndicators.MACD,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> Any

Visualize MACD using 2 lwc_lines and 1 histogram.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    mi::OnlineTechnicalIndicators.MassIndex,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize MassIndex using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    mcginleydynamic::OnlineTechnicalIndicators.McGinleyDynamic,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize McGinleyDynamic using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    md::OnlineTechnicalIndicators.MeanDev,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize MeanDev using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    obv::OnlineTechnicalIndicators.OBV,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize On Balance Volume (OBV) using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    psar::OnlineTechnicalIndicators.ParabolicSAR,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize Parabolic SAR using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    phl::OnlineTechnicalIndicators.PivotsHL,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> Vector{LightweightCharts.LWCChart}

Visualize PivotsHL using 2 lwc_lines.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    roc::OnlineTechnicalIndicators.ROC,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize ROC using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    rsi::OnlineTechnicalIndicators.RSI,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize RSI using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    sma::OnlineTechnicalIndicators.SMA,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Return an lwc_line for visualizing an SMA indicator.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    SMMA::OnlineTechnicalIndicators.SMMA,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Return an lwc_line for visualizing an SMMA indicator.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    sobv::OnlineTechnicalIndicators.SOBV,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize SOBV (Smoothed On Balance Volume) using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    stc::OnlineTechnicalIndicators.STC,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize STC using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    sd::OnlineTechnicalIndicators.StdDev,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize StdDev using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    stoch::OnlineTechnicalIndicators.Stoch,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> Vector{LightweightCharts.LWCChart}

Visualize Stochastic Oscillator using 2 lwc_lines.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    srsi::OnlineTechnicalIndicators.StochRSI,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> Vector{LightweightCharts.LWCChart}

Visualize StochRSI using 2 lwc_lines.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    st::OnlineTechnicalIndicators.SuperTrend,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize SuperTrend using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    t3::OnlineTechnicalIndicators.T3,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize T3 using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    tema::OnlineTechnicalIndicators.TEMA,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize TEMA using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    trix::OnlineTechnicalIndicators.TRIX,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize TRIX using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    tsi::OnlineTechnicalIndicators.TSI,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize True Strength Index (TSI) using 1 lwc_line. Note that on TradingView, TSI includes a second signal line that is not included here.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    ttm::OnlineTechnicalIndicators.TTM,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> Vector{LightweightCharts.LWCChart}

Visualize TTM Squeeze using 2 lwc_lines.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    uo::OnlineTechnicalIndicators.UO,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize UO (Ultimate Oscillator) using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    vtx::OnlineTechnicalIndicators.VTX,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> Vector{LightweightCharts.LWCChart}

Visualize VTX (Vortex Indicator) using 2 lwc_lines.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    vwap::OnlineTechnicalIndicators.VWAP,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize VWAP (Volume Weighted Average Price) using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    vwma::OnlineTechnicalIndicators.VWMA,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize VWMA (Volume Weighted Moving Average) using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    wma::OnlineTechnicalIndicators.WMA,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize WMA using 1 lwc_line.

source
TechnicalIndicatorCharts.visualizeMethod
visualize(
    zlema::OnlineTechnicalIndicators.ZLEMA,
    opts::Union{Nothing, AbstractDict},
    df::DataFrames.DataFrame
) -> LightweightCharts.LWCChart

Visualize ZLEMA using 1 lwc_line.

source