Files
wickra/testdata/golden/g_SmoothedHeikinAshi.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

5.2 KiB

1openhighlowclose
2nannannannan
3nannannannan
4nannannannan
5nannannannan
6nannannannan
7nannannannan
8nannannannan
9nannannannan
10nannannannan
11nannannannan
12nannannannan
13nannannannan
14nannannannan
15107.03252484838643108.67272128360027105.39232841317258107.03252484838642
16107.03252484838643107.4453560245189104.18629801900222105.81582702176057
17106.42417593507349106.42417593507349103.08655369987235104.71390090745004
18105.56903842126177105.56903842126177102.21484854616484103.8335279769295
19104.70128319909563104.8789709047384101.64390668942343103.2614387970809
20103.98136099808826104.65514770543133101.45879161094425103.0569696581878
21103.51916532813803104.87780822621627101.61873402187506103.24827112404566
22103.38371822609184105.49946315937872102.16430833098016103.83188574517945
23103.60780198563565106.44174131791635103.10843596541908104.77508864166771
24104.19144531365168107.61843885066172104.19144531365168106.02017026093066
25105.10580778729117109.06603811757003105.10580778729117107.48984692807396
26106.29782735768256110.70796132259832106.29782735768256109.09316755888081
27107.6954974582817112.39594151564941107.6954974582817110.73155863478446
28109.21352804653307113.98152929555606109.21352804653307112.30491215854931
29110.75922010254119115.34720664979582110.75922010254119113.71778224098222
30112.2385011717617116.48584188194529112.2385011717617114.8857606717551
31113.5621309217584117.35186293375638113.5621309217584115.74194650674991
32114.65203871425416117.87817462052813114.60814034019758116.24315748036287
33115.44759809730851118.0099545409315114.74052401609214116.37523927851183
34115.91141868791017117.79704987009454114.51618139344112116.15661563176783
35116.03401715983901117.30072746123652113.97763019142724115.63917882633189
36115.83659799308545116.56227255773673113.24932668606262114.90579962189969
37115.37119880749256115.68713237206728112.44113961753952114.06413599480342
38114.71766740114799114.82541362053801111.64854992917803113.23698177485804
39113.97732458800301114.16889933141113110.93112552396573112.55001242768843
40113.26366850784572113.78691770459527110.44973381920065112.11832576189798
41112.69099713487185113.72117242546355110.3458606754003112.03351655043193
42112.36225684265189113.99431259728836110.71184403388405112.3530783155862
43112.35766757911904114.68223217474868111.50509393759573113.0936630561722
44112.72566531764562115.83596615632096112.6224085016638114.2291873289924
45113.47742632331901117.3432218934762113.47742632331901115.69404771914641
46114.58573702123272119.05873277377134114.58573702123272117.39093676462952
47115.98833689293112120.84465322172925115.98833689293112119.20207807408731
48117.59520748350921122.64174938461397117.59520748350921121.00225075815672
49119.29872912083297124.29659881944558119.29872912083297122.67182352833268
50120.98527632458283125.73244709588697120.98527632458283124.10817882613155
51122.54672757535718126.84609541348222122.54672757535718125.23432345791045
52123.89052551663382127.62887865652716123.89052551663382126.00405059627431
53124.94728805645406128.06799337795326124.73922716899533126.4036102734743
54125.67544916496418128.13348714559035124.76719115825314126.45033915192175
55126.06289415844296127.83213803256274124.54587559771883126.18900681514079
56126.12595048679188127.27028996065377124.10314839635888125.68671917850631
57125.9063348326491126.62838741142984123.42581651416742125.02710196279864
58125.46671839772387125.95603098856618122.65244777290924124.30423938073771
59124.8854788892308125.30029111365572121.93283650283469123.6165638082452
60124.25102134873799124.7190065866159121.40235333704597123.06067996183094
61123.65585065528447124.34769278553169121.1023751769949122.72503398126331
62123.19044231827388124.29445218829295121.07240719452062122.6834296914068
63122.93693600484033124.62269190768171121.35455585493793122.98862388130983
64122.96277994307508125.31369770231268122.01935494628607123.66652632429938
65123.31465313368723126.34693034326854123.07664673199426124.71178853763142
66124.01322083565933127.74039798508545124.01322083565933126.08568841367331
67125.04945462466631129.3823041381943125.04945462466631127.71713432879321
68126.38329447672976131.13786227718913126.38329447672976129.5072998514451
69127.94529716408744132.931919609098127.94529716408744131.3378949243783
70129.64159604423287134.68441859501257129.64159604423287133.08247081963708
71131.36203343193498136.26935373189997131.36203343193498134.6195680915182
72132.99080076172658137.53305655655757132.99080076172658135.84607934436997
73134.41844005304827138.35930506780716134.41844005304827136.68901774755832
74135.5537289003033138.71240102143284135.51562621069843137.11401361606562
75136.33387125818444138.72150894756172135.53708304236287137.1292959949623
76136.73158362657335138.41548199354992135.15367873584066136.78458036469527
77136.7580819956343137.82969872626154134.50040952054093136.16505412340123
78136.4615680595178137.03478578006118133.72797886517665135.38138232261892
79135.92147519106834136.20144482542983132.91297564494198134.5572102351859
80135.23934271312712135.4539949084435132.1778422865757133.81591859750958
81134.52763065531835134.89979473030047131.63691170758818133.2683532189443