.N .NET Landscape

Skender.Stock.Indicators

Finance, Blockchain & Trading
github.com/facioquo/stock-indicators-dotnet

Stock Indicators for .NET is a C# NuGet package that transforms raw equity, commodity, forex, or cryptocurrency financial market price quotes into technical indicators and trading insights. You'll need this essential data in the investment tools that you're building for algorithmic trading, technical analysis, machine learning, or visual charting.

algorithmic-tradingbacktestingcryptocurrencyforexhistorical-quotesindicatorindicatorsnugetpackagequantitative-financestockstock-analysis
GitHub stars
1,250
Forks
275
Open issues
65
NuGet downloads
5,454,553
latest 2.7.3
License
Apache-2.0
Language
C#
Last push
2 days ago
22 Oct 2026
Created
29 Dec 2019

image

GitHub Stars NuGet package

Stock Indicators for .NET

Stock Indicators for .NET is a C# library package that produces financial market technical indicators. Send in historical price bars and get back desired indicators such as moving averages, Relative Strength Index, Stochastic Oscillator, Parabolic SAR, etc. Nothing more.

Build your technical analysis, trading algorithms, machine learning, charting, or other intelligent market software with this library and your own OHLCV price bars sources for equities, commodities, forex, cryptocurrencies, and others.

This FacioQuo.Stock.Indicators NuGet package was formerly named Skender.Stock.Indicators

Streaming support

Most indicators support three calculation styles, two of them built for real-time and incremental data processing:

  • Series - Traditional batch processing for complete historical datasets
  • BufferList - Incremental calculations with simple, efficient buffer management
  • StreamHub - Real-time processing with observable patterns and state management

Quick example using streaming:

// Create a hub for streaming price bars
BarHub barHub = new();

// Subscribe indicators to the hub
EmaHub emaHub = barHub.ToEmaHub(20);
RsiHub rsiHub = barHub.ToRsiHub(14);

// Call from your WebSocket or SSE message handler as each bar arrives
void OnBarReceived(Bar bar)
{
    barHub.Add(bar);

    // Access real-time results
    EmaResult emaResult = emaHub.Results[^1];
    RsiResult rsiResult = rsiHub.Results[^1];
}

Migrate to v3 →

Visit our project site for more information: