* 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
13 KiB
CSV
82 lines
13 KiB
CSV
pp,r1,r2,r3,r4,s1,s2,s3,s4
|
|
99.66666666666667,100.275,100.55,100.825,101.65,99.725,99.45,99.175,98.35
|
|
103.16267454598328,103.7780337561168,104.10086544562022,104.42369713512362,105.39219220363384,103.13237037710999,102.80953868760658,102.48670699810317,101.51821192959295
|
|
106.46632396532765,106.96961867057054,107.29281260719073,107.61600654381093,108.58558835367148,106.32323079733017,106.00003686070998,105.67684292408978,104.70726111422923
|
|
109.30969002905226,109.60221419837052,109.8711593004662,110.14010440256189,110.94693970884894,109.06432399417915,108.79537889208346,108.52643378998778,107.71959848370072
|
|
111.45910647185464,111.57257823345337,111.82476560723448,112.0769529810156,112.83351510235893,111.06820348589115,110.81601611211003,110.56382873832892,109.80726661698559
|
|
112.74199773788952,112.76387649333724,113.05280312063391,113.3417297479306,114.20850962982065,112.18602323874386,111.89709661144718,111.60816998415049,110.74139010226044
|
|
113.06847380764877,113.09245340010824,113.44643049143453,113.80040758276081,114.86233885673968,112.38449921745567,112.03052212612938,111.6765450348031,110.61461376082423
|
|
112.44424589558567,112.49132701898097,112.85056037147318,113.2097937239654,114.28749378144207,111.77286031399652,111.4136269615043,111.05439360901208,109.97669355153542
|
|
110.97251301246604,111.05574857922898,111.35686535294643,111.6579821266639,112.56133244781628,110.45351503179404,110.15239825807659,109.85128148435912,108.94793116320673
|
|
108.84406406881523,108.97799635816386,109.18219391398941,109.38639146981497,109.99898413729163,108.56960124651275,108.3654036906872,108.16120613486164,107.54861346738498
|
|
106.3166460187776,106.68075955248203,106.95031902436538,107.21987849624873,108.02855691189879,106.14164060871532,105.87208113683197,105.60252166494863,104.79384324929856
|
|
103.68631980047041,104.26141987598294,104.60029669339836,104.93917351081379,105.95580396306005,103.58366624115209,103.24478942373666,102.90591260632124,101.88928215407498
|
|
101.25473880483469,101.92448274323586,102.27416991942023,102.6238570956046,103.67291862415775,101.2251083908671,100.87542121468273,100.52573403849836,99.47667250994522
|
|
99.29680919958425,99.92444295706736,100.22654750597445,100.52865205488155,101.43496570160283,99.32023385925316,99.01812931034607,98.71602476143897,97.80971111471769
|
|
98.03294152441634,98.57027723602701,98.8563121961899,99.1423471563528,100.0004520368415,97.99820731570122,97.71217235553833,97.42613739537543,96.56803251488674
|
|
97.60915371740403,98.02044583881464,98.31619285428026,98.61193986974587,99.4991809161427,97.42895180788342,97.1332047924178,96.83745777695219,95.95021673055535
|
|
98.08685392291113,98.32478270657958,98.61121150151759,98.89764029645558,99.75692668126956,97.7519251167036,97.4654963217656,97.17906752682761,96.31978114201362
|
|
99.44252381095095,99.53703350309051,99.83221382945834,100.12739415582618,101.01293513492969,98.94667285035483,98.651492523987,98.35631219761916,97.47077121851565
|
|
101.57606521173501,101.5422908444415,101.81222656444285,102.08216228444422,102.89196944444832,101.00241940443875,100.7324836844374,100.46254796443603,99.65274080443193
|
|
104.32553529275576,104.32926258320965,104.66538059239568,105.0014986015817,106.00985262913977,103.65702656483761,103.32090855565158,102.98479054646556,101.97643651890749
|
|
107.48553552770288,107.55689891578143,107.90795281355214,108.25900671132284,109.31216840463496,106.85479112024004,106.50373722246933,106.15268332469863,105.09952163138651
|
|
110.82665131417549,110.9725900160979,111.2770410273523,111.5814920386067,112.49484507236991,110.3636879935891,110.0592369823347,109.7547859710803,108.84143293731708
|
|
114.11393840247109,114.3269385068177,114.53846337850163,114.74998825018555,115.38456286523734,113.90388876344986,113.69236389176592,113.480839020082,112.84626440503021
|
|
117.12329605763098,117.54705712667621,117.80971660947044,118.07237609226466,118.86035454064734,117.02173816108777,116.75907867829353,116.49641919549931,115.70844074711664
|
|
119.6553939855807,120.27872556278697,120.62077248708242,120.96281941137788,121.98896018426422,119.59463171419608,119.25258478990064,118.91053786560518,117.88439709271884
|
|
121.54740034135453,122.24423032717334,122.60846088659929,122.97269144602525,124.0653831243031,121.51576920832144,121.1515386488955,120.78730808946953,119.69461641119169
|
|
122.68295119326267,123.3073924174329,123.62935138111975,123.95131034480659,124.91718723586712,122.66347449005922,122.34151552637236,122.01955656268552,121.05367967162499
|
|
123.0005912206809,123.44138791563655,123.68387772282226,123.92636753000795,124.65383695156505,122.95640830126517,122.71391849407946,122.47142868689377,121.74395926533667
|
|
122.50041000814686,122.8043699910581,123.0627509012334,123.32113181140869,124.09627454193458,122.28760817070751,122.02922726053221,121.77084635035692,120.99570361983103
|
|
121.2480003897514,121.43656394581242,121.743435590803,122.0503072357936,122.97092217076536,120.82282065583124,120.51594901084066,120.20907736585006,119.2884624308783
|
|
119.37441415670385,119.4508496779621,119.78051450350664,120.11017932905116,121.09917380568476,118.79152002687304,118.4618552013285,118.13219037578398,117.14319589915038
|
|
117.0706953893436,117.04388229553408,117.34322035599752,117.64255841646096,118.54057259785128,116.4452061746072,116.14586811414375,115.84653005368031,114.94851587228999
|
|
114.57595201454465,114.56429357775264,114.87185496773508,115.17941635771751,116.10210052766485,113.94917079778776,113.64160940780532,113.33404801782288,112.41136384787555
|
|
112.1587734147477,112.25441963456801,112.58419820688923,112.91397677921046,113.90331249617411,111.59486248992557,111.26508391760436,110.93530534528313,109.94596962831947
|
|
110.09297423674845,110.29889128757917,110.59652945109374,110.89416761460834,111.78708210515208,109.70361496054998,109.40597679703541,109.10833863352082,108.21542414297707
|
|
108.62989574587948,108.96069883714864,109.218355274014,109.47601171087935,110.24898102147542,108.44538596341795,108.18772952655259,107.93007308968724,107.15710377909117
|
|
107.97053212992039,108.44066080423896,108.69068390914283,108.94070701404672,109.69077632875835,107.94061459443121,107.69059148952734,107.44056838462345,106.69049906991182
|
|
108.24129915337737,108.88756232781016,109.2206505376602,109.55373874751025,110.55300337706038,108.22138590811007,107.88829769826002,107.55520948840997,106.55594485885985
|
|
109.47714653729103,110.17185510429249,110.53699546523174,110.90213582617098,111.99755690898873,109.44157438241399,109.07643402147474,108.7112936605355,107.61587257771775
|
|
111.61489250420503,112.21228559059719,112.54440702038471,112.87652845017223,113.8728927395348,111.54804273102215,111.21592130123463,110.88379987144711,109.88743558208454
|
|
114.49824346605784,114.87984470625676,115.12541859251787,115.37099247877899,116.10771413756234,114.38869693373454,114.14312304747342,113.89754916121231,113.16082750242896
|
|
117.8942032754348,118.09616043868955,118.32463879103715,118.55311714338472,119.23855220042748,117.63920373399439,117.4107253816468,117.18224702929922,116.49681197225647
|
|
121.51880689228612,121.65250649348452,121.96878251475769,122.28505853603085,123.23388659985032,121.01995445093822,120.70367842966505,120.38740240839189,119.43857434457242
|
|
125.06867496722403,125.12761411184715,125.48048383231736,125.83335355278759,126.89196271419824,124.4218746709067,124.0690049504365,123.71613522996627,122.65752606855561
|
|
128.2540554225371,128.24868876856593,128.57664239005965,128.90459601155334,129.88845687603444,127.59278152557853,127.26482790408484,126.93687428259113,125.95301341811003
|
|
130.82894581221407,130.80892818262987,131.08001209974353,131.35109601685716,132.16434776819813,130.26676034840256,129.9956764312889,129.72459251417527,128.9113407628343
|
|
132.61456770121885,132.73386525487982,133.03077381531858,133.32768237575732,134.21840805707362,132.14004813400228,131.84313957356352,131.54623101312478,130.65550533180848
|
|
133.51372898547731,133.7734240495645,134.05375421164987,134.3340843737352,135.17507485999127,133.21276372539384,132.93243356330848,132.65210340122314,131.81111291496708
|
|
133.51518476304713,133.9537560811636,134.2509343968344,134.54811271250523,135.43964765951765,133.35939944982198,133.06222113415117,132.76504281848034,131.87350787146792
|
|
132.68866514679192,133.23806839554868,133.518668479668,133.79926856378734,134.6410688161453,132.67686822731002,132.3962681431907,132.11566805907137,131.2738678067134
|
|
131.17247746428333,131.8163220706958,132.12976573982044,132.44320940894505,133.38354041631897,131.18943473244653,130.8759910633219,130.56254739419728,129.62221638682337
|
|
129.1563006939515,129.81967906149674,130.17195239168734,130.52422572187794,131.58104571244974,129.11513240111555,128.76285907092495,128.41058574073435,127.35376575016255
|
|
126.86189674888487,127.40847514811799,127.73941377324154,128.0703523983651,129.06316827373576,126.74659789787088,126.41565927274733,126.08472064762378,125.09190477225312
|
|
124.52403581279573,124.84496825109156,125.09852231592498,125.35207638075842,126.11273857525872,124.33786012142468,124.08430605659126,123.83075199175782,123.07008979725752
|
|
122.37315973892662,122.49512526070693,122.7144703853985,122.93381551009008,123.59185088416483,122.05643501132376,121.83708988663219,121.6177447619406,120.95970938786586
|
|
120.62044223256866,120.6968255527843,121.01150452925984,121.32618350573539,122.27022043516199,120.06746759983324,119.7527886233577,119.43810964688215,118.49407271745555
|
|
119.44519828628948,119.48734463199692,119.85035959980887,120.21337456762083,121.30241947105671,118.76131469637299,118.39829972856104,118.03528476074908,116.9462398573132
|
|
118.98423170775713,119.00608999479411,119.35283004040464,119.69957008601519,120.73979022284678,118.31260990357305,117.96586985796252,117.61912981235197,116.57890967552038
|
|
119.32275870519,119.34716359875881,119.62092100222395,119.89467840568909,120.71595061608453,118.79964879182853,118.52589138836339,118.25213398489825,117.43086177450282
|
|
120.48694857241185,120.6291587967551,120.88414209142206,121.13912538608902,121.9040752700899,120.1191922074212,119.86420891275424,119.60922561808728,118.8442757340864
|
|
122.4387103823207,122.77161505708187,123.0531025818805,123.33459010667913,124.179052681075,122.2086400074846,121.92715248268598,121.64566495788735,120.80120238349147
|
|
125.07389544503057,125.6039558312047,125.93099755867671,126.25803928614873,127.23916446856478,124.94987237626066,124.62283064878865,124.29578892131663,123.31466373890058
|
|
128.2253492633656,128.84785962930889,129.16545587598398,129.4830521226591,130.43584086268444,128.21266713595864,127.89507088928353,127.57747464260842,126.62468590258308
|
|
131.67207090888238,132.2896676353533,132.57510839263853,132.86054914992377,133.71687142177942,131.71878612078288,131.43334536349766,131.14790460621242,130.29158233435678
|
|
135.15507483469676,135.7598309638397,136.08651263948047,136.41319431512125,137.3932393420436,135.10646761255816,134.7797859369174,134.45310426127662,133.47305923435428
|
|
138.3994880837803,138.8731449458564,139.1908911945168,139.5086374431772,140.46187618915837,138.2376524485356,137.91990619987521,137.60215995121482,136.64892120523365
|
|
141.1411629574787,141.39443335426606,141.6521293334611,141.9098253126561,142.68291325024117,140.87904139587604,140.621345416681,140.363649437486,139.59056149990093
|
|
143.154923777789,143.23994258729024,143.48863963810155,143.73733668891285,144.48342784134675,142.74254848566764,142.49385143485634,142.24515438404504,141.49906323161113
|
|
144.28078575968826,144.3010611099437,144.60419321846072,144.9073253269777,145.81672165252874,143.69479689290972,143.3916647843927,143.0885326758757,142.17913635032468
|
|
144.44430932083742,144.4709947348903,144.83046222475943,145.18992971462856,146.26833218423596,143.75205975515203,143.3925922652829,143.03312477541377,141.95472230580637
|
|
143.66778712039107,143.72015549733024,144.0737546092999,144.42735372126958,145.4881510571786,143.01295727339087,142.6593581614212,142.30575904945152,141.2449617135425
|
|
142.07015356602253,142.16055651565432,142.44688706980628,142.7332176239582,143.59220928641403,141.58789540735046,141.3015648531985,141.01523429904657,140.15624263659075
|
|
139.85515947975856,140.01986187563278,140.22721883471613,140.4345757937995,141.05664667104958,139.60514795746604,139.3977909983827,139.19043403929933,138.56836316204925
|
|
137.28916235919314,137.69477198042676,137.97931979885507,138.26386761728335,139.11751107256825,137.1256763435702,136.8411285251419,136.55658070671362,135.70293725142872
|
|
134.6714977766173,135.27173843175984,135.6168410695873,135.96194370741475,136.9972516208971,134.58153315610497,134.2364305182775,133.89132788045006,132.85601996696772
|
|
132.3015073284582,132.97365009660936,133.31904531782385,133.6644405390383,134.70062620268175,132.28285965418044,131.93746443296595,131.5920692117515,130.55588354810806
|
|
130.44669455820846,131.05478070846547,131.34450897737338,131.6342372462813,132.503422053005,130.47532417064966,130.18559590174175,129.89586763283384,129.02668282611012
|
|
129.31610321851522,129.83864309660322,130.12915987140326,130.41967664620327,131.2912269706034,129.25760954700314,128.9670927722031,128.6765759974031,127.80502567300299
|
|
129.04196344134022,129.4238197929536,129.7167951671137,130.00977054127378,130.88869666375405,128.83786904463344,128.54489367047333,128.25191829631325,127.37299217383298
|
|
129.6711671025228,129.8863359319469,130.17752707286533,130.4687182137838,131.3422916365392,129.30395365010995,129.0127625091915,128.72157136827303,127.84799794551763
|