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
3.0 KiB
CSV
82 lines
3.0 KiB
CSV
macd,signal,histogram
|
|
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,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,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
|
|
nan,nan,nan
|
|
nan,nan,nan
|
|
nan,nan,nan
|
|
nan,nan,nan
|
|
nan,nan,nan
|
|
nan,nan,nan
|
|
nan,nan,nan
|
|
8.275241006281377,4.985484156055459,3.289756850225918
|
|
7.961370400158174,5.846893427555405,2.114476972602769
|
|
7.248978863270665,6.498661698810023,0.7503171644606415
|
|
6.2017022099280155,6.882568451277783,-0.6808662413497677
|
|
4.9130905445203865,6.9643204381314865,-2.0512298936111
|
|
3.498251709309386,6.736614997863451,-3.2383632885540647
|
|
2.0835690436989296,6.219792379288811,-4.136223335589881
|
|
0.7954119369276214,5.460018807697257,-4.664606870769636
|
|
-0.2511523731120917,4.525162593442496,-4.776314966554588
|
|
-0.9626374135358162,3.498731657907252,-4.461369071443068
|
|
-1.275488344663657,2.4724140195937157,-3.7479023642573726
|
|
-1.161759124566629,1.5378875765006828,-2.6996467010673117
|
|
-0.6316088457618463,0.7786307925351426,-1.4102396382969888
|
|
0.2676057462658008,0.2624658149512997,0.005139931314501078
|
|
1.4555604900974117,0.03550012392774704,1.4200603661696647
|
|
2.826138926494181,0.118007888682775,2.7081310378114063
|
|
4.256911365659661,0.5026189363196684,3.754292429339993
|
|
5.620071166802973,1.1549771074213422,4.465094059381631
|
|
6.793851324720265,2.0168091894497957,4.777042135270469
|
|
7.673401553717028,3.0111302892698717,4.662271264447156
|
|
8.180154251358488,4.049120664372662,4.131033586985826
|
|
8.268842708401152,5.038059725946329,3.230782982454823
|
|
7.931544649113917,5.889608492929453,2.0419361561844642
|
|
7.19838990457454,6.527700650093578,0.670689254480962
|
|
6.134869004593753,6.895337325437975,-0.7604683208442218
|
|
4.835983103734421,6.959678629668504,-2.1236955259340835
|
|
3.417757811111784,6.714977145702816,-3.2972193345910323
|
|
2.0068789682846244,6.183091328321079,-4.1762123600364545
|
|
0.7293761803310588,5.411532953500416,-4.682156773169357
|
|
-0.30063503342520903,4.469223032968894,-4.769858066394103
|
|
-0.9911468388914955,3.440335305491933,-4.431482144383429
|
|
-1.2804778730031643,2.4167772474789238,-3.697255120482088
|
|
-1.1427830561834469,1.4899802518391472,-2.632763308022594
|
|
-0.5903622563291293,0.742732333958827,-1.3330945902879563
|
|
0.32743842175673876,0.24178292485019565,0.08565549690654312
|
|
1.5286345769416698,0.031880343275738535,1.4967542336659312
|
|
2.9059269341469474,0.13177456170488552,2.774152372442062
|
|
4.336286069026045,0.5325423271154395,3.8037437419106053
|
|
5.6919422600290375,1.1983842486103558,4.493558011418681
|
|
6.851798777098338,2.069822650387004,4.781976126711334
|
|
7.712249091908205,3.069014535377156,4.643234556531049
|
|
8.196431740473884,4.106705068339082,4.089726672134802
|
|
8.261096128816547,5.0902004444663795,3.1708956843501674
|
|
7.9004659797123225,5.931647950905888,1.9688180288064343
|
|
7.14675531033356,6.555883587949432,0.5908717223841284
|
|
6.067290850036102,6.907146245270449,-0.8398553952343475
|
|
4.758497944141993,6.954058675838888,-2.1955607316968946
|