[ANN] TechnicalIndicatorCharts.jl

TechnicalIndicatorCharts

Dev
Build Status
Coverage

The purpose of this library is to bring
OnlineTechnicalIndicators.jl and
LightweightCharts.jl together.

Creating a Chart

using OnlineTechnicalIndicators
using TechnicalIndicatorCharts

golden_cross_chart = Chart(
    "AAPL", Week(1);
    indicators = [
        SMA{Float64}(;period=50),         # Setup indicators
        SMA{Float64}(;period=200)
    ],
    visuals = [
        Dict(
            :label_name => "SMA 50",      # Describe how to draw indicators
            :line_color => "#E072A4",
            :line_width => 2
        ),
        Dict(
            :label_name => "SMA 200",
            :line_color => "#3D3B8E",
            :line_width => 5
        )
    ]
)

Feeding Your Chart Data

Adding new data to the chart is done with the update!(chart, candle) function.

using MarketData

for row in eachrow(AAPL)
    c = Candle(
      ts=DateTime(row.timestamp),
      o=row.Open,
      h=row.High,
      l=row.Low,
      c=row.Close,
      v=row.Volume
    )
    update!(golden_cross_chart, c)
end

Notice that update! took daily candles from AAPL and aggregated them into weekly candles.

The update! function was designed to consume low timeframe candles to incrementally build higher timeframe charts. Imagine unfinished 1m candles from a websocket being consumed to generate multiple higher-timeframe charts for the same market. The hope was that this would facilitate realtime, multi-timeframe analysis.

Visualization

The visualize function will take a chart and generate something that lwc_show from LightweightCharts.jl can display.

using LightweightCharts

lwc_show(visualize(golden_cross_chart))
# Or
golden_cross_chart |> visualize |> lwc_show

Addendum

  • This is kind of an early release. (v0.6.0)
  • I’d like to support visualizations for every indicator that’s implemented in @FemtoTrader’s OnlineTechnicalIndicators.jl.
  • However, so far, I’ve only implemented: EMA, HMA, SMA, BB, RSI, StochRSI.
  • I have created a guide for anyone who wants or needs to implement a visualization that doesn’t exist yet.
  • Any help is appreciated.

Also, some of my earliest bookmarks on this forum were related to technical analysis and charting, and there was not much out there even a year ago.

However, with the release of OnlineTechnicalIndicators.jl and LightweightCharts.jl earlier this year, we can do much better. These two great libraries just had to be brought together, and now it’s here.

6 Likes