4f708d410d
* 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
82 lines
2.6 KiB
CSV
82 lines
2.6 KiB
CSV
upper,lower
|
|
nan,nan
|
|
nan,nan
|
|
nan,nan
|
|
nan,nan
|
|
nan,nan
|
|
nan,nan
|
|
nan,nan
|
|
nan,nan
|
|
nan,nan
|
|
nan,nan
|
|
nan,nan
|
|
nan,nan
|
|
nan,nan
|
|
2.6349370214363574,-1.2417370285297835
|
|
3.2582430945126646,-1.7161484315750783
|
|
3.527055938295831,-2.101651603981054
|
|
3.406094373088436,-2.347055037602331
|
|
2.902063232438252,-2.4161583680944148
|
|
2.059649831032999,-2.29042850604408
|
|
0.9537521055637939,-1.9695710517262626
|
|
0.32049195790777674,-1.4702648945680323
|
|
1.6582321269040108,-0.8235319154153871
|
|
2.9546046588203865,-0.07128949183979216
|
|
4.112701974898442,-0.7374146906020087
|
|
5.0494872794945,-1.5501244487876846
|
|
5.699836434341634,-2.3144681168787713
|
|
6.019207442116652,-2.981392647881478
|
|
5.985500561463482,-3.508196880195271
|
|
5.600488544826817,-3.86141945269695
|
|
4.890845835554558,-4.0195488296305655
|
|
3.9084143665879765,-3.9753821275245116
|
|
2.7290513492710744,-3.737716925602413
|
|
1.4493254582583859,-3.3319713547313796
|
|
0.18051948215619973,-2.7993368420659976
|
|
0.9601572029396692,-2.194195388848428
|
|
1.860633989409294,-1.5797687014942596
|
|
2.426179691413296,-1.022269193031292
|
|
2.591105378515337,-0.5841303708676975
|
|
2.328124417277891,-0.31713646109820104
|
|
1.653673325911285,-0.2563874638367878
|
|
0.6280076651943745,-0.4159895305926682
|
|
0.6503224261088008,-0.787148818782569
|
|
2.05509212129445,-1.3390028421134303
|
|
3.4467266371148924,-2.022109240556972
|
|
4.68830705488719,-2.7741063525354406
|
|
5.660963343437402,-3.526740388850129
|
|
6.27650708607284,-4.2132796824930665
|
|
6.485683807264607,-4.775335789949565
|
|
6.281217319475459,-5.168275919368881
|
|
5.695707130792158,-5.364699197877854
|
|
4.79524162268136,-5.355795223836907
|
|
3.67014909880173,-5.150733928514583
|
|
2.4245326874144126,-4.774486845272094
|
|
1.16611123183705,-4.264610610695101
|
|
0.0025152939484058834,-3.6675245238841114
|
|
0.9906124812918051,-3.0347076294664816
|
|
1.7240593203516283,-2.419073673981387
|
|
2.1484946912829344,-1.8716120181252336
|
|
2.231431846878934,-1.438262175643132
|
|
1.9638229626184938,-1.1569535138349778
|
|
1.3612612305800837,-1.0547967563195755
|
|
0.464616504465738,-1.1455382493385429
|
|
0.6604490941078751,-1.427536625078389
|
|
1.9258177117749113,-1.8826390916757134
|
|
3.2257598277203243,-2.47637037829314
|
|
4.444594410583775,-3.159769726882459
|
|
5.466917861546506,-3.8730174846820233
|
|
6.189513678168055,-4.5507115425596965
|
|
6.5334870630628075,-5.128339947197702
|
|
6.454826988557102,-5.549218305912518
|
|
5.951591780653189,-5.770985740381576
|
|
5.066279649510562,-5.770729396614627
|
|
3.8826345232772326,-5.547952473564891
|
|
2.51702513030736,-5.124895947070485
|
|
1.105446625294519,-4.544118152759808
|
|
0.21205668600680383,-3.86365537112934
|
|
1.3073164383607434,-3.150450494593656
|
|
2.0780543618149068,-2.472977040318
|
|
2.4581055797513613,-1.8940598211993915
|
|
2.4226716660780596,-1.4647943541294524
|