Wickra 1.0.7

There is a newer version of this package available.
See the version list below for details.
dotnet add package Wickra --version 1.0.7
                    
NuGet\Install-Package Wickra -Version 1.0.7
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Wickra" Version="1.0.7" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Wickra" Version="1.0.7" />
                    
Directory.Packages.props
<PackageReference Include="Wickra" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Wickra --version 1.0.7
                    
#r "nuget: Wickra, 1.0.7"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Wickra@1.0.7
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Wickra&version=1.0.7
                    
Install as a Cake Addin
#tool nuget:?package=Wickra&version=1.0.7
                    
Install as a Cake Tool

<p align="center"> <a href="https://wickra.org"><img src="https://raw.githubusercontent.com/wickra-lib/.github/main/profile/wickra-banner.svg?v=514-8" alt="Wickra — streaming-first technical indicators" width="100%"></a> </p>

CI codecov NuGet License: MIT OR Apache-2.0

Wickra — C#


▶ Live demo: all 514 indicators over real Binance market data, computed live in your browser — live.wickra.org · zero backend, powered by wickra-wasm.

Streaming-first technical indicators for C#. dotnet add package Wickra — prebuilt native library, no system dependencies.

Wickra is a multi-language technical-analysis library with a Rust core and bindings for Python, Node.js and WASM, plus a C ABI for C, C++, C#, Go, Java, R and any other C-capable language. Every indicator is an incremental streaming state machine, so live trading bots and historical backtests share the exact same implementation. This package is the C# binding; it consumes the C ABI hub through [LibraryImport] P/Invoke and exposes all 514 streaming-first indicators as idiomatic IDisposable classes.

Install

dotnet add package Wickra

The native library ships prebuilt per platform (Linux, macOS, Windows — x64 and arm64) under runtimes/<rid>/native/, selected automatically. There is nothing to compile. Targets .NET 8 and later.

Quick start

using Wickra;

// Batch: run an indicator over a whole series (NaN at warmup positions).
var prices = Enumerable.Range(0, 1000).Select(i => 100.0 + i * 0.1).ToArray();
using var sma = new Sma(20);
double[] values = sma.Batch(prices);

// Streaming: the same indicator, fed tick by tick.
using var rsi = new Rsi(14);
foreach (var price in liveFeed)
{
    var value = rsi.Update(price); // NaN during warmup, no recomputation
    if (double.IsFinite(value) && value > 70)
    {
        Console.WriteLine("overbought");
    }
}

Batch(prices) and feeding the same prices through Update() produce identical values — the equivalence is enforced by the test suite. Multi-output indicators (MACD, Bollinger, ADX, …) return a nullable record struct, null while warming up.

Reusing a buffer, and the opt-in fast batch

Every Batch also has a caller-buffer overload that allocates nothing, and a BatchFast twin; for a multi-output indicator the buffer holds its records (Span<MacdOutput>, Span<BollingerOutput>, …):

var output = new double[prices.Length];
using var exact = new Sma(20);
exact.Batch(prices, output);        // the same bits as new Sma(20).Batch(prices)

using var fast = new Ema(20);
fast.BatchFast(prices, output);     // or: double[] values = fast.BatchFast(prices);

An indicator keeps its state across calls, so a second batch on the same instance continues the series rather than restarting it.

An indicator instance is not thread-safe: use it from one thread at a time, and do not Dispose it while another thread is still calling it. Update passes the native handle without reference counting (that bookkeeping cost more than the update itself); it still throws ObjectDisposedException once disposed.

BatchFast runs a SIMD kernel where the indicator has one (moving averages, RSI, ATR, MACD, Bollinger, Chaikin, skewness, Pearson and more). The kernel reassociates the arithmetic, so each value agrees with Batch to within a few units in the last place rather than bit for bit; NaN placement and length are identical, and the result is the same on every platform. Where there is no kernel, BatchFast is Batch exactly. Use Batch when you need reproducible bits against streaming; use BatchFast for throughput.

Benchmark

benchmarks/ reports streaming and batch updates-per-second for SMA, ATR and MACD. It measures this binding's FFI overhead, not a cross-library ratio (the same Rust core runs under every binding) — see the repository BENCHMARKS.md §3.

cargo build -p wickra-c --release
dotnet run -c Release --project benchmarks

Documentation

The full indicator catalogue, guides, quickstarts, and API reference live in the main repository and documentation site:

Wickra ships native bindings for Python, Node.js, WASM and Rust, plus a C ABI hub that any C-capable language (C, C++, C#, Go, Java, R) links against — all exposing the same indicators from the shared, unsafe-forbidden Rust core.

Security

Found a security issue? Please don't open a public issue. Report it privately via the affected repository's Security tab ("Report a vulnerability") or email support@wickra.org with a subject line starting [wickra security]. Full policy: https://github.com/wickra-lib/wickra/blob/main/SECURITY.md.

Disclaimer

Wickra is an indicator toolkit, not a trading system. The values it computes are deterministic transforms of the input data — they are not financial advice and do not predict the market. Any use in a live trading context is at your own risk. The library is provided as is, without warranty of any kind.

License

Licensed under either of Apache-2.0 or MIT at your option.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.0 55 10/5/2026
1.0.7 65 10/3/2026
1.0.6 98 9/23/2026
1.0.5 116 9/18/2026
1.0.4 130 8/31/2026
1.0.3 113 8/28/2026
1.0.2 111 8/28/2026
1.0.1 119 8/27/2026
1.0.0 109 8/26/2026
0.9.9 182 6/29/2026
0.9.8 133 6/28/2026
0.9.7 141 6/21/2026
0.9.6 137 6/18/2026
0.9.5 129 6/17/2026
0.9.4 134 6/17/2026
0.9.3 121 6/17/2026
0.9.2 122 6/15/2026
0.9.1 127 6/14/2026
0.9.0 138 6/13/2026
0.8.9 142 6/12/2026
Loading failed