Files
wickra/testdata/golden/g_WoodiePivots.csv
T
kingchencandGitHub 4f708d410d test: golden-pin the four de-duplicated indicators across all bindings (#305)
* test: golden-pin the four de-duplicated indicators across all C-ABI bindings

Extend gen_golden to emit reference fixtures for AdOscillator (ADOSC),
IntradayIntensity, AwesomeOscillatorHistogram and AverageDrawdown, and replay
them through the Go / C# / Java / R golden harnesses so their corrected
definitions stay bit-identical to the Rust core in every binding. Go suite
verified locally (gcc 13 + cgo): all 9 golden tests pass; C#/Java/R use the
same fixtures and harness pattern (CI-verified). First step of extending the
golden coverage beyond the seven archetype representatives.

* test: golden-pin the scalar-output tranche (308 indicators) against Rust

Extend gen_golden with a generated emit_scalar that writes reference fixtures
for every single-f64-output indicator (scalar / candle / pairwise input) using
valid constructor params, and add a manifest-driven generic Python golden
replay that reconstructs each by its native name and checks it bit-for-bit
against the Rust output. 308 indicators now value-tied to the Rust core in
Python (pytest: 308/308). Takes golden coverage from the 7 archetype
representatives to 308+ of the catalogue.

22 scalar indicators with non-default constructor constraints are skipped by
gen_golden for now (logged), as are non-f64-output ones; multi-output, exotic
inputs and the per-indicator arg arities of the C-ABI/Node replays follow.
Generated + verified locally with the full toolchain.

* test: golden-pin the multi-output tranche (70 indicators) in Python

Add a generated emit_multi to gen_golden (per-indicator Output-field access,
one CSV column per field) and a manifest-driven generic Python replay that
checks every field of each multi-output indicator against the Rust reference.
70 multi-output indicators now value-tied to Rust in Python; combined with the
scalar tranche, 378 indicators are golden-pinned. 8 multi with non-default
param constraints and 5 with non-f64 Output fields (Option/Vec/i64) are
deferred. pytest green.

* test(golden): add 30 constraint-tuned indicators to scalar/multi golden suite

Emit golden fixtures for 22 scalar-output and 8 multi-output indicators
whose constructors need non-default parameters (Alma, Jma, Psar, T3, Mama,
DoubleBollinger, ZigZag, ...). All 408 fixtures replay bit-for-bit through
the Python binding.

* test(golden): cover 36 missed scalar/multi indicators

Add 26 single-output (LinearRegression family, HT cycle, Candle
volatility estimators, DrawdownDuration) and 10 multi-output
(BollingerBands, MACD/MACDEXT/MACDFIX, Camarilla, VWAP bands, ...)
indicators to the golden suite. 444 fixtures replay bit-for-bit
through the Python binding.

* test(golden): cover 50 exotic-input indicators

Add deterministic synthetic feeders for the DerivativesTick (17),
CrossSection (15), Trade (8), TradeQuote (3) and OrderBook (7)
families, derived from the shared OHLCV input series in both
gen_golden and a new Python replay harness (test_golden_exotic).
All 494 fixtures replay bit-for-bit through the Python binding.

* test(golden): complete 514-indicator golden coverage

Add the final tranches: 3 mixed multi-output indicators (Ichimoku,
WilliamsFractals, LeadLagCrossCorrelation), 6 histogram profiles
(time/volume seasonality + TPO/volume price profiles), 10 alt-chart
bar builders and the footprint. Every one of the 514 distinct
indicators now has a Rust-generated g_<Canonical>.csv fixture and a
generic Python replay (scalar/multi/exotic/profile/bars), all passing
bit-for-bit.

* test(golden): add generic Node replay for all 514 indicators

A manifest-driven node:test harness reconstructs every indicator by its
native class, feeds the same synthetic stream derived from the shared
golden input, and checks output bit-for-bit against the Rust reference
fixtures (scalar/multi/exotic/profile/bars). node_manifest.json is
generated from index.d.ts plus the Python-side manifests. 514/514 pass.

* test(golden): add generated Go replay for all 514 indicators

golden_all_test.go (generated by gen_golden_test.py) reconstructs every
Go indicator, feeds the shared synthetic stream and checks output
bit-for-bit against the Rust reference fixtures. A reflection-based
comparator flattens multi-output structs, profiles and bar slices so one
path covers all archetypes. This is the first C-ABI binding verified
across the full catalogue. 514/514 pass.

* test(golden): add generated C# replay for all 514 indicators

GoldenAllTests.g.cs (generated by gen_golden_test.py) reconstructs every
C# indicator, feeds the shared synthetic stream and checks output
bit-for-bit against the Rust reference fixtures via a reflection-based
flatten covering scalar/multi/profile/bar archetypes. 514/514 pass.

Also add the '#nullable enable' directive the compiler requires to the
generated Indicators.g.cs, clearing the four CS8669 warnings on the
nullable double[] profile return types.

* fix(java): marshal C ABI bool params correctly; add 514 golden replay

The Java FFM binding marshalled the cross-section state flags (newHigh,
newLow, aboveMa, onBuySignal) as JAVA_DOUBLE arrays, but the C ABI takes
them as const bool* (one byte each), so the native side read the low byte
of each 8-byte double and saw every flag as false. Add WickraNative.
boolSegment and use it across the 15 cross-section indicators. Also pass
the MacdExt MaType arguments as byte to match the uint8_t downcall
descriptor (was int, throwing WrongMethodTypeException).

Add GoldenAllTest.java (generated by gen_golden_test.py): a reflection
runner replaying all 514 indicators against the Rust reference fixtures.
The bugs above were found by this test; 514/514 now pass.

* fix(r): marshal C ABI bool flags correctly; add 514 golden replay

The R wrapper passed the cross-section state flags as (bool *)REAL(x),
reinterpreting the 8-byte doubles as 1-byte bools so the native side read
every flag as false. Add wk_bool_vec to convert each flag vector into a
real C bool buffer and use it for all 15 cross-section update wrappers.

Add test-golden-all.R + generated golden_specs.R: a reflective runner
replaying all 514 indicators against the Rust reference fixtures. The bug
above was found by this test; verified 514/514 pass locally.

* test(golden): add WASM replay for all 514 indicators

A manifest-driven node:test harness loads the nodejs-target wasm-pack
build, reconstructs every indicator by its JS class, feeds the shared
synthetic stream and checks output bit-for-bit against the Rust
reference fixtures. wasm_manifest.json is generated from the wasm .d.ts
plus the shared manifests; a recursive flattener covers scalar, multi
(Reflect objects), profile and bar shapes. 514/514 pass locally
(wasm-pack build --target nodejs, then node --test).

* test(golden): add C and C++ replay for all 514 indicators

golden_test.c (generated by gen_golden_test.py) drives every indicator
through the C ABI (wickra.h) and checks output bit-for-bit against the
Rust reference fixtures. golden_test.cpp #includes the same source so the
identical runner is compiled and run under both gcc (C) and g++ (C++) via
the CMake targets golden_test / golden_test_cpp — proving the extern "C"
header is consumable from each language. Both 514/514 (verified via ctest).

* test(golden): gofmt the generated Go golden replay

* test(golden): make the Node fixture reader CRLF-safe and pin fixtures to LF
2026-06-15 04:48:51 +02:00

7.3 KiB

1ppr1r2s1s2
299.75101.5102.7598.596.75
3103.2358064261408105.21610219117743106.75760667526887101.6943019420493599.71400617701272
4106.51134915748332108.40930075187866110.03710119333992104.88354871602206102.98559712162672
5109.31558479585792110.80024238043313112.24953136417449107.86629581211656106.38163822754134
6111.42442756880905112.6959583530238114.1755625555121109.94482336632075108.673292582106
7112.67523576992727114.0509132876588115.82716261316382110.89898644442225109.52330892669072
8112.98597443293207114.66926044328898116.84754270194611110.80769217427493109.12440616391802
9112.36620783831144114.0915483164463116.28511713822658110.17263901653116108.4472985383963
10110.9180427107274112.39708693487947114.20295296946335109.11217667614352107.63313245199146
11108.82649775219599109.88760365229585111.05410745211113107.65999395238072106.59888805228086
12106.34028453423286107.88152447268968109.28093331841488104.94087568850766103.39963575005085
13103.74537561499469105.77096206265162107.44221362316294102.07412405448336100.04853760682643
14101.3347529953889103.48218016442083105.1495221901275699.6674109696821797.51998380065024
1599.37819150172825101.27018140219896102.6738774898056597.9744954141215696.08250551365086
1698.0957667122782999.84443296766173101.2161480958735296.724051584066594.97538532868306
1797.6380399938902799.33786436225238100.8643710716969796.1115332844456894.41170891608358
1898.0747289200937599.60069279312157101.199406683053796.4760150301616294.9500511571338
1999.39235615239389100.85192768418362102.6125051673157597.6317786692617696.17220713747203
20101.5001376899113102.74473177899304104.4448909990171299.7999784698872298.55538438080548
21104.24243761307272105.82651553322012107.90917953146571102.15977361482713100.57569569467974
22107.41561290027985109.1206844603964111.24529178505117105.29100557562509103.58593401550854
23110.78702323684249112.32878088441295114.10830699598142109.00749712527401107.46573947770355
24114.11430721063675115.26918566250063116.4218512653705112.96164160776688111.806763155903
25117.16357145419374118.7170857318505120.02894763013074115.8517095559135114.29819527825674
26119.7257151488084121.80238913464852123.45713614112239118.07096814233454115.99429415649442
27121.63055019795274123.86671191007076125.60397448259948119.89328762542402117.657125913306
28122.75857175838351124.7415732556743126.27085136223998121.22929365181783119.24629215452704
29123.05016794262339124.52156978400922125.6955112937401121.87622643289251120.40482459150668
30122.51180477633085123.95533950002078125.3305056146068121.13663866174483119.69310393805489
31121.21842336751901122.80353763713414124.56611404014362119.45584696450953117.8707326948944
32119.31110683063227120.919356628115122.90745038202715117.32301307672012115.71476327923739
33116.98915760077536118.37729729214395120.25466371492199115.11179117799732113.72365148662873
34114.49614705785103115.93433976949258117.85136222129584112.57912460604777111.14093189440622
35112.10024032662247113.72343327490799115.69782475194486110.1258488495856108.50265590130007
36110.07004395857749111.62473401596233113.31700574237296108.37777223216686106.82308217478202
37108.64818240948043110.10844114682158111.458979902557107.297643653745105.83738491640385
38108.02555852227405109.55440008971985110.75308330304362106.82687530895028105.29803374150448
39108.31959289452305110.37131889896037111.95328245652354106.73762933695988104.68590333252257
40109.55953858880657111.7983894393855113.54288798087109107.81504004732099105.57618919674206
41111.68121041835619113.69173559601434115.30435328876551110.06859272560501108.05806754794686
42114.5322503045423115.97376474505627117.21123815466355113.29477689493503111.85326245442106
43117.88757297816161119.11392764460153120.3800640946807116.62143652808244115.39508186164252
44121.47316278726743123.06137240642857124.92344665570188119.61108853799412118.02287891883297
45124.99519232326226126.69948832121449128.8446801829374122.85000046153937121.14570446358714
46128.1707253536709129.7095730824924131.74840122451127126.13189721165205124.59304948283052
47130.7561704255396132.01648381340888133.7134495213249129.0592047176236127.79889132975433
48132.57016494952438134.0564579331979135.80916742703812130.81745545568415129.33116247201065
49133.50857021097778135.0221674988538136.56671743372704131.96402027610455130.45042298822852
50133.55053301365854135.2775503964245136.79247827552194132.03560513456108130.30858775179513
51132.75586593795128134.48801422480747135.81695776470755131.4269223980512129.69477411119502
52131.2550776986053133.212571142251134.67446317996493129.79318566089137127.83569221724568
53129.23407695329016131.38889662325485133.0770587371876127.54591483935741125.39109516939271
54126.91580669241227128.88265629639562130.52604623921468125.27241674959325123.30556714560988
55124.54088040616134125.97443635807687127.3069247497988123.20839201443941121.77483606252387
56122.34881483819879123.47220808887849124.74167074392513121.07935218315215119.95595893247246
57120.56086831850368122.09857735708441123.99372988005499118.6657157955331117.12800675695237
58119.36498113076334121.10441130679563123.32514441598471117.14424802157426115.40481784554197
59118.90301126811374120.5506592888774122.68562994750138116.76804060948976115.1203925887261
60119.26042057771592120.56662839601262122.24686497915383117.58018399457471116.27397617627801
61120.45875530483092121.76499347299884123.24039124665228118.98335753117748117.67711936300955
62122.45156466981135124.02551403118485125.52233766761456120.95474103338164119.38079167200813
63125.1246501097061127.06077807176187128.69237804576446123.49305013570351121.55692217364773
64128.30157779318262130.2626065463162131.76626412054748126.7979202189513124.83689146581774
65131.7551099011788133.56117646326018134.86900907156303130.44727729287595128.64121073079457
66135.2245934480723137.21504933714863138.78839354597167133.65124923924927131.66079335017295
67138.43846573713427140.2885600535255141.90478844979313136.82223734086662134.9721430244754
68141.1400565618768142.54235180704387143.95128542582248139.7311229430982138.32882769793113
69143.1140042174615144.34777490454061145.8270629535848141.63471616841733140.40094548133823
70144.21007157012286145.6513768660649147.51696729939925142.34448113678852140.90317584084647
71144.36111380188333146.07225900794367148.2825773277284142.1507954820986140.43965027603826
72143.59247943663343145.29527881428604147.44992429448442141.43783395643504139.73503457878243
73142.0211716648925143.43602898414937145.1447777101864140.3124229388555138.89756561959862
74139.84449583895628140.94354287518595142.1065717562293138.68146695791293137.58241992168325
75137.31942780989448138.96230317160737140.42358582911223135.85814515238962134.21526979067673
76134.73528228094608136.80901381844578138.50003832997277133.0442577694191130.9705262319194
77132.38319421519236134.512228809292136.1511420829866130.74428094149775128.6152463473981
78130.52628402854575132.34538845178253133.68695605299564129.18471642733263127.36561200409585
79129.3741089943372131.1327632752579132.54338290124667127.96348936834846126.20483508742775
80129.06418368570354130.7288919142122132.26027867654088127.53279692337486125.8680886948662
81129.6521615246492131.18346010512911132.8287921528506128.0068294769277126.47553089644776