Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4d04ab8227 | |||
| 7d4ca8c572 | |||
| d31e127ae2 | |||
| ffc80754d8 | |||
| f2b92f89ee | |||
| 350230cd07 | |||
| 71df1798b8 | |||
| 6a86660e30 |
@@ -23,7 +23,7 @@ runs:
|
|||||||
using: composite
|
using: composite
|
||||||
steps:
|
steps:
|
||||||
- id: first
|
- id: first
|
||||||
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable branch, 2026-03-27
|
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # zizmor: ignore[impostor-commit] pinned to the stable-tag SHA (2026-03-27); tag-pinned, not a branch commit
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
with:
|
with:
|
||||||
toolchain: ${{ inputs.toolchain }}
|
toolchain: ${{ inputs.toolchain }}
|
||||||
@@ -39,7 +39,7 @@ runs:
|
|||||||
|
|
||||||
- name: Retry the Rust toolchain install
|
- name: Retry the Rust toolchain install
|
||||||
if: steps.first.outcome == 'failure'
|
if: steps.first.outcome == 'failure'
|
||||||
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable branch, 2026-03-27
|
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # zizmor: ignore[impostor-commit] pinned to the stable-tag SHA (2026-03-27); tag-pinned, not a branch commit
|
||||||
with:
|
with:
|
||||||
toolchain: ${{ inputs.toolchain }}
|
toolchain: ${{ inputs.toolchain }}
|
||||||
components: ${{ inputs.components }}
|
components: ${{ inputs.components }}
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ jobs:
|
|||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
id: setup_python
|
id: setup_python
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
||||||
with:
|
with:
|
||||||
python-version: "3.11"
|
python-version: "3.11"
|
||||||
cache: pip
|
cache: pip
|
||||||
@@ -76,7 +76,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Set up Python (retry)
|
- name: Set up Python (retry)
|
||||||
if: steps.setup_python.outcome == 'failure'
|
if: steps.setup_python.outcome == 'failure'
|
||||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
||||||
with:
|
with:
|
||||||
python-version: "3.11"
|
python-version: "3.11"
|
||||||
cache: pip
|
cache: pip
|
||||||
|
|||||||
+17
-17
@@ -134,7 +134,7 @@ jobs:
|
|||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
id: setup_python
|
id: setup_python
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
python-version: "3.12"
|
||||||
|
|
||||||
@@ -147,7 +147,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Set up Python (retry)
|
- name: Set up Python (retry)
|
||||||
if: steps.setup_python.outcome == 'failure'
|
if: steps.setup_python.outcome == 'failure'
|
||||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
python-version: "3.12"
|
||||||
|
|
||||||
@@ -209,7 +209,7 @@ jobs:
|
|||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
id: setup_python
|
id: setup_python
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
python-version: "3.12"
|
||||||
|
|
||||||
@@ -222,7 +222,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Set up Python (retry)
|
- name: Set up Python (retry)
|
||||||
if: steps.setup_python.outcome == 'failure'
|
if: steps.setup_python.outcome == 'failure'
|
||||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
python-version: "3.12"
|
||||||
|
|
||||||
@@ -345,7 +345,7 @@ jobs:
|
|||||||
timeout-minutes: 6
|
timeout-minutes: 6
|
||||||
|
|
||||||
- name: Install cargo-llvm-cov
|
- name: Install cargo-llvm-cov
|
||||||
uses: taiki-e/install-action@8b3c737da4b541bf0fb5a3e0488ff20535badac9 # v2.82.1
|
uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2.82.5
|
||||||
timeout-minutes: 10 # fail fast on a stuck download instead of hanging the job
|
timeout-minutes: 10 # fail fast on a stuck download instead of hanging the job
|
||||||
with:
|
with:
|
||||||
tool: cargo-llvm-cov
|
tool: cargo-llvm-cov
|
||||||
@@ -415,7 +415,7 @@ jobs:
|
|||||||
# attributes the modern nightly compiler rejects, so the install
|
# attributes the modern nightly compiler rejects, so the install
|
||||||
# never gets off the ground. The prebuilt binary avoids the entire
|
# never gets off the ground. The prebuilt binary avoids the entire
|
||||||
# transitive-dep compile.
|
# transitive-dep compile.
|
||||||
uses: taiki-e/install-action@8b3c737da4b541bf0fb5a3e0488ff20535badac9 # v2.82.1
|
uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2.82.5
|
||||||
timeout-minutes: 10 # fail fast on a stuck download instead of hanging the job
|
timeout-minutes: 10 # fail fast on a stuck download instead of hanging the job
|
||||||
with:
|
with:
|
||||||
tool: cargo-fuzz
|
tool: cargo-fuzz
|
||||||
@@ -470,7 +470,7 @@ jobs:
|
|||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
id: setup_python
|
id: setup_python
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python-version }}
|
python-version: ${{ matrix.python-version }}
|
||||||
cache: pip
|
cache: pip
|
||||||
@@ -485,7 +485,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Set up Python (retry)
|
- name: Set up Python (retry)
|
||||||
if: steps.setup_python.outcome == 'failure'
|
if: steps.setup_python.outcome == 'failure'
|
||||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python-version }}
|
python-version: ${{ matrix.python-version }}
|
||||||
cache: pip
|
cache: pip
|
||||||
@@ -549,7 +549,7 @@ jobs:
|
|||||||
# same taiki-e prebuilt-binary installer we already use for
|
# same taiki-e prebuilt-binary installer we already use for
|
||||||
# cargo-llvm-cov and cargo-fuzz; it tracks the latest wasm-pack
|
# cargo-llvm-cov and cargo-fuzz; it tracks the latest wasm-pack
|
||||||
# release, which has `--features` as a top-level flag (since 0.12).
|
# release, which has `--features` as a top-level flag (since 0.12).
|
||||||
uses: taiki-e/install-action@8b3c737da4b541bf0fb5a3e0488ff20535badac9 # v2.82.1
|
uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2.82.5
|
||||||
timeout-minutes: 10 # fail fast on a stuck download instead of hanging the job
|
timeout-minutes: 10 # fail fast on a stuck download instead of hanging the job
|
||||||
with:
|
with:
|
||||||
tool: wasm-pack
|
tool: wasm-pack
|
||||||
@@ -676,7 +676,7 @@ jobs:
|
|||||||
timeout-minutes: 6
|
timeout-minutes: 6
|
||||||
|
|
||||||
- name: Install cbindgen
|
- name: Install cbindgen
|
||||||
uses: taiki-e/install-action@8b3c737da4b541bf0fb5a3e0488ff20535badac9 # v2.82.1
|
uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2.82.5
|
||||||
timeout-minutes: 10 # fail fast on a stuck download instead of hanging the job
|
timeout-minutes: 10 # fail fast on a stuck download instead of hanging the job
|
||||||
with:
|
with:
|
||||||
tool: cbindgen
|
tool: cbindgen
|
||||||
@@ -735,7 +735,7 @@ jobs:
|
|||||||
# local store instead of hitting nuget.org every run. No packages.lock.json
|
# local store instead of hitting nuget.org every run. No packages.lock.json
|
||||||
# exists, so key on the project files; never block the job on a slow restore.
|
# exists, so key on the project files; never block the job on a slow restore.
|
||||||
- name: Cache NuGet packages
|
- name: Cache NuGet packages
|
||||||
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
timeout-minutes: 6
|
timeout-minutes: 6
|
||||||
with:
|
with:
|
||||||
@@ -802,7 +802,7 @@ jobs:
|
|||||||
- name: Set up Go
|
- name: Set up Go
|
||||||
id: setup-go
|
id: setup-go
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
|
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
|
||||||
with:
|
with:
|
||||||
go-version: "stable"
|
go-version: "stable"
|
||||||
cache: false
|
cache: false
|
||||||
@@ -816,7 +816,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Set up Go (retry)
|
- name: Set up Go (retry)
|
||||||
if: steps.setup-go.outcome == 'failure'
|
if: steps.setup-go.outcome == 'failure'
|
||||||
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
|
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
|
||||||
with:
|
with:
|
||||||
go-version: "stable"
|
go-version: "stable"
|
||||||
cache: false
|
cache: false
|
||||||
@@ -937,7 +937,7 @@ jobs:
|
|||||||
run: cargo build -p wickra-c --release
|
run: cargo build -p wickra-c --release
|
||||||
|
|
||||||
- name: Set up R
|
- name: Set up R
|
||||||
uses: r-lib/actions/setup-r@a51a8012b0aab7c32ef9d19bf54da93f3254335e # v2
|
uses: r-lib/actions/setup-r@d3c5be51b12e724e68f33216ca3c148b66d5f0b6 # v2
|
||||||
with:
|
with:
|
||||||
r-version: "release"
|
r-version: "release"
|
||||||
use-public-rspm: true
|
use-public-rspm: true
|
||||||
@@ -947,7 +947,7 @@ jobs:
|
|||||||
# compiling testthat / knitr and their deps from source — the slow, flaky
|
# compiling testthat / knitr and their deps from source — the slow, flaky
|
||||||
# path that previously blew past the job timeout on the ubuntu runner.
|
# path that previously blew past the job timeout on the ubuntu runner.
|
||||||
- name: Install R dependencies (cached binaries)
|
- name: Install R dependencies (cached binaries)
|
||||||
uses: r-lib/actions/setup-r-dependencies@a51a8012b0aab7c32ef9d19bf54da93f3254335e # v2
|
uses: r-lib/actions/setup-r-dependencies@d3c5be51b12e724e68f33216ca3c148b66d5f0b6 # v2
|
||||||
with:
|
with:
|
||||||
working-directory: bindings/r
|
working-directory: bindings/r
|
||||||
extra-packages: |
|
extra-packages: |
|
||||||
@@ -1052,7 +1052,7 @@ jobs:
|
|||||||
- name: Set up JDK 25
|
- name: Set up JDK 25
|
||||||
id: setup-java
|
id: setup-java
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
|
uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0
|
||||||
with:
|
with:
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
java-version: "25"
|
java-version: "25"
|
||||||
@@ -1067,7 +1067,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Set up JDK 25 (retry)
|
- name: Set up JDK 25 (retry)
|
||||||
if: steps.setup-java.outcome == 'failure'
|
if: steps.setup-java.outcome == 'failure'
|
||||||
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
|
uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0
|
||||||
with:
|
with:
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
java-version: "25"
|
java-version: "25"
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ jobs:
|
|||||||
# consumers can audit the published dependency tree without
|
# consumers can audit the published dependency tree without
|
||||||
# re-resolving Cargo.lock.
|
# re-resolving Cargo.lock.
|
||||||
- name: Install cargo-cyclonedx
|
- name: Install cargo-cyclonedx
|
||||||
uses: taiki-e/install-action@8b3c737da4b541bf0fb5a3e0488ff20535badac9 # v2.82.1
|
uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2.82.5
|
||||||
timeout-minutes: 10 # fail fast on a stuck download instead of hanging the job
|
timeout-minutes: 10 # fail fast on a stuck download instead of hanging the job
|
||||||
with:
|
with:
|
||||||
tool: cargo-cyclonedx
|
tool: cargo-cyclonedx
|
||||||
@@ -165,7 +165,7 @@ jobs:
|
|||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
id: setup_python
|
id: setup_python
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
||||||
with:
|
with:
|
||||||
python-version: "3.11"
|
python-version: "3.11"
|
||||||
- name: Wait before Python retry
|
- name: Wait before Python retry
|
||||||
@@ -176,7 +176,7 @@ jobs:
|
|||||||
sleep 30
|
sleep 30
|
||||||
- name: Set up Python (retry)
|
- name: Set up Python (retry)
|
||||||
if: steps.setup_python.outcome == 'failure'
|
if: steps.setup_python.outcome == 'failure'
|
||||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
||||||
with:
|
with:
|
||||||
python-version: "3.11"
|
python-version: "3.11"
|
||||||
- name: Sync root README into bindings/python so it ships with the wheel
|
- name: Sync root README into bindings/python so it ships with the wheel
|
||||||
@@ -548,7 +548,7 @@ jobs:
|
|||||||
- name: Install wasm-pack (latest, via prebuilt binary)
|
- name: Install wasm-pack (latest, via prebuilt binary)
|
||||||
# See the matching note in ci.yml: jetli's default installs an old
|
# See the matching note in ci.yml: jetli's default installs an old
|
||||||
# 0.10.x wasm-pack whose build subcommand rejects --features.
|
# 0.10.x wasm-pack whose build subcommand rejects --features.
|
||||||
uses: taiki-e/install-action@8b3c737da4b541bf0fb5a3e0488ff20535badac9 # v2.82.1
|
uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2.82.5
|
||||||
timeout-minutes: 10 # fail fast on a stuck download instead of hanging the job
|
timeout-minutes: 10 # fail fast on a stuck download instead of hanging the job
|
||||||
with:
|
with:
|
||||||
tool: wasm-pack
|
tool: wasm-pack
|
||||||
@@ -804,7 +804,7 @@ jobs:
|
|||||||
# setup-java writes a settings.xml with the 'central' server credentials
|
# setup-java writes a settings.xml with the 'central' server credentials
|
||||||
# (mapped from the env vars below) and imports the GPG signing key.
|
# (mapped from the env vars below) and imports the GPG signing key.
|
||||||
- name: Set up JDK 25 + Maven Central credentials + GPG
|
- name: Set up JDK 25 + Maven Central credentials + GPG
|
||||||
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
|
uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0
|
||||||
with:
|
with:
|
||||||
distribution: temurin
|
distribution: temurin
|
||||||
java-version: "25"
|
java-version: "25"
|
||||||
@@ -1076,7 +1076,7 @@ jobs:
|
|||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
- name: Attest build provenance
|
- name: Attest build provenance
|
||||||
id: attest
|
id: attest
|
||||||
uses: actions/attest-build-provenance@a2bbfa25375fe432b6a289bc6b6cd05ecd0c4c32 # v4.1.0
|
uses: actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373 # v4.1.1
|
||||||
with:
|
with:
|
||||||
subject-path: |
|
subject-path: |
|
||||||
artifacts/crates/*.crate
|
artifacts/crates/*.crate
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ jobs:
|
|||||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
python-version: "3.12"
|
||||||
- name: Audit repo-metadata.toml drift
|
- name: Audit repo-metadata.toml drift
|
||||||
|
|||||||
@@ -37,4 +37,4 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Run zizmor
|
- name: Run zizmor
|
||||||
uses: zizmorcore/zizmor-action@5f14fd08f7cf1cb1609c1e344975f152c7ee938d # v0.5.6
|
uses: zizmorcore/zizmor-action@192e21d79ab29983730a13d1382995c2307fbcaa # v0.5.7
|
||||||
|
|||||||
Generated
+2
-2
@@ -277,9 +277,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "crossbeam-epoch"
|
name = "crossbeam-epoch"
|
||||||
version = "0.9.18"
|
version = "0.9.20"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
|
checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"crossbeam-utils",
|
"crossbeam-utils",
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -27,6 +27,8 @@
|
|||||||
|
|
||||||
> **▶ Live demo:** all 514 indicators over real Binance market data, computed live in your browser — **[live.wickra.org](https://live.wickra.org)** · zero backend, powered by `wickra-wasm`.
|
> **▶ Live demo:** all 514 indicators over real Binance market data, computed live in your browser — **[live.wickra.org](https://live.wickra.org)** · zero backend, powered by `wickra-wasm`.
|
||||||
|
|
||||||
|
**Part of the [Wickra ecosystem](#ecosystem):** the same data-driven core and ten-language binding surface also power [wickra-exchange](https://github.com/wickra-lib/wickra-exchange), [wickra-backtest](https://github.com/wickra-lib/wickra-backtest), [wickra-terminal](https://github.com/wickra-lib/wickra-terminal), [wickra-screener](https://github.com/wickra-lib/wickra-screener), [wickra-xray](https://github.com/wickra-lib/wickra-xray), [wickra-radar](https://github.com/wickra-lib/wickra-radar), [wickra-copilot](https://github.com/wickra-lib/wickra-copilot) and [wickra-shazam](https://github.com/wickra-lib/wickra-shazam).
|
||||||
|
|
||||||
Wickra is a multi-language technical-analysis library with a Rust core and
|
Wickra is a multi-language technical-analysis library with a Rust core and
|
||||||
native bindings for Python, Node.js and WASM, plus a C ABI that C, C++,
|
native bindings for Python, Node.js and WASM, plus a C ABI that C, C++,
|
||||||
C#, Go, Java, R and any other C-capable language links against. Every indicator is a
|
C#, Go, Java, R and any other C-capable language links against. Every indicator is a
|
||||||
@@ -440,6 +442,22 @@ order-book, trade, profile, alt-chart bars, footprint). This catches FFI wiring
|
|||||||
bugs the math-only core tests cannot see — it has already found and fixed real
|
bugs the math-only core tests cannot see — it has already found and fixed real
|
||||||
cross-language marshalling bugs in the Java and R bindings.
|
cross-language marshalling bugs in the Java and R bindings.
|
||||||
|
|
||||||
|
## Ecosystem
|
||||||
|
|
||||||
|
Wickra is the core library. The same data-driven core + ten-language binding
|
||||||
|
pattern powers a family of products built on it:
|
||||||
|
|
||||||
|
- [**wickra-exchange**](https://github.com/wickra-lib/wickra-exchange) — unified market-data + execution across ten crypto exchanges
|
||||||
|
- [**wickra-backtest**](https://github.com/wickra-lib/wickra-backtest) — event-driven backtester over the Wickra core
|
||||||
|
- [**wickra-terminal**](https://github.com/wickra-lib/wickra-terminal) — the trading terminal: a TUI and a browser renderer over the stack
|
||||||
|
- [**wickra-screener**](https://github.com/wickra-lib/wickra-screener) — parallel multi-symbol screening over 514 streaming indicators
|
||||||
|
- [**wickra-xray**](https://github.com/wickra-lib/wickra-xray) — market-microstructure explorer: footprint, order-book heatmap, liquidation map, funding/OI divergence
|
||||||
|
- [**wickra-radar**](https://github.com/wickra-lib/wickra-radar) — perp-universe alert radar: OI delta, funding flip, book imbalance, liquidation clusters, OI/price divergence
|
||||||
|
- [**wickra-copilot**](https://github.com/wickra-lib/wickra-copilot) — local market copilot grounded in real order-book, liquidation and funding microstructure
|
||||||
|
- [**wickra-shazam**](https://github.com/wickra-lib/wickra-shazam) — match an asset's current microstructure fingerprint against its entire history
|
||||||
|
|
||||||
|
Docs live at [docs.wickra.org](https://docs.wickra.org) ([wickra-docs](https://github.com/wickra-lib/wickra-docs)); the marketing site and in-browser demo at [wickra.org](https://wickra.org) ([webpage](https://github.com/wickra-lib/webpage)).
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Contributions are very welcome — issues, bug reports, ideas, and pull requests
|
Contributions are very welcome — issues, bug reports, ideas, and pull requests
|
||||||
@@ -512,6 +530,6 @@ The library is provided **as is**, without warranty of any kind; see
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://star-history.com/#wickra-lib/wickra&Date">
|
<a href="https://star-history.com/#wickra-lib/wickra&Date">
|
||||||
<img alt="Wickra star history" width="640"
|
<img alt="Wickra star history" width="640"
|
||||||
src="https://raw.githubusercontent.com/wickra-lib/.github/main/profile/badges/star-history.svg">
|
src="https://raw.githubusercontent.com/wickra-lib/.github/main/profile/badges/star-history.svg?v=2">
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.6.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.7.0" />
|
||||||
<PackageReference Include="xunit" Version="2.9.3" />
|
<PackageReference Include="xunit" Version="2.9.3" />
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5" />
|
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.wickra</groupId>
|
<groupId>org.wickra</groupId>
|
||||||
<artifactId>wickra</artifactId>
|
<artifactId>wickra</artifactId>
|
||||||
<version>0.9.6</version>
|
<version>0.9.7</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ exclude_all_private = true
|
|||||||
# check time):
|
# check time):
|
||||||
# - crates.io and npmjs.com return 403/404 to non-browser requests
|
# - crates.io and npmjs.com return 403/404 to non-browser requests
|
||||||
# (anti-scraping); the package pages are live in a browser.
|
# (anti-scraping); the package pages are live in a browser.
|
||||||
|
# - GitHub serves 404 for /stargazers and /network/members to anonymous clients
|
||||||
|
# (anti-scraping). The README social-footer badges link there; the pages are
|
||||||
|
# live in a browser.
|
||||||
# - the CHANGELOG version-compare links point at the release tag that is created
|
# - the CHANGELOG version-compare links point at the release tag that is created
|
||||||
# *after* the bump is merged. ci.yml runs on push/PR (never on the tag), so the
|
# *after* the bump is merged. ci.yml runs on push/PR (never on the tag), so the
|
||||||
# tag never exists when lychee runs and the compare URL 404s. One pattern
|
# tag never exists when lychee runs and the compare URL 404s. One pattern
|
||||||
@@ -25,4 +28,6 @@ exclude = [
|
|||||||
'crates\.io/crates/',
|
'crates\.io/crates/',
|
||||||
'www\.npmjs\.com/package/',
|
'www\.npmjs\.com/package/',
|
||||||
'github\.com/wickra-lib/wickra/compare/',
|
'github\.com/wickra-lib/wickra/compare/',
|
||||||
|
'github\.com/wickra-lib/wickra/stargazers',
|
||||||
|
'github\.com/wickra-lib/wickra/network/members',
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user