* 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
10 KiB
CSV
82 lines
10 KiB
CSV
pp,r1,r2,r3,s1,s2,s3
|
|
99.66666666666667,101.33333333333334,102.66666666666667,104.33333333333334,98.33333333333334,96.66666666666667,95.33333333333334
|
|
103.16267454598328,105.06983843086239,106.68447479511136,108.59163867999047,101.54803818173431,99.6408742968552,98.02623793260624
|
|
106.46632396532765,108.3192503675673,109.99207600118424,111.8450024034239,104.79349833171071,102.94057192947105,101.26774629585411
|
|
109.30969002905226,110.78845284682183,112.24363659736883,113.7223994151384,107.85450627850526,106.37574346073569,104.92055971018868
|
|
111.45910647185464,112.76531615911497,114.21024145855769,115.51645114581802,110.01418117241192,108.70797148515159,107.26304618570887
|
|
112.74199773788952,114.1844372235833,115.89392458112607,117.33636406681985,111.03251038034675,109.59007089465297,107.8805835371102
|
|
113.06847380764877,114.83425919272239,116.93004207666282,118.69582746173643,110.97269092370834,109.20690553863473,107.1111226546943
|
|
112.44424589558567,114.24762443099476,116.36315519550081,118.1665337309099,110.32871513107962,108.52533659567052,106.40980583116448
|
|
110.97251301246604,112.50602753835673,114.25742327120199,115.79093779709268,109.22111727962078,107.68760275373009,105.93620702088484
|
|
108.84406406881523,109.92273628553433,111.07167376873036,112.15034598544946,107.69512658561919,106.6164543689001,105.46751688570406
|
|
106.3166460187776,107.83424744177915,109.25729480295962,110.77489622596117,104.89359865759714,103.37599723459559,101.95294987341512
|
|
103.68631980047041,105.65285043360308,107.38315780863867,109.34968844177133,101.95601242543482,99.98948179230216,98.25917441726656
|
|
101.25473880483469,103.3221517833124,105.06950799957335,107.13692097805107,99.50738258857375,97.43996961009603,95.69261339383509
|
|
99.29680919958425,101.10741679791094,102.59249518766164,104.40310278598834,97.81173080983355,96.00112321150685,94.51604482175615
|
|
98.03294152441634,99.71878259193784,101.15332290801157,102.83916397553307,96.59840120834261,94.91256014082111,93.47801982474738
|
|
97.60915371740403,99.28009180927988,100.83548479521072,102.50642288708657,96.05376073147319,94.38282263959734,92.8274296536665
|
|
98.08685392291113,99.62494279875634,101.21153168587108,102.74962056171628,96.50026503579639,94.96217615995118,93.37558727283644
|
|
99.44252381095095,100.95226300129774,102.6626728258728,104.1724120162196,97.73211398637588,96.22237479602909,94.51196497145402
|
|
101.57606521173501,102.89658682264047,104.52081852084083,105.84134013174629,99.95183351353465,98.6313119026292,97.00708020442883
|
|
104.32553529275576,105.99271089258619,107.99227721114875,109.65945281097918,102.3259689741932,100.65879337436277,98.65922705580022
|
|
107.48553552770288,109.26052971524246,111.31521441247419,113.09020860001377,105.43085083047114,103.65585664293157,101.60117194569983
|
|
110.82665131417549,112.40803703907896,114.14793507331443,115.7293207982179,109.08675327994003,107.50536755503656,105.76546952080109
|
|
114.11393840247109,115.26844804616931,116.42148245720485,117.57599210090306,112.96090399143556,111.80639434773734,110.6533599367018
|
|
117.12329605763098,118.63653493872498,119.98867223356798,121.50191111466198,115.77115876278798,114.25791988169398,112.90578258685098
|
|
119.6553939855807,121.66174680819312,123.38681497789469,125.3931678005071,117.93032581587913,115.92397299326672,114.19890482356514
|
|
121.54740034135453,123.70041219687434,125.52082462600127,127.67383648152108,119.7269879122276,117.57397605670779,115.75356362758086
|
|
122.68295119326267,124.59033212543261,126.19523079711914,128.1026117292891,121.07805252157614,119.1706715894062,117.56577291771967
|
|
123.0005912206809,124.42241634012424,125.64593457179761,127.06775969124095,121.77707298900754,120.3552478695642,119.13172963789083
|
|
122.50041000814686,123.9325499636528,125.31911084642282,126.75125080192876,121.11384912537684,119.6817091698709,118.29514828710089
|
|
121.2480003897514,122.86269168159892,124.595691062376,126.21038235422353,119.51500100897431,117.90030971712679,116.1673103363497
|
|
119.37441415670385,121.04597128025816,122.97075770809873,124.64231483165304,117.44962772886328,115.77807060530897,113.8532841774684
|
|
117.0706953893436,118.54037286928043,120.33620150349023,121.80587898342706,115.2748667551338,113.80518927519697,112.00936064098717
|
|
114.57595201454465,116.09394968287982,117.93116717798947,119.44916484632463,112.73873451943501,111.22073685109984,109.3835193559902
|
|
112.1587734147477,113.84049945115845,115.7563578400701,117.43808387648085,110.24291502583606,108.5611889894253,106.64533060051366
|
|
110.09297423674845,111.67059457230425,113.33993602054392,114.91755635609972,108.42363278850878,106.84601245295298,105.17667100471331
|
|
108.62989574587948,110.07186781961968,111.44069323895606,112.88266531269626,107.2610703265431,105.8190982528029,104.45027283346653
|
|
107.97053212992039,109.44434730501251,110.69805691068996,112.17187208578208,106.71682252424294,105.24300734915082,103.98929774347337
|
|
108.24129915337737,110.214731416669,111.87498871537785,113.84842097866948,106.58104185466851,104.60760959137689,102.94735229266803
|
|
109.47714653729103,111.63360533635442,113.46049592935555,115.61695472841893,107.65025594428991,105.49379714522652,103.6669065522254
|
|
111.61489250420503,113.55909976771203,115.23803537461436,117.18224263812135,109.9359568973027,107.9917496337957,106.31281402689338
|
|
114.49824346605784,115.90575106808735,117.17723131617909,118.5847389182086,113.22676321796611,111.8192556159366,110.54777536784486
|
|
117.8942032754348,119.12718823914791,120.3866943919539,121.619679355667,116.63469712262882,115.40171215891571,114.14220600610973
|
|
121.51880689228612,123.15266061646597,124.96909076072058,126.60294448490042,119.70237674803151,118.06852302385167,116.25209287959706
|
|
125.06867496722403,126.84645360913802,128.91816282689916,130.69594146881315,122.9969657494629,121.2191871075489,119.14747788978778
|
|
128.2540554225371,129.87623322022483,131.83173129337746,133.4539090910652,126.29855734938448,124.67637955169674,122.72088147854411
|
|
130.82894581221407,132.1620345867578,133.78622490799935,135.1193136825431,129.20475549097253,127.87166671642879,126.24747639518725
|
|
132.61456770121885,134.14526343658682,135.85357017873258,137.38426591410055,130.90626095907308,129.3755652237051,127.66725848155934
|
|
133.51372898547731,135.03248504785287,136.57187620822657,138.09063227060213,131.97433782510362,130.45558176272806,128.91619060235436
|
|
133.51518476304713,135.20685389520168,136.75713002491054,138.44879915706508,131.96490863333827,130.27323950118372,128.72296337147486
|
|
132.68866514679192,134.35361264248874,135.7497569735482,137.414704469245,131.29252081573247,129.62757332003565,128.2314289889762
|
|
131.17247746428333,133.04737067360705,134.59186294564296,136.46675615496667,129.62798519224742,127.7530919829237,126.2085997108878
|
|
129.1563006939515,131.23334410457753,132.99928247784894,135.07632588847497,127.39036232068008,125.31331891005405,123.54738053678264
|
|
126.86189674888487,128.77483640934082,130.47213629568728,132.38507595614323,125.16459686253845,123.25165720208248,121.55435731573606
|
|
124.52403581279573,125.94074717134566,127.29008015643319,128.70679151498314,123.1747028277082,121.75799146915827,120.40865848407074
|
|
122.37315973892662,123.52089789033414,124.76601564465295,125.91375379606048,121.1280419846078,119.98030383320028,118.73518607888147
|
|
120.62044223256866,122.21772518521438,124.05330379411997,125.65058674676568,118.78486362366307,117.18758067101736,115.35200206211177
|
|
119.44519828628948,121.26484561784791,123.40536157151085,125.22500890306928,117.30468233262654,115.48503500106811,113.34451904740517
|
|
118.98423170775713,120.71310016816417,122.76685038714477,124.49571884755181,116.93048148877654,115.2016130283695,113.1478628093889
|
|
119.32275870519,120.69130465096077,122.3092031066279,123.67774905239868,117.70486024952287,116.33631430375209,114.71841584808496
|
|
120.48694857241185,121.8213800081607,123.26858451423321,124.60301594998207,119.03974406633934,117.70531263059048,116.25810812451797
|
|
122.4387103823207,123.99980545620357,125.50948338012392,127.07057845400679,120.92903245840036,119.36793738451749,117.85825946059714
|
|
125.07389544503057,126.95926874241083,128.64162338108895,130.52699667846917,123.39154080635247,121.50616750897221,119.8238128702941
|
|
128.2253492633656,130.11014948668213,131.69003559073047,133.574835814047,126.64546315931725,124.76066293600071,123.18077683195237
|
|
131.67207090888238,133.39509847866734,134.7859700792666,136.50899764905157,130.2811993082831,128.55817173849815,127.16730013789888
|
|
135.15507483469676,137.07601211039753,138.71887493259612,140.6398122082969,133.51221201249817,131.5912747367974,129.9484119145988
|
|
138.3994880837803,140.21060474681758,141.86581079643918,143.67692745947645,136.74428203415872,134.93316537112145,133.27795932149985
|
|
141.1411629574787,142.5445645982477,143.95239182142438,145.35579346219336,139.73333573430202,138.32993409353304,136.92210687035634
|
|
143.154923777789,144.4296140251956,145.8679825139123,147.1426727613189,141.71655528907232,140.44186504166572,139.00349655294903
|
|
144.28078575968826,145.7928052451957,147.58768148896465,149.09970097447209,142.4859095159193,140.97389003041187,139.1790137866429
|
|
144.44430932083742,146.23865004585184,148.3657728466825,150.1601135716969,142.31718652000677,140.52284579499235,138.3957229941617
|
|
143.66778712039107,145.44589418180132,147.52523197824206,149.30333903965231,141.58844932395033,139.81034226254008,137.73100446609934
|
|
142.07015356602253,143.5339927864094,145.1937596113164,146.6575988317033,140.41038674111553,138.94654752072864,137.28678069582165
|
|
139.85515947975856,140.9648701567905,142.11723539703158,143.22694607406353,138.7027942395175,137.59308356248553,136.44071832224446
|
|
137.28916235919314,138.9017722702047,140.3933203784109,142.00593028942245,135.79761425098695,134.1850043399754,132.6934562317692
|
|
134.6714977766173,136.6814448097882,138.43625382564397,140.44620085881488,132.9166887607615,130.9067417275906,129.15193271173482
|
|
132.3015073284582,134.34885503582368,136.06945519625245,138.11680290361792,130.58090716802943,128.53355946066395,126.81295930023518
|
|
130.44669455820846,132.18620951110796,133.60736658265836,135.34688153555786,129.02553748665807,127.28602253375857,125.86486546220817
|
|
129.31610321851522,131.01675172361394,132.4853771254247,134.1860256305234,127.8474778167045,126.14682931160577,124.67820390979504
|
|
129.04196344134022,130.68445142548555,132.23805843217755,133.8805464163229,127.48835643464821,125.84586845050288,124.29226144381087
|
|
129.6711671025228,131.2214712608763,132.8477977307242,134.39810188907774,128.0448406326749,126.49453647432136,124.86821000447347
|