diff --git a/core/src/indicators/mod.rs b/core/src/indicators/mod.rs index dd0ef37..7bcae9c 100644 --- a/core/src/indicators/mod.rs +++ b/core/src/indicators/mod.rs @@ -37,6 +37,7 @@ mod sonar; mod stochf; mod stochrsi; mod stochs; +mod trix; mod ultosc; mod vr; mod willr; @@ -81,6 +82,7 @@ pub use sonar::*; pub use stochf::*; pub use stochrsi::*; pub use stochs::*; +pub use trix::*; pub use ultosc::*; pub use vr::*; pub use willr::*; diff --git a/core/src/indicators/trix.rs b/core/src/indicators/trix.rs new file mode 100644 index 0000000..91f0ef8 --- /dev/null +++ b/core/src/indicators/trix.rs @@ -0,0 +1,164 @@ +use crate::indicators::ema::ema; + +pub fn trix( + data: &[Option], + period: usize, + signal_period: usize, +) -> (Vec>, Vec>) { + let line = trix_line(data, period); + let signal = ema(&line, signal_period); + + (line, signal) +} + +pub fn trix_line(data: &[Option], period: usize) -> Vec> { + let ema_values = ema(data, period); + let double_ema = ema(&ema_values, period); + let triple_ema = ema(&double_ema, period); + + triple_ema + .iter() + .enumerate() + .map(|(idx, ¤t)| { + if idx == 0 { + return None; + } + + match (current, triple_ema[idx - 1]) { + (Some(current), Some(previous)) if previous != 0.0 => { + Some((current - previous) * 100.0 / previous) + } + _ => None, + } + }) + .collect() +} + +pub fn trix_signal(data: &[Option], period: usize, signal_period: usize) -> Vec> { + let line = trix_line(data, period); + ema(&line, signal_period) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::indicators::ema::ema; + use crate::testutils; + use crate::utils::round_vec; + + #[test] + fn test_trix() { + // Given + let test_cases = vec!["005930", "TSLA"]; + + // When + for symbol in test_cases { + let input = testutils::load_data(&format!("../data/{}.json", symbol), "c") + .into_iter() + .map(Some) + .collect::>(); + let (line, signal) = trix(&input, 12, 9); + + let expected_line = testutils::load_expected::>(&format!( + "../data/expected/trix_line_{}.json", + symbol + )); + let expected_signal = testutils::load_expected::>(&format!( + "../data/expected/trix_signal_{}.json", + symbol + )); + + // Then + assert_eq!( + round_vec(line, 8), + round_vec(expected_line, 8), + "TRIX line test failed for symbol {}.", + symbol + ); + assert_eq!( + round_vec(signal, 8), + round_vec(expected_signal, 8), + "TRIX signal test failed for symbol {}.", + symbol + ); + } + } + + #[test] + fn test_trix_matches_composed_ema_across_gaps() { + // Given + let input = vec![ + Some(1.0), + Some(2.0), + Some(3.0), + Some(4.0), + None, + Some(5.0), + Some(6.0), + Some(7.0), + Some(8.0), + Some(9.0), + ]; + + // When + let line = trix_line(&input, 2); + let single = ema(&input, 2); + let double = ema(&single, 2); + let triple = ema(&double, 2); + let expected = triple + .iter() + .enumerate() + .map(|(idx, ¤t)| { + if idx == 0 { + return None; + } + + match (current, triple[idx - 1]) { + (Some(current), Some(previous)) if previous != 0.0 => { + Some((current - previous) * 100.0 / previous) + } + _ => None, + } + }) + .collect::>(); + + // Then + assert_eq!(round_vec(line, 8), round_vec(expected, 8)); + } + + #[test] + fn test_trix_signal_follows_base_ema_contract_across_gaps() { + // Given + let input = vec![ + Some(1.0), + Some(2.0), + Some(3.0), + Some(4.0), + None, + Some(5.0), + Some(6.0), + Some(7.0), + Some(8.0), + Some(9.0), + ]; + + // When + let (line, signal) = trix(&input, 2, 2); + + // Then + assert_eq!(signal, ema(&line, 2)); + assert_eq!(signal, trix_signal(&input, 2, 2)); + } + + #[test] + fn test_trix_returns_none_when_previous_triple_ema_is_zero() { + // Given + let input = vec![Some(0.0), Some(0.0), Some(1.0), Some(2.0)]; + + // When + let line = trix_line(&input, 1); + + // Then + assert_eq!(line, vec![None, None, None, Some(100.0)]); + } +} diff --git a/data/expected/trix_line_005930.json b/data/expected/trix_line_005930.json new file mode 100644 index 0000000..3b96b3a --- /dev/null +++ b/data/expected/trix_line_005930.json @@ -0,0 +1,602 @@ +[ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 0.021647901698052547, + 0.011749139854285431, + -0.003217999417738, + -0.02083734312852185, + -0.04650566235302964, + -0.08454356616548919, + -0.12850505286121203, + -0.1794504085234577, + -0.22980028074676334, + -0.281962738687837, + -0.33716984682518275, + -0.3908972394021176, + -0.44420011500026224, + -0.4937341258037503, + -0.5308155643391202, + -0.5540393028773876, + -0.5621127863186867, + -0.5664386139623312, + -0.5720384674817296, + -0.5808155163032563, + -0.5839265730557016, + -0.5808350940806929, + -0.5768442371833084, + -0.5600187532057977, + -0.5314019809833459, + -0.49480008816738746, + -0.457961612247722, + -0.4222363498766171, + -0.3909325065555421, + -0.3477554714552259, + -0.28714896346927093, + -0.2246803694947763, + -0.16662866925169628, + -0.10638123992725149, + -0.0513090024953102, + -0.0039556274169167144, + 0.039355168701797366, + 0.07787958438120579, + 0.11132639078820618, + 0.13604756446215688, + 0.15276871172236667, + 0.16544396659767788, + 0.17179567022919154, + 0.17449796933563874, + 0.17417351489216445, + 0.1671540176073529, + 0.15109860459320615, + 0.12464766640414424, + 0.09800987032193165, + 0.07441817758637574, + 0.058721475956944484, + 0.044970094751049905, + 0.039728291729797804, + 0.03621279041537039, + 0.028422135874387664, + 0.01302889614806506, + -0.006633817583755595, + -0.023403629762164938, + -0.03547158016033302, + -0.052218086280291835, + -0.06935633609774755, + -0.07998713953154846, + -0.0935451295992907, + -0.1131269627851348, + -0.1371625830729937, + -0.16192955924224497, + -0.19170148395805484, + -0.22444844213369755, + -0.24101959380197815, + -0.25377661602609175, + -0.26742672986512916, + -0.27863522258519485, + -0.28546948747155104, + -0.29191586704855876, + -0.2998114642877722, + -0.31265842019032564, + -0.3260619344734962, + -0.3416183102315425, + -0.35450728503790524, + -0.37193697775530565, + -0.3917339519501118, + -0.4073052534991844, + -0.40461322685143836, + -0.3843535067837195, + -0.351262224748947, + -0.31172282270481744, + -0.27472557042546736, + -0.2380232815805309, + -0.20683226673150007, + -0.17307656968213744, + -0.13729904448088862, + -0.10270134079337445, + -0.07520975021600673, + -0.05547358020824471, + -0.03889045468784306, + -0.014678517623576998, + 0.013975724643339632, + 0.05454136537672283, + 0.10014276768515243, + 0.13108009241092514, + 0.16433771818060885, + 0.20009341613765638, + 0.23163438479726148, + 0.25507675593602414, + 0.2724191197165825, + 0.2890645220372568, + 0.31335760815959174, + 0.340679258454703, + 0.3564427048791273, + 0.37876064563338724, + 0.3956759484931324, + 0.40983748845732404, + 0.42168423359028673, + 0.4215616109694631, + 0.41516592209442943, + 0.40136617665733265, + 0.37757994970993175, + 0.3504398307881254, + 0.3242167652100651, + 0.29659497887168723, + 0.2633433686743779, + 0.2309533926029174, + 0.21004263039388563, + 0.19902155885484552, + 0.18061317279967962, + 0.15768549233575135, + 0.1263120164572151, + 0.08960430022543076, + 0.053506793195085084, + 0.02709228184921906, + 0.002703281837644008, + -0.0177226376039554, + -0.029585424891490655, + -0.042612713169154576, + -0.05416745947226915, + -0.06390509746208009, + -0.07711447759198373, + -0.09494083471658471, + -0.1074843214407761, + -0.12168451283952905, + -0.13678242083694522, + -0.14979111726159006, + -0.16928059563992734, + -0.19880993963763346, + -0.2307340922173034, + -0.26197533079744784, + -0.2753168852035683, + -0.2734822365615476, + -0.2565950718517505, + -0.22015238828403982, + -0.1750814780536127, + -0.1263217874083728, + -0.0779420845469337, + -0.030734130001798955, + 0.014706364818690759, + 0.055467437456007955, + 0.08682668144517354, + 0.11695189293683267, + 0.14578534380738584, + 0.18128713473093663, + 0.22086433274516826, + 0.2637340877800414, + 0.29673154476886543, + 0.3063877053212097, + 0.30512518030790337, + 0.30658064195071505, + 0.31021044127935626, + 0.3004160754161273, + 0.28389947702215995, + 0.27058110431647314, + 0.25843116571470576, + 0.24560787477138682, + 0.23289214301954642, + 0.22198165164415076, + 0.20609947389152605, + 0.1963803442285907, + 0.18376047927047942, + 0.17012247384135204, + 0.1525907575567448, + 0.12740512903760257, + 0.1040512890343579, + 0.0788130585620725, + 0.049075988401749086, + 0.018924819718493652, + -0.008460548147599303, + -0.03416742651725933, + -0.05125293136509929, + -0.06654012459001671, + -0.08188279193034453, + -0.09717784406985112, + -0.11466645259771054, + -0.12904660294744566, + -0.1460733110680903, + -0.1584149954840796, + -0.1659844172147231, + -0.16129857797651376, + -0.155382207971825, + -0.14793858673741506, + -0.13474387054716883, + -0.11124244670773967, + -0.07837059210611758, + -0.04696978682543954, + -0.013518272537134004, + 0.017889366254519142, + 0.048955818030057954, + 0.08240070583007067, + 0.10943872495752854, + 0.13341582221923595, + 0.15526577447908685, + 0.16431861870910494, + 0.18046555304492667, + 0.20328671676954224, + 0.22903082809693953, + 0.25454638732984686, + 0.27784611274847926, + 0.29133932248320354, + 0.29811042261893694, + 0.3010119213588631, + 0.2996707649277743, + 0.2935750418253521, + 0.2862275707617434, + 0.274647481607797, + 0.25106526075684277, + 0.2237573848054145, + 0.19801828752225503, + 0.17929136672036874, + 0.16646616775577036, + 0.15569785502270947, + 0.1445839457665462, + 0.13797954765864512, + 0.1306103611522284, + 0.11881597908902186, + 0.10241872733590913, + 0.08336077971840589, + 0.06586907545282412, + 0.05527060509022034, + 0.04706146353610599, + 0.04740099993631621, + 0.0650850813122847, + 0.09243655860760547, + 0.12294831140739933, + 0.15347671838088606, + 0.1831161061751735, + 0.21796055613131604, + 0.26395336077486353, + 0.30755197954220365, + 0.3428251409382978, + 0.37659129273290115, + 0.4029509126801345, + 0.4176883520215146, + 0.4223178395414519, + 0.4249433337416738, + 0.41912414970210693, + 0.4124276202225069, + 0.4035192187220241, + 0.3901869973204064, + 0.3752009715646419, + 0.35559978275475024, + 0.3342432350426031, + 0.3072348231445779, + 0.2816691998455916, + 0.25915616845453887, + 0.24315330187609277, + 0.23222915532537142, + 0.22471302994339443, + 0.21733129446037486, + 0.20866000156821238, + 0.2031319456646112, + 0.19909046922004053, + 0.19031129174526332, + 0.1764897312864526, + 0.15115905935750792, + 0.11793606909804184, + 0.09189299329148352, + 0.07355539429724532, + 0.06077349255187045, + 0.05959786602417624, + 0.06478208541142441, + 0.06661169879316349, + 0.0645230572631966, + 0.05640072799907874, + 0.041385309817951535, + 0.02352006590801472, + 0.002949741711080247, + -0.018979940580580716, + -0.030616779744782184, + -0.040762624307923614, + -0.05328657643938596, + -0.059653555027037966, + -0.06777952555547352, + -0.0818255581874622, + -0.10084378044418964, + -0.12031371914786192, + -0.14301886493497332, + -0.15912096467710948, + -0.17425526692362706, + -0.1898170463225941, + -0.2050404993445575, + -0.21994746259950496, + -0.23452560054305943, + -0.24926206604318182, + -0.26076679535407254, + -0.2686836354384473, + -0.2703752346747271, + -0.26145082653025614, + -0.2514352857469734, + -0.2420674864580476, + -0.2328253781001923, + -0.2218271360025467, + -0.21071499644050445, + -0.17770372223836092, + -0.13168113937355516, + -0.08281630869539004, + -0.0387641490219252, + 0.0018159116489845917, + 0.037137129594235686, + 0.06951894013477326, + 0.09616610428000591, + 0.11938710835008434, + 0.14283475582258445, + 0.1659438630626726, + 0.17716874378849423, + 0.17772232348600112, + 0.17009697927480633, + 0.1537218429442031, + 0.1320462126459817, + 0.11124558822910041, + 0.08770024117846627, + 0.06263906538827156, + 0.033316271465908605, + -0.001031453204707986, + -0.0399133984682138, + -0.07685954564073802, + -0.10060229238490608, + -0.11080568061080562, + -0.11647537852247729, + -0.12230215535480755, + -0.11635306984023905, + -0.09738644145899666, + -0.07662628526970218, + -0.05951438587090967, + -0.04760628717819565, + -0.038912870624074364, + -0.03522946172060575, + -0.04157842317801932, + -0.05028281360666939, + -0.059685682113694696, + -0.07082702759796647, + -0.07304387751038084, + -0.06359299296835971, + -0.04795304500411678, + -0.022459134168528985, + 0.007469872941911213, + 0.03281953051763293, + 0.05576864186426409, + 0.07664006956914066, + 0.09408930100591043, + 0.11011276128835784, + 0.13124458678027007, + 0.1567647523168843, + 0.18108348468603147, + 0.203452322734138, + 0.22293056461055835, + 0.2385394930155248, + 0.24779016227573056, + 0.2480126434068273, + 0.23977811819060924, + 0.23338840158298205, + 0.2276440743952839, + 0.2223230650770981, + 0.21263398477018775, + 0.20325022829875808, + 0.18669746541863383, + 0.1687852955300324, + 0.14956539675292868, + 0.13587938005972308, + 0.12795203831506533, + 0.12608535227550174, + 0.123954479963394, + 0.12286990698911766, + 0.12304726246077, + 0.12148452967066618, + 0.12105999821107058, + 0.1279947617960644, + 0.13945133699524792, + 0.15691517726764165, + 0.17980029345021992, + 0.21082107787347967, + 0.24639939133255764, + 0.28692540005609307, + 0.31360287595092, + 0.3269934071856769, + 0.3302770181831761, + 0.32553165750256, + 0.306168580896272, + 0.27276711957416044, + 0.23016727275667423, + 0.18348279197065723, + 0.14059680142173214, + 0.09589150498669263, + 0.04479673536657214, + -0.003665280894506436, + -0.03285008920512945, + -0.04645355335644162, + -0.049094325874697475, + -0.05059386919356101, + -0.05063497939263146, + -0.053024728548287256, + -0.05161042373721704, + -0.04827878063389825, + -0.05164738658903842, + -0.05427853644743347, + -0.04826391470119357, + -0.041616711367982485, + -0.03436631375285864, + -0.024143577189367438, + -0.017094817573433625, + -0.006961415747600255, + -0.0014662833456562684, + -0.004033469046615222, + -0.012288759346578361, + -0.018514960666162143, + -0.025503024470287666, + -0.033890382602600716, + -0.04198188425596917, + -0.05021338269027719, + -0.05832058777227651, + -0.0651392582209862, + -0.06903508456041892, + -0.06967684622574259, + -0.06065838374965443, + -0.05204035979441871, + -0.047970457155510716, + -0.050201510432809994, + -0.05050267099398852, + -0.053877849124448665, + -0.054262229636142335, + -0.04865364757317239, + -0.03859615649307755, + -0.03623830349535098, + -0.03609484330218556, + -0.03717333722881522, + -0.01847024731678629, + 0.023005083460444158, + 0.07354477824683868, + 0.12254016783564614, + 0.17533824495938105, + 0.22578156369847815, + 0.2755157765618988, + 0.32829337621854926, + 0.3760991656613419, + 0.4308511432855074, + 0.479928365765153, + 0.526139272448766, + 0.56149398649754, + 0.5856971769610892, + 0.5949760969044339, + 0.594750584209389, + 0.5846540500852254, + 0.560072459032815, + 0.5161625723171618, + 0.4566751121393739, + 0.3933871947552852, + 0.3213720844974704, + 0.24081570898955673, + 0.15674030576287126, + 0.08945714718265392, + 0.02577116020526716, + -0.030006917876836722, + -0.07740190535957484, + -0.11284720620971704, + -0.1361534151288039, + -0.15196855615705937, + -0.14480314382745202, + -0.12356513171278018, + -0.10197192573461913, + -0.08345059619393166, + -0.07133906958960104, + -0.06409231050934099, + -0.06048801139896788, + -0.0627834805488361, + -0.06139112679210167, + -0.059927000287600646, + -0.06151951226066575, + -0.06188108921248413, + -0.07231603165881467, + -0.08195390219971764, + -0.08836087634853593, + -0.10317878622766677, + -0.12968094602701818, + -0.16118351878452974, + -0.1830072838219989, + -0.19880045354335568, + -0.19945946037605067, + -0.1906014576054193, + -0.18329075594187325, + -0.17907333779198753, + -0.17027075541789966, + -0.14874141394709223, + -0.11555863657863544, + -0.08402360767480091, + -0.04716757966297109, + -0.002648954412065304, + 0.0455549170089925, + 0.08514832437998847, + 0.11946667314091779, + 0.1488519365603078, + 0.1751284849036893, + 0.19855371991838658, + 0.21750079688100302, + 0.23308354682538257, + 0.24473095179045026, + 0.2523158591297208, + 0.26899444744240936, + 0.3005610936209688, + 0.3391664538927395, + 0.3799082517209509, + 0.41768118338728316, + 0.4485566971742858, + 0.45691300574025506, + 0.4598984098293237, + 0.4621799461173529, + 0.4575936851774141, + 0.4483326933164716, + 0.4240684888859248, + 0.3846749251064407, + 0.34138232280343317, + 0.28899163812415773, + 0.2265114259310217, + 0.16338416893402255, + 0.10463191643953207, + 0.051006938653640393, + 0.0163080260807155, + -0.008295981550189808, + -0.04043331169782218, + -0.11066509334725538, + -0.19449118020355893, + -0.2712167771968612, + -0.34376369767974113, + -0.4025627600886167, + -0.44456328706098835, + -0.4696006799944522, + -0.4762334622810219, + -0.45609606776033484, + -0.4276276748988615, + -0.3915675478582705, + -0.35438908201559627, + -0.31756633411168034, + -0.28485418045629374, + -0.26300375267597526, + -0.24961353267626343, + -0.23859651264558582, + -0.23993603489782853, + -0.24652657556554544, + -0.25460101032188837, + -0.27102345273072986, + -0.3022524233511354, + -0.344289294838754, + -0.38972738057970413, + -0.4398207865483339, + -0.494495713312784, + -0.553338007884418, + -0.6028570180637526, + -0.6509245249932819, + -0.6995341324911917, + -0.7439774112543046 +] diff --git a/data/expected/trix_line_TSLA.json b/data/expected/trix_line_TSLA.json new file mode 100644 index 0000000..b3b06d2 --- /dev/null +++ b/data/expected/trix_line_TSLA.json @@ -0,0 +1,602 @@ +[ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.4882436790501966, + -0.4560548153372223, + -0.40113689416772497, + -0.335345928513993, + -0.28438243628196186, + -0.2510502302529166, + -0.23584996935912292, + -0.2275845674220363, + -0.21435834914581842, + -0.20021569078141915, + -0.16592633625625247, + -0.11128086088685384, + -0.07268171290811012, + -0.048016063581943866, + -0.02706759968605629, + -0.0076414353089505815, + 0.012363146734571662, + 0.032133509262737635, + 0.058041978205240416, + 0.08863351592613221, + 0.1574222235470072, + 0.24492023282178788, + 0.3308542791216323, + 0.3941758774443928, + 0.46237629530495805, + 0.5363268398869669, + 0.6309711139645944, + 0.7287554644386743, + 0.8233392988215029, + 0.9157383117291035, + 0.9979279332095927, + 1.0339911992346718, + 1.0393071685225062, + 1.0117369478253797, + 0.9781101510547017, + 0.9290315547761605, + 0.8887276191849801, + 0.8654431680030165, + 0.8465253385558795, + 0.8244915102364646, + 0.7971787224744141, + 0.7573303141423577, + 0.7009771330087813, + 0.6444651676433124, + 0.5898736061457547, + 0.5366497552390733, + 0.4754955622869449, + 0.4077266659568282, + 0.3300238936485559, + 0.24731297652742953, + 0.16851403296383735, + 0.08738459608763391, + 0.015044025675933222, + -0.03581629072579348, + -0.06336100523740862, + -0.061639022289982075, + -0.03601718333725612, + -0.01322449993032001, + 0.020022247178256316, + 0.058745036623229836, + 0.0972342154157956, + 0.14041016338703008, + 0.18239786185733106, + 0.21014218751326127, + 0.21142030422313737, + 0.17938776018505262, + 0.12969282134200905, + 0.08075745683531785, + 0.0410068802870569, + -0.015125428040702759, + -0.0815279951058748, + -0.17810561788666865, + -0.2774434487294359, + -0.38276664857597403, + -0.487636575063591, + -0.6038143499327943, + -0.7184527342608309, + -0.8317072409561211, + -0.9345868910868101, + -1.016528014818969, + -1.0999601613324752, + -1.1575719332814391, + -1.1913458128400147, + -1.2016796408931762, + -1.2140325780272843, + -1.2132913625323642, + -1.2053080966105845, + -1.1735903315045046, + -1.1217736448549487, + -1.056014453613622, + -0.9767213558271849, + -0.8916498255238026, + -0.8043829290824771, + -0.7379566770213498, + -0.6852514750500636, + -0.6540968864806025, + -0.6523006704058795, + -0.6758221112687758, + -0.7330667167338375, + -0.7851527500697872, + -0.8201326183194694, + -0.8478323534088478, + -0.8611836606784042, + -0.8744159716552773, + -0.8902865704430359, + -0.9091024587985188, + -0.9466907719353258, + -0.9877797392398219, + -1.0027727106984525, + -0.9980328423898421, + -0.9780772348455973, + -0.9503028133745071, + -0.8914033749616653, + -0.8132177492589981, + -0.7246663456064004, + -0.6552536244792083, + -0.6044635011112341, + -0.5771618406240372, + -0.565181882846522, + -0.5509848912493273, + -0.5556848914453637, + -0.5828222440135242, + -0.6283035621785958, + -0.6786801264801987, + -0.7417663796274607, + -0.807464178036069, + -0.892367189768975, + -0.9825476850271859, + -1.0925623071406052, + -1.210593108235361, + -1.352999489128052, + -1.4925467182726584, + -1.6003007258893407, + -1.6752469946137896, + -1.7540652450803802, + -1.814683679519763, + -1.8633711015186614, + -1.891129984581356, + -1.8831336700532122, + -1.849470928024583, + -1.785124803913396, + -1.698302324967211, + -1.5993971724147875, + -1.469829947135094, + -1.3300908281265404, + -1.191633359337486, + -1.041259757923165, + -0.8604979853643651, + -0.6678064081397794, + -0.47565140719495164, + -0.25077192765004425, + 0.029192869385291448, + 0.29303537443485356, + 0.5454366285258269, + 0.7923830306271294, + 1.0332412767535886, + 1.251821170017557, + 1.4473791088629124, + 1.6123817088136803, + 1.7503521649497917, + 1.8683015934350689, + 1.9298507030682164, + 1.939655509093391, + 1.9449989285466294, + 1.949418070089067, + 1.915292970580779, + 1.8672450238685516, + 1.7819841488436516, + 1.6819215653781392, + 1.5759526434599274, + 1.4566681794050986, + 1.3546454226743962, + 1.2602249954016131, + 1.1657376650567413, + 1.049299330657721, + 0.937783790838874, + 0.8254201171531361, + 0.7051063618252178, + 0.5745867416453794, + 0.4269851250314546, + 0.27848518930419885, + 0.13988955906608871, + 0.03234800496513402, + -0.05529915283041523, + -0.11850119370395266, + -0.1701646898763239, + -0.20504444226084806, + -0.1993734949344885, + -0.18120839737742792, + -0.15350123058987047, + -0.1247197999873296, + -0.09391389243071557, + -0.06851976997895774, + -0.03884746345880262, + -0.005547824115243291, + 0.051378923780057095, + 0.09418165087893354, + 0.12119150270758382, + 0.1227618559081874, + 0.10750948220304547, + 0.08168344872675513, + 0.0552690548620873, + 0.017956217549932253, + -0.013422223811197714, + -0.04082951484249183, + -0.060139823114407645, + -0.07827293973943099, + -0.1016332297019584, + -0.16003063848005392, + -0.23156408367618983, + -0.31080096419969716, + -0.3926590274608334, + -0.48356177624542684, + -0.560505611736028, + -0.6143355142178976, + -0.6538001441713466, + -0.6830058282673344, + -0.7013847180939929, + -0.7084048794624764, + -0.687663730829926, + -0.6450086002287532, + -0.5945946264720476, + -0.5415977052004596, + -0.48102232413213514, + -0.4262464328622891, + -0.38030164538796396, + -0.34103742648973073, + -0.2917078543216144, + -0.23150864690613648, + -0.16079422844548105, + -0.0687582399389478, + 0.023862642206651807, + 0.10453445720507053, + 0.17552007071005957, + 0.2537974931382321, + 0.3473614736320433, + 0.44797304331106197, + 0.5516583347054114, + 0.6611911165776698, + 0.7711469418703836, + 0.8780926379587553, + 0.9781553776510382, + 1.0833135943432632, + 1.1974994769357994, + 1.3140753485736532, + 1.434210675213817, + 1.5365785813776744, + 1.6117807754438056, + 1.6662112648380654, + 1.722301952696233, + 1.7393923622624485, + 1.7339118550875623, + 1.6937486709921776, + 1.602610350309442, + 1.4978057676629795, + 1.3967053447189788, + 1.3010575033799205, + 1.2167523016142858, + 1.1689957045463453, + 1.1447916646455196, + 1.1218987720809652, + 1.0932386866684682, + 1.0511973191142396, + 1.0003367965211398, + 0.9470547514868689, + 0.9009951354358886, + 0.8638188590243907, + 0.844014014181398, + 0.8366077071750109, + 0.8303992613927135, + 0.7816176083991506, + 0.7037804163368101, + 0.624457817027736, + 0.5417925888292069, + 0.4593219982875707, + 0.3688193714356363, + 0.2930161243430464, + 0.23118619661032103, + 0.17207470540976944, + 0.10848173996523931, + 0.0526861915403239, + -0.002629308257271518, + -0.057370642728213586, + -0.11044990964810336, + -0.16927562235268903, + -0.22288501475863023, + -0.2731160834097921, + -0.3211270349495949, + -0.3732445572682962, + -0.4337037275652161, + -0.5031385036350609, + -0.5776938810382908, + -0.6270567519969686, + -0.6530964167481113, + -0.6559954623339982, + -0.6518969245476504, + -0.629208927003932, + -0.5937927707017895, + -0.5238451585913471, + -0.43511210387168053, + -0.33718219681255857, + -0.2578491481652421, + -0.17690430840698512, + -0.10614768791170259, + -0.04650073847353257, + -0.0018295419388082263, + 0.06839005963398165, + 0.13999929143467854, + 0.21292021066053068, + 0.28795835338323794, + 0.3557860736091403, + 0.3997596869001588, + 0.4267207479658296, + 0.4343086382467949, + 0.4181309056195131, + 0.37152930139083107, + 0.31170884429837764, + 0.24271256910940175, + 0.16655359297951244, + 0.09870573017444878, + 0.045277798016568366, + 0.005753543316327041, + -0.030011602023235627, + -0.040488146276725846, + -0.03623970406612411, + -0.02260834900747576, + -0.005230171925514105, + 0.018955558720705857, + 0.044684220511196825, + 0.06389168868994345, + 0.06650200493597953, + 0.06238371453790223, + 0.055863149341408666, + 0.030432880936082683, + -0.0368981887874985, + -0.13694990598532344, + -0.2501482749620376, + -0.3572980414886884, + -0.45920263576837395, + -0.5600723944895385, + -0.6504290877142576, + -0.7416457725780191, + -0.8208083934683478, + -0.878487737645307, + -0.8974656592912215, + -0.8862259169339072, + -0.8548040236670353, + -0.805266452004022, + -0.7448638192405364, + -0.6976801855597999, + -0.6517694203071162, + -0.5928524163414229, + -0.5055830725198319, + -0.39548858544251564, + -0.2919587713007237, + -0.19627853822460434, + -0.1086718945497736, + -0.022267401666768032, + 0.04654260360213824, + 0.10205510964002122, + 0.14652192387337368, + 0.1979263340205501, + 0.24526851304946468, + 0.2790045410789336, + 0.29958461627258764, + 0.3047084198594308, + 0.3042444963327729, + 0.3001919064090547, + 0.29816267027393195, + 0.2982021330540357, + 0.2916505370173922, + 0.27658468361769944, + 0.2598697218795046, + 0.26076692723071687, + 0.27463459892869324, + 0.2923062142364736, + 0.3179445052535355, + 0.3299680302141261, + 0.3429325575557318, + 0.3513549440819502, + 0.36141653877733365, + 0.37767063706033666, + 0.3826154244205446, + 0.3717452821087063, + 0.35076211397401574, + 0.3087437263753916, + 0.25501311039426644, + 0.19614118152238177, + 0.1416399274314029, + 0.08451181342098649, + 0.027660681621435628, + -0.03541757434701522, + -0.1106657688031277, + -0.18657463780399977, + -0.2642120278108779, + -0.34291260842404003, + -0.41591262375717036, + -0.48476182424573194, + -0.5449435306857997, + -0.5964377695931209, + -0.6762305610143673, + -0.7660043467015094, + -0.8426078972492136, + -0.903196363291099, + -0.9545361979380342, + -0.9918629270485337, + -1.0169076549772522, + -1.040791519323899, + -1.052895223391994, + -1.049495443003667, + -1.0299654815896384, + -0.9914711228885259, + -0.9495321373502282, + -0.9116084381229872, + -0.8674801392946824, + -0.7983307675132586, + -0.715823371928817, + -0.638551077293932, + -0.5650304720630879, + -0.4917922594542106, + -0.4313500651279638, + -0.3673680270335224, + -0.30310141239613836, + -0.23734778049211508, + -0.1744868314392305, + -0.11525900758537813, + -0.08832316932695242, + -0.09596265405949002, + -0.131805422321076, + -0.17827318574534765, + -0.23388084192158604, + -0.2861275103903006, + -0.332895640922897, + -0.3872429396419262, + -0.454854908285911, + -0.523151033494635, + -0.5667852275908906, + -0.5954582079949159, + -0.6029638875854124, + -0.6005102981220439, + -0.5938538396129482, + -0.5794190483988462, + -0.5491479650250322, + -0.5046991928029669, + -0.4606946310300882, + -0.4191055516965844, + -0.39724472411221173, + -0.38406025445769537, + -0.36997660712960295, + -0.3677498040241559, + -0.3551273924255837, + -0.3275412166609417, + -0.30193444641030326, + -0.2722614390941919, + -0.24827425863856362, + -0.24815227048235977, + -0.270961218364892, + -0.30884114514413946, + -0.36419839268905524, + -0.43176910084549375, + -0.5118791388847765, + -0.5879275424727376, + -0.6178894330846463, + -0.5982237625929944, + -0.5513534621420177, + -0.43239784163304745, + -0.298153029652936, + -0.16915273637135422, + -0.05102968205072823, + 0.055687803748012285, + 0.15618504841088057, + 0.23039165136889958, + 0.27592333549690135, + 0.2941584614627485, + 0.2862057345419563, + 0.2693150574712389, + 0.259634616107356, + 0.24608010610442624, + 0.23200417997588704, + 0.2234271584307809, + 0.21239810527099887, + 0.2245768685018895, + 0.23532330717876532, + 0.23009086448250682, + 0.22637101054999365, + 0.21755843855710424, + 0.20443852311512026, + 0.19407482590130784, + 0.18396662003392955, + 0.17022271340176087, + 0.15125662793284295, + 0.13027396079158432, + 0.11525115724889028, + 0.10317902928525316, + 0.08570980767819061, + 0.05917834193630467, + 0.04239171307964743, + 0.04334562544043402, + 0.04536705951711456, + 0.06741629220228243, + 0.09461858564586678, + 0.11580148669846362, + 0.13471764050226762, + 0.14980782558745853, + 0.17081942882722054, + 0.21186386044847583, + 0.26344803195775934, + 0.3180891142991883, + 0.394038974684663, + 0.5191057813559183, + 0.6936857046072907, + 0.89229366167048, + 1.0887106165137546, + 1.2825053504241943, + 1.4557015349133942, + 1.5529780401047588, + 1.6060641268223586, + 1.6303927063077084, + 1.636126477397679, + 1.6081607162273457, + 1.557004368462383, + 1.472233267812551, + 1.3890854616612125, + 1.2983243916279583, + 1.1527615459673834, + 0.9891785302402306, + 0.8221112726418551, + 0.681031713924333, + 0.5466929693582266, + 0.43827048016851233, + 0.3266804704605279, + 0.20453104598611213, + 0.0691632625577249, + -0.06358178030498102, + -0.199960036588255, + -0.31820736245228104, + -0.41581564040452673, + -0.49762506547645524, + -0.5466688364836338, + -0.5814171611469886, + -0.5825182264136957, + -0.5575261936794352, + -0.505009715440395, + -0.4397872012115659, + -0.3656351698964079, + -0.3100398418093607, + -0.25231880194889367, + -0.20775196461655632, + -0.1801770597404355, + -0.16984376482752156, + -0.16906413313085503, + -0.16023515615943557, + -0.1524672213568079, + -0.1304292107418164, + -0.08244002225434882, + -0.05454576225230577, + -0.030611962221864374, + 0.006036876027244683, + 0.051300301909084876, + 0.10164649710752262, + 0.15207283818464223, + 0.19289252457324466, + 0.22596681355488077, + 0.25035252508139155, + 0.2952197615762091, + 0.3388465201454607 +] diff --git a/data/expected/trix_signal_005930.json b/data/expected/trix_signal_005930.json new file mode 100644 index 0000000..07f53c4 --- /dev/null +++ b/data/expected/trix_signal_005930.json @@ -0,0 +1,602 @@ +[ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.07327369684931931, + -0.11501150521702286, + -0.15944317353865484, + -0.2057339867113474, + -0.25342721236913035, + -0.30148859505605435, + -0.34735398891266756, + -0.3886910517056116, + -0.42337539862822665, + -0.4519880416950476, + -0.475998126852384, + -0.4969616047425585, + -0.5143545984051872, + -0.5276506975402884, + -0.5374894054688923, + -0.5419952750162734, + -0.539876616209688, + -0.5308613106012279, + -0.5162813709305267, + -0.4974723667197448, + -0.4761643946869043, + -0.4504826100405686, + -0.4178158807263091, + -0.37918877848000254, + -0.3366767566343413, + -0.2906176532929234, + -0.24275592313340075, + -0.19499586399010393, + -0.14812565745172368, + -0.10292460908513779, + -0.060074409110469004, + -0.020850014395943826, + 0.013873730827718273, + 0.0441877779817102, + 0.06970935643120647, + 0.09066707901209294, + 0.10736836618810724, + 0.11932549647195638, + 0.12568011809620633, + 0.12547362775779392, + 0.11998087627062146, + 0.11086833653377232, + 0.10043896441840675, + 0.08934519048493539, + 0.07942181073390787, + 0.07078000667020037, + 0.062308432511037834, + 0.05245252523844328, + 0.0406352566740035, + 0.027827479386769816, + 0.015167667477349251, + 0.0016905167258210348, + -0.012518853838892683, + -0.02601251097742384, + -0.03951903470179721, + -0.05424062031846473, + -0.07082501286937053, + -0.08904592214394541, + -0.1095770345067673, + -0.13255131603215337, + -0.15424497158611833, + -0.17415130047411304, + -0.19280638635231628, + -0.20997215359889201, + -0.22507162037342382, + -0.23844046970845081, + -0.25071466862431513, + -0.26310341893751726, + -0.275695122044713, + -0.28887975968207896, + -0.30200526475324424, + -0.3159916073536565, + -0.33114007627294756, + -0.34637311171819496, + -0.35802113474484365, + -0.3632876091526188, + -0.3608825322718845, + -0.3510505903584711, + -0.3357855863718704, + -0.3162331254136025, + -0.294352953677182, + -0.2700976768781731, + -0.2435379503987162, + -0.21537062847764787, + -0.18733845282531966, + -0.16096547830190466, + -0.13655047357909236, + -0.11217608238798929, + -0.08694572098172351, + -0.058648303710034246, + -0.02689008943099691, + 0.004703946937387498, + 0.03663070118603177, + 0.06932324417635669, + 0.10178547230053765, + 0.13244372902763496, + 0.16043880716542447, + 0.18616395013979092, + 0.21160268174375108, + 0.23741799708594147, + 0.2612229386445787, + 0.2847304800423404, + 0.30691957373249884, + 0.3275031566774639, + 0.34633937206002846, + 0.3613838198419154, + 0.37214024029241827, + 0.37798542756540116, + 0.3779043319943073, + 0.37241143175307095, + 0.3627724984444698, + 0.3495369945299133, + 0.3322982693588063, + 0.3120292940076286, + 0.29163196128488, + 0.2731098807988731, + 0.2546105391990344, + 0.23522552982637782, + 0.21344282715254528, + 0.18867512176712237, + 0.16164145605271493, + 0.13473162121201576, + 0.10832595333714141, + 0.08311623514892205, + 0.060575903140839514, + 0.0399381798788407, + 0.021117052008618728, + 0.004112622114478964, + -0.012132797826813575, + -0.028694405204767803, + -0.04445238845196947, + -0.05989881332948139, + -0.07527553483097416, + -0.09017865131709733, + -0.10599904018166334, + -0.12456122007285737, + -0.1457957945017466, + -0.16903170176088686, + -0.19028873844942315, + -0.20692743807184805, + -0.21686096482782855, + -0.2175192495190708, + -0.2090316952259792, + -0.19248971366245793, + -0.16958018783935308, + -0.14181097627184225, + -0.11050750805373565, + -0.07731251895178692, + -0.04448467887239484, + -0.012197364510549334, + 0.019399177153037697, + 0.05177676866861748, + 0.08559428148392764, + 0.12122224274315041, + 0.15632410314829343, + 0.18633682358287668, + 0.21009449492788201, + 0.22939172433244864, + 0.24555546772183018, + 0.25652758926068964, + 0.2620019668129837, + 0.26371779431368164, + 0.2626604685938865, + 0.25924994982938654, + 0.2539783884674185, + 0.24757904110276496, + 0.23928312766051718, + 0.23070257097413188, + 0.2213141526334014, + 0.21107581687499155, + 0.1993788050113422, + 0.1849840698165943, + 0.168797513660147, + 0.1508006226405321, + 0.1304556957927755, + 0.10814952057791913, + 0.08482750683281544, + 0.06102852016280049, + 0.03857222985722053, + 0.017549758967773083, + -0.0023367512118504415, + -0.02130496978345058, + -0.039977266346302574, + -0.05779113366653119, + -0.07544756914684302, + -0.09204105441429034, + -0.1068297269743769, + -0.11772349717480426, + -0.12525523933420843, + -0.12979190881484975, + -0.1307823011613136, + -0.1268743302705988, + -0.11717358263770256, + -0.10313282347524996, + -0.08520991328762677, + -0.06459005737919758, + -0.041880882297346475, + -0.017024564671863047, + 0.008268093254015273, + 0.03329763904705941, + 0.0576912661334649, + 0.0790167366485929, + 0.09930649992785967, + 0.12010254329619618, + 0.14188820025634485, + 0.16441983767104526, + 0.18710509268653205, + 0.20795193864586636, + 0.2259836354404805, + 0.24098929262415705, + 0.2527255870848805, + 0.26089547803297486, + 0.2659618965787286, + 0.2676990135845423, + 0.2643722630190024, + 0.25624928737628483, + 0.24460308740547887, + 0.23154074326845686, + 0.21852582816591956, + 0.20596023353727755, + 0.1936849759831313, + 0.1825438903182341, + 0.17215718448503298, + 0.16148894340583075, + 0.14967490019184643, + 0.13641207609715833, + 0.1223034759682915, + 0.10889690179267728, + 0.09652981414136302, + 0.08670405130035366, + 0.08238025730273987, + 0.084391517563713, + 0.09210287633245028, + 0.10437764474213744, + 0.12012533702874466, + 0.13969238084925895, + 0.16454457683437987, + 0.19314605737594465, + 0.2230818740884153, + 0.2537837578173125, + 0.2836171887898769, + 0.3104314214362045, + 0.332808705057254, + 0.351235630794138, + 0.3648133345757318, + 0.3743361917050868, + 0.3801727971084743, + 0.3821756371508607, + 0.38078070403361697, + 0.3757445197778436, + 0.3674442628307955, + 0.355402374893552, + 0.3406557398839599, + 0.32435582559807574, + 0.30811532085367915, + 0.2929380877480176, + 0.279293076187093, + 0.26690071984174935, + 0.25525257618704195, + 0.2448284500825558, + 0.23568085391005275, + 0.22660694147709487, + 0.21658349943896643, + 0.20349861142267475, + 0.18638610295774818, + 0.16748748102449523, + 0.14870106367904526, + 0.13111554945361031, + 0.1168120127677235, + 0.10640602729646369, + 0.09844716159580366, + 0.09166234072928225, + 0.08461001818324156, + 0.07596507651018355, + 0.0654760743897498, + 0.05297080785401589, + 0.03858065816709657, + 0.02474117058472082, + 0.011640411606191935, + -0.001344986002923645, + -0.01300669980774651, + -0.023961264957291915, + -0.03553412360332597, + -0.048596054971498714, + -0.06293958780677136, + -0.07895544323241176, + -0.0949885475213513, + -0.11084189140180646, + -0.126636922385964, + -0.1423176377776827, + -0.15784360274204715, + -0.1731800023022496, + -0.18839641505043606, + -0.20287049111116337, + -0.21603311997662017, + -0.2269015429162416, + -0.23381139963904451, + -0.2373361768606303, + -0.23828243878011376, + -0.2371910266441295, + -0.23411824851581295, + -0.22943759810075126, + -0.2190908229282732, + -0.2016088862173296, + -0.1778503707129417, + -0.15003312637473842, + -0.11966331876999382, + -0.08830322909714793, + -0.05673879525076369, + -0.026157815344609772, + 0.002951169394329052, + 0.030927886679980136, + 0.05793108195651863, + 0.08177861432291375, + 0.10096735615553123, + 0.11479328077938628, + 0.12257899321234965, + 0.12447243709907606, + 0.12182706732508095, + 0.11500170209575802, + 0.10452917475426074, + 0.09028659409659032, + 0.07202298463633065, + 0.04963570801542176, + 0.024336657284189808, + -0.0006511326496293664, + -0.022682042241864618, + -0.04144070949798716, + -0.05761299866935124, + -0.06936101290352881, + -0.07496609861462238, + -0.07529813594563833, + -0.07214138593069261, + -0.06723436618019323, + -0.061570067068969454, + -0.05630194599929672, + -0.053357241435041246, + -0.05274235586936688, + -0.05413102111823245, + -0.05747022241417926, + -0.06058495343341958, + -0.06118656134040761, + -0.058539858073149445, + -0.051323713292225355, + -0.039564996045398045, + -0.025088090732791855, + -0.008916744213380665, + 0.0081946185431236, + 0.025373555035680968, + 0.04232139628621634, + 0.06010603438502709, + 0.07943777797139853, + 0.09976691931432513, + 0.1205039999982877, + 0.14098931292074185, + 0.16049934893969844, + 0.17795751160690487, + 0.19196853796688937, + 0.20153045401163333, + 0.20790204352590308, + 0.21185044969977926, + 0.21394497277524305, + 0.213682775174232, + 0.21159626579913723, + 0.20661650572303658, + 0.19905026368443576, + 0.18915329029813435, + 0.17849850825045213, + 0.16838921426337478, + 0.15992844186580019, + 0.15273364948531895, + 0.1467609009860787, + 0.14201817328101696, + 0.13791144455894683, + 0.13454115528937158, + 0.13323187659071015, + 0.1344757686716177, + 0.13896365039082248, + 0.14713097900270197, + 0.1598689987768575, + 0.17717507728799756, + 0.19912514184161667, + 0.22202068866347735, + 0.24301523236791728, + 0.26046758953096905, + 0.27348040312528726, + 0.28001803867948427, + 0.2785678548584195, + 0.26888773843807046, + 0.25180674914458784, + 0.2295647596000167, + 0.2028301086773519, + 0.17122343401519596, + 0.13624569103325548, + 0.10242653498557851, + 0.07265051731717449, + 0.0483015486788001, + 0.028522465104327883, + 0.012690976204936016, + -0.0004521647457086386, + -0.010683816544010318, + -0.018202809361987905, + -0.02489172480739801, + -0.030769087135405104, + -0.0342680526485628, + -0.035737784392446736, + -0.03546349026452912, + -0.033199507649496786, + -0.029978569634284153, + -0.025375138856947373, + -0.020593367754689153, + -0.017281388013074366, + -0.016282862279775167, + -0.01672928195705256, + -0.018484030459699582, + -0.02156530088827981, + -0.02564861756181768, + -0.030561570587509586, + -0.03611337402446298, + -0.04191855086376762, + -0.04734185760309788, + -0.05180885532762683, + -0.05357876101203236, + -0.05327108076850963, + -0.052210956045909855, + -0.05180906692328989, + -0.051547787737429615, + -0.052013800014833425, + -0.052463485939095215, + -0.051701518265910656, + -0.04908044591134404, + -0.04651201742814544, + -0.044428582602953466, + -0.04297753352812582, + -0.038076076285857914, + -0.0258598443365975, + -0.005978919819910264, + 0.01972489771120102, + 0.050847567160837034, + 0.08583436646836526, + 0.12377064848707198, + 0.16467519403336744, + 0.20695998835896234, + 0.2517382193442714, + 0.2973762486284477, + 0.34312885339251137, + 0.3868018800135171, + 0.42658093940303154, + 0.46025997090331205, + 0.48715809356452744, + 0.506657284868667, + 0.5173403197014966, + 0.5171047702246298, + 0.5050188386075787, + 0.48269250983712003, + 0.45042842476919015, + 0.4085058816132635, + 0.3581527664431851, + 0.3044136425910789, + 0.24868514611391654, + 0.1929467333157659, + 0.13887700558069777, + 0.08853216322261481, + 0.04359504755233107, + 0.004482326810452981, + -0.02537476731712802, + -0.04501284019625845, + -0.05640465730393059, + -0.06181384508193081, + -0.06371888998346487, + -0.06379357408864009, + -0.06313246155070565, + -0.06306266535033175, + -0.06272835763868574, + -0.06216808616846872, + -0.06203837138690813, + -0.06200691495202333, + -0.06406873829338161, + -0.06764577107464882, + -0.07178879212942624, + -0.07806679094907434, + -0.08838962196466311, + -0.10294840132863645, + -0.11896017782730894, + -0.1349282329705183, + -0.14783447845162478, + -0.1563878742823837, + -0.16176845061428163, + -0.16522942804982282, + -0.1662376935234382, + -0.16273843760816903, + -0.1533024774022623, + -0.13944670345677002, + -0.12099087869801023, + -0.09732249384082126, + -0.0687470116708585, + -0.037967944460689115, + -0.006481020940367736, + 0.024585570559767372, + 0.05469415342855176, + 0.08346606672651874, + 0.1102730127574156, + 0.13483511957100902, + 0.15681428601489728, + 0.175914600637862, + 0.19453056999877147, + 0.21573667472321095, + 0.24042263055711666, + 0.2683197547898835, + 0.29819204050936343, + 0.32826497184234793, + 0.3539945786219294, + 0.3751753448634083, + 0.39257626511419724, + 0.4055797491268407, + 0.4141303379647669, + 0.4161179681489985, + 0.40982935954048694, + 0.39613995219307624, + 0.37471028937929257, + 0.3450705166896384, + 0.30873324713851524, + 0.26791298099871863, + 0.224531772529703, + 0.18288702323990552, + 0.14465042228188646, + 0.10763367548594473, + 0.0639739217193047, + 0.012280901334731975, + -0.04441863437158666, + -0.10428764703321755, + -0.16394266964429738, + -0.22006679312763558, + -0.2699735705009989, + -0.31122554885700354, + -0.3401996526376698, + -0.35768525708990817, + -0.3644617152435807, + -0.3624471885979838, + -0.3534710177007231, + -0.33974765025183723, + -0.32439887073666485, + -0.3094418031245846, + -0.29527274502878487, + -0.2842054030025936, + -0.27666963751518403, + -0.27225591207652494, + -0.27200942020736596, + -0.27805802083611986, + -0.2913042756366467, + -0.3109888966252582, + -0.3367552746098733, + -0.36830336235045547, + -0.405310291457248, + -0.44481963677854897, + -0.4860406144214956, + -0.5287393180354348, + -0.5717869366792088 +] diff --git a/data/expected/trix_signal_TSLA.json b/data/expected/trix_signal_TSLA.json new file mode 100644 index 0000000..789288f --- /dev/null +++ b/data/expected/trix_signal_TSLA.json @@ -0,0 +1,602 @@ +[ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + -0.32155631883677693, + -0.29728819322570543, + -0.27101582183181483, + -0.23906882964282264, + -0.20579140629588016, + -0.1742363377530929, + -0.1448025901396856, + -0.11737035917353861, + -0.09142365799191655, + -0.06671222454098572, + -0.041761383991740494, + -0.015682404008165958, + 0.018938521502868674, + 0.06413486376665252, + 0.11747874683764847, + 0.17281817295899737, + 0.2307297974281895, + 0.291849205919945, + 0.3596735875288749, + 0.43348996291083486, + 0.5114598300929685, + 0.5923155264201955, + 0.6734380077780749, + 0.7455486460693943, + 0.8043003505600167, + 0.8457876700130893, + 0.8722521662214119, + 0.8836080439323617, + 0.8846319589828855, + 0.8807942007869117, + 0.8739404283407054, + 0.8640506447198573, + 0.8506762602707687, + 0.8320070710450865, + 0.8058010834378255, + 0.773533900278923, + 0.7368018414522894, + 0.6967714242096463, + 0.6525162518251061, + 0.6035583346514506, + 0.5488514464508717, + 0.4885437524661833, + 0.42453780856571416, + 0.3571071660700982, + 0.2886945379912652, + 0.22379237224785348, + 0.16636169675080106, + 0.12076155294264443, + 0.08940580568666433, + 0.06887974456326747, + 0.05910824508626524, + 0.05903560339365817, + 0.06667532579808566, + 0.08142229331587454, + 0.10161740702416586, + 0.12332236312198494, + 0.14094195134221543, + 0.14863111311078286, + 0.1448434547570281, + 0.13202625517268604, + 0.11382238019556022, + 0.08803281854830763, + 0.05412065581747114, + 0.007675401076643183, + -0.049348368884572634, + -0.11603202482285292, + -0.19035293487100055, + -0.27304521788335934, + -0.3621267211588537, + -0.4560428251183072, + -0.5517516383120078, + -0.6447069136134, + -0.7357575631572151, + -0.82012043718206, + -0.8943655123136509, + -0.955828338029556, + -1.0074691860291018, + -1.0486336213297545, + -1.0799685163859205, + -1.0986928794096373, + -1.1033090324986996, + -1.093850116721684, + -1.0704243645427842, + -1.034669456738988, + -0.9886121512076859, + -0.9384810563704187, + -0.8878351401063478, + -0.8410874893811987, + -0.8033301255861349, + -0.7778285227226631, + -0.768876161524898, + -0.7721314792338759, + -0.7817317070509947, + -0.7949518363225654, + -0.8081982011937332, + -0.8214417552860421, + -0.8352107183174409, + -0.8499890664136565, + -0.8693294075179904, + -0.8930194738623567, + -0.9149701212295759, + -0.9315826654616292, + -0.9408815793384229, + -0.9427658261456398, + -0.932493335908845, + -0.9086382185788756, + -0.8718438439843806, + -0.8285258000833462, + -0.7837133402889238, + -0.7424030403559465, + -0.7069588088540617, + -0.6757640253331147, + -0.6517481985555645, + -0.6379630076471565, + -0.6360311185534444, + -0.6445609201387953, + -0.6640020120365284, + -0.6926944452364366, + -0.7326289941429444, + -0.7826127323197927, + -0.8446026472839553, + -0.9178007394742365, + -1.0048404894049996, + -1.1023817351785314, + -1.2019655333206933, + -1.2966218255793127, + -1.3881105094795263, + -1.4734251434875736, + -1.5514143350937912, + -1.6193574649913045, + -1.672112706003686, + -1.7075843504078656, + -1.7230924411089719, + -1.71813441788062, + -1.6943869687874535, + -1.6494755644569816, + -1.5855986171908936, + -1.5068055656202122, + -1.4136964040808029, + -1.3030567203375152, + -1.176006657897968, + -1.0359356077573647, + -0.8789028717359006, + -0.6972837235116622, + -0.49921990392235915, + -0.29028859743272195, + -0.07375427182075167, + 0.1476448378941164, + 0.36848010431880457, + 0.5842599052276262, + 0.7898842659448371, + 0.9819778457458281, + 1.1592425952836765, + 1.3133642168405846, + 1.4386224752911458, + 1.5398977659422426, + 1.6218018267716077, + 1.6805000555334422, + 1.7178490492004643, + 1.7306760691291019, + 1.7209251683789095, + 1.6919306633951132, + 1.6448781665971104, + 1.5868316178125677, + 1.5215102933303768, + 1.4503557676756498, + 1.3701444802720641, + 1.2836723423854262, + 1.1920218973389682, + 1.0946387902362182, + 0.9906283805180505, + 0.8778997294207314, + 0.7580168213974249, + 0.6343913689311577, + 0.513982696137953, + 0.40012632634427936, + 0.296400822334633, + 0.20308771989244162, + 0.12146128746178368, + 0.05729433098252924, + 0.009593785310537811, + -0.023025217869543847, + -0.043364134293101, + -0.053474085920623915, + -0.056483222732290686, + -0.052956070877593076, + -0.04347442152512312, + -0.024503752464087074, + -0.0007666717954829504, + 0.023624963105130407, + 0.043452341665741814, + 0.05626376977320255, + 0.06134770556391307, + 0.06013197542354792, + 0.05169682384882479, + 0.03867301431682029, + 0.02277250848495787, + 0.006190042165084765, + -0.010702554215818385, + -0.02888868931304639, + -0.055117079146447895, + -0.09040648005239629, + -0.13448537688185647, + -0.18612010699765186, + -0.24560844084720684, + -0.3085878750249711, + -0.3697374028635564, + -0.4265499511251144, + -0.4778411265535585, + -0.5225498448616454, + -0.5597208517818115, + -0.5853094275914345, + -0.5972492621188982, + -0.5967183349895281, + -0.5856942090317144, + -0.5647598320517986, + -0.5370571522138967, + -0.5057060508487101, + -0.4727723259769143, + -0.43655943164585437, + -0.3955492746979108, + -0.3485982654474249, + -0.2926302603457295, + -0.22933167983525324, + -0.1625584524271885, + -0.09494274779973888, + -0.025194699612144683, + 0.04931653503669291, + 0.12904783669156672, + 0.21356993629433565, + 0.3030941723510025, + 0.39670472625487874, + 0.49298230859565406, + 0.5900169224067309, + 0.6886762567940373, + 0.7904409008223897, + 0.8951677903726425, + 1.0029763673408774, + 1.109696810148237, + 1.2101136032073507, + 1.3013331355334938, + 1.3855268989660419, + 1.4562999916253232, + 1.511822364317771, + 1.5482076256526525, + 1.5590881705840105, + 1.5468316899998045, + 1.5168064209436396, + 1.473656637430896, + 1.422275770267574, + 1.3716197571233282, + 1.3262541386277666, + 1.2853830653184066, + 1.246954189588419, + 1.2078028154935831, + 1.1663096116990945, + 1.1224586396566494, + 1.0781659388124973, + 1.035296522854876, + 0.9970400211201804, + 0.9649535583311466, + 0.93804269894346, + 0.9067576808345982, + 0.8661622279350406, + 0.8178213457535797, + 0.7626155943687052, + 0.7019568751524783, + 0.63532937440911, + 0.5668667243958972, + 0.499730618838782, + 0.4341994361529795, + 0.3690558969154315, + 0.30578195584041, + 0.24409970302087372, + 0.18380563387105625, + 0.12495452516722433, + 0.06610849566324165, + 0.00830979357886727, + -0.047975381818864606, + -0.10260571244501067, + -0.1567334814096678, + -0.21212753064077747, + -0.27032972523963417, + -0.3318025563993655, + -0.3908533955188862, + -0.4433019997647312, + -0.4858406922785846, + -0.5190519387323977, + -0.5410833363867046, + -0.5516252232497216, + -0.5460692103180468, + -0.5238777890287736, + -0.4865386705855306, + -0.4408007661014729, + -0.38802147456257535, + -0.33164671723240086, + -0.2746175214806272, + -0.22005992557226342, + -0.16236992853101442, + -0.10189608453787583, + -0.038932825498194525, + 0.02644541027809197, + 0.09231354294430164, + 0.15380277173547308, + 0.2083863669815444, + 0.2535708212345945, + 0.28648283811157826, + 0.30349213076742887, + 0.30513547347361863, + 0.29265089260077526, + 0.2674314326765227, + 0.23368629217610792, + 0.1960045933442, + 0.15795438333862544, + 0.12036118626625322, + 0.08819131975765741, + 0.06330511499290112, + 0.046122422192825745, + 0.03585190336915778, + 0.03247263443946739, + 0.03491495165381328, + 0.04071029906103932, + 0.04586864023602736, + 0.04917165509640234, + 0.050509953945403606, + 0.04649453934353943, + 0.029815993717331842, + -0.0035371862231992172, + -0.052859403970966896, + -0.1137471314745112, + -0.18283823233328378, + -0.2582850647645347, + -0.33671386935447933, + -0.4177002499991873, + -0.49832187869301947, + -0.574355050483477, + -0.6389771722450259, + -0.6884269211828021, + -0.7217023416796489, + -0.7384151637445235, + -0.7397048948437261, + -0.7312999529869408, + -0.7153938464509759, + -0.6908855604290653, + -0.6538250628472186, + -0.602157767366278, + -0.5401179681531671, + -0.4713500821674546, + -0.3988144446439184, + -0.3235050360484884, + -0.24949550811836307, + -0.1791853845666862, + -0.11404392287867424, + -0.05164987149882937, + 0.007733805410829443, + 0.061987952544450275, + 0.10950728529007775, + 0.14854751220394835, + 0.17968690902971327, + 0.20378790850558157, + 0.22266286085925166, + 0.23777071529820848, + 0.24854667964204524, + 0.2541542804371761, + 0.2552973687256418, + 0.2563912804266568, + 0.2600399441270641, + 0.266493198148946, + 0.27678345956986394, + 0.28742037369871637, + 0.29852281047011947, + 0.3090892371924856, + 0.3195546975094552, + 0.3311778854196315, + 0.3414653932198141, + 0.34752137099759256, + 0.34816951959287723, + 0.34028436094938014, + 0.32323011083835745, + 0.29781232497516236, + 0.2665778454664105, + 0.2301646390573257, + 0.1896638475701477, + 0.14464756318671515, + 0.09358489678874658, + 0.03755298987019732, + -0.02280001366601772, + -0.08682253261762218, + -0.15264055084553182, + -0.21906480552557184, + -0.28424055055761743, + -0.34667999436471814, + -0.412590107694648, + -0.48327295549602034, + -0.555139943846659, + -0.624751227735547, + -0.6907082217760445, + -0.7509391628305424, + -0.8041328612598844, + -0.8514645928726874, + -0.8917507189765488, + -0.9232996637819725, + -0.9446328273435057, + -0.9540004864525098, + -0.9531068166320535, + -0.9448071409302403, + -0.9293417406031288, + -0.9031395459851548, + -0.8656763111738873, + -0.8202512643978963, + -0.7692071059309347, + -0.7137241366355899, + -0.6572493223340647, + -0.5992730632739562, + -0.5400387330983927, + -0.4795005425771372, + -0.4184978003495559, + -0.3578500417967204, + -0.3039446673027668, + -0.26234826465411143, + -0.23623969618750434, + -0.224646394099073, + -0.22649328366357563, + -0.23842012900892065, + -0.2573152313917159, + -0.283300773041758, + -0.31761160009058864, + -0.358719486771398, + -0.40033263493529647, + -0.43935774954722034, + -0.47207897715485875, + -0.4977652413482958, + -0.5169829610012263, + -0.5294701784807503, + -0.5334057357896067, + -0.5276644271922788, + -0.5142704679598407, + -0.4952374847071894, + -0.4756389325881939, + -0.4573231969620942, + -0.43985387899559597, + -0.425433064001308, + -0.41137192968616315, + -0.3946057870811189, + -0.3760715189469558, + -0.355309502976403, + -0.3339024541088351, + -0.3167524173835401, + -0.3075941775798105, + -0.3078435710926763, + -0.3191145354119521, + -0.34164544849866046, + -0.3756921865758837, + -0.4181392577552545, + -0.45808929282113287, + -0.48611618677550517, + -0.4991636418488077, + -0.48581048180565567, + -0.4482789913751118, + -0.3924537403743603, + -0.32416892870963393, + -0.2481975822181047, + -0.16732105609230763, + -0.0877785146000662, + -0.01503814458067268, + 0.04680117662801155, + 0.09468208821080051, + 0.1296086820628882, + 0.15561386887178175, + 0.17370711631831065, + 0.18536652904982595, + 0.19297865492601696, + 0.19686254499501335, + 0.2024054096963886, + 0.20898898919286396, + 0.21320936425079254, + 0.21584169351063276, + 0.21618504251992707, + 0.2138357386389657, + 0.20988355609143414, + 0.20470016887993325, + 0.19780467778429878, + 0.18849506781400763, + 0.17685084640952298, + 0.16453090857739644, + 0.15226053271896778, + 0.13895038771081236, + 0.12299597855591084, + 0.10687512546065817, + 0.09416922545661334, + 0.08440879226871359, + 0.08101029225542736, + 0.08373195093351525, + 0.09014585808650494, + 0.09906021456965748, + 0.1092097367732177, + 0.12153167518401828, + 0.1395981122369098, + 0.16436809618107973, + 0.19511229980470146, + 0.23489763478069378, + 0.2917392640957387, + 0.3721285521980491, + 0.47616157409253523, + 0.5986713825767791, + 0.7354381761462622, + 0.8794908478996886, + 1.0141882863407026, + 1.1325634544370338, + 1.2321293048111688, + 1.3129287393284708, + 1.3719751347082458, + 1.4089809814590735, + 1.421631438729769, + 1.4151222433160577, + 1.391762672978438, + 1.343962447576227, + 1.2730056641090277, + 1.1828267858155934, + 1.0824677714373414, + 0.9753128110215186, + 0.8679043448509174, + 0.7596595699728396, + 0.6486338651754942, + 0.5327397446519403, + 0.41347543966055605, + 0.2907883444107939, + 0.1689892030381789, + 0.052028234349637784, + -0.057902425615580816, + -0.15565570778919144, + -0.2408079984607509, + -0.3091500440513399, + -0.35882527397695896, + -0.3880621622696462, + -0.3984071700580301, + -0.39185277002570573, + -0.37549018438243675, + -0.3508559078957282, + -0.3222351192398938, + -0.2938235073400022, + -0.26902755883750606, + -0.24903487369617588, + -0.23127493018882783, + -0.21551338842242385, + -0.19849655288630239, + -0.17528524675991167, + -0.15113734985839047, + -0.12703227233108524, + -0.10041844265941927, + -0.07007469374571845, + -0.035730455575070236, + 0.0018302031768722589, + 0.04004266745614674, + 0.07722749667589354, + 0.11185250235699315, + 0.14852595420083634, + 0.1865900673897612 +] diff --git a/polars/Cargo.toml b/polars/Cargo.toml index 7ade7e9..7727875 100644 --- a/polars/Cargo.toml +++ b/polars/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "polars_techr" -version = "0.1.3" +version = "0.1.4" edition = "2021" description = "Polars expression plugins for techr indicators" license = "MIT" diff --git a/polars/README.md b/polars/README.md index ddb00e1..201d35a 100644 --- a/polars/README.md +++ b/polars/README.md @@ -12,7 +12,7 @@ uv add techr - Price/trend: `sma`, `wma`, `ema`, `disparity`, `mom`, `roc`, `rsi`, `psl` - Bands/channels: `bband_middle`, `bband_lower`, `bband_upper`, `env_upper`, `env_middle`, `env_lower`, `pchan_upper`, `pchan_middle`, `pchan_lower` -- Momentum/oscillators: `macd`, `macd_line`, `macd_signal`, `macd_hist`, `macd_histogram`, `ppo_line`, `ppo_signal`, `ppo_histogram`, `pvo_line`, `pvo_signal`, `pvo_histogram`, `sonar_line`, `sonar_signal`, `stochf_percent_k`, `stochf_percent_d`, `stoch_percent_k`, `stoch_percent_d`, `stochrsi_percent_k`, `stochrsi_percent_d` +- Momentum/oscillators: `macd`, `macd_line`, `macd_signal`, `macd_hist`, `macd_histogram`, `ppo_line`, `ppo_signal`, `ppo_histogram`, `pvo_line`, `pvo_signal`, `pvo_histogram`, `sonar_line`, `sonar_signal`, `trix_line`, `trix_signal`, `stochf_percent_k`, `stochf_percent_d`, `stoch_percent_k`, `stoch_percent_d`, `stochrsi_percent_k`, `stochrsi_percent_d` - High/low/volume indicators: `ad`, `adx`, `adxr`, `aroon_up`, `aroon_down`, `aroonosc`, `atr`, `cci`, `cmf`, `co`, `cv`, `dmi_plus`, `dmi_minus`, `efi`, `eom_line`, `eom_signal`, `erbear`, `erbull`, `massi_line`, `massi_signal`, `mfi`, `nvi_line`, `nvi_signal`, `obv_line`, `obv_signal`, `psar`, `pvi_line`, `pvi_signal`, `ultosc`, `vr`, `willr` - Ichimoku: `ichimoku_base_line`, `ichimoku_conversion_line`, `ichimoku_leading_span_a`, `ichimoku_leading_span_b`, `ichimoku_lagging_span` diff --git a/polars/src/expressions.rs b/polars/src/expressions.rs index 849f6ca..e20b465 100644 --- a/polars/src/expressions.rs +++ b/polars/src/expressions.rs @@ -146,6 +146,12 @@ struct SonarSignalKwargs { signal_period: u32, } +#[derive(Deserialize)] +struct PeriodSignalKwargs { + period: u32, + signal_period: u32, +} + #[derive(Deserialize)] struct StochRsiKwargs { period_rsi: u32, @@ -873,6 +879,25 @@ fn rsi(inputs: &[Series], kwargs: PeriodKwargs) -> PolarsResult { ))) } +#[polars_expr(output_type=Float64)] +fn trix_line(inputs: &[Series], kwargs: PeriodKwargs) -> PolarsResult { + let input = series_to_f64_vec(&inputs[0])?; + Ok(option_vec_to_series(core::trix_line( + &input, + kwargs.period as usize, + ))) +} + +#[polars_expr(output_type=Float64)] +fn trix_signal(inputs: &[Series], kwargs: PeriodSignalKwargs) -> PolarsResult { + let input = series_to_f64_vec(&inputs[0])?; + Ok(option_vec_to_series(core::trix_signal( + &input, + kwargs.period as usize, + kwargs.signal_period as usize, + ))) +} + #[polars_expr(output_type=Float64)] fn sonar_line(inputs: &[Series], kwargs: SonarLineKwargs) -> PolarsResult { let input = series_to_f64_vec(&inputs[0])?; diff --git a/polars/techr/__init__.py b/polars/techr/__init__.py index 1153e66..e3ffb1d 100644 --- a/polars/techr/__init__.py +++ b/polars/techr/__init__.py @@ -77,6 +77,8 @@ "stochf_percent_k", "stochrsi_percent_d", "stochrsi_percent_k", + "trix_line", + "trix_signal", "ultosc", "vr", "willr", @@ -704,6 +706,18 @@ def rsi(expr: IntoExpr, *, period: int) -> pl.Expr: return _register("rsi", [expr], {"period": period}) +def trix_line(expr: IntoExpr, *, period: int) -> pl.Expr: + return _register("trix_line", [expr], {"period": period}) + + +def trix_signal(expr: IntoExpr, *, period: int, signal_period: int) -> pl.Expr: + return _register( + "trix_signal", + [expr], + {"period": period, "signal_period": signal_period}, + ) + + def sonar_line(expr: IntoExpr, *, period: int, step: int) -> pl.Expr: return _register("sonar_line", [expr], {"period": period, "step": step}) diff --git a/polars/tests/test_indicators.py b/polars/tests/test_indicators.py index 8901f4c..d07d253 100644 --- a/polars/tests/test_indicators.py +++ b/polars/tests/test_indicators.py @@ -474,6 +474,12 @@ def select_expr(df: pl.DataFrame, expr: pl.Expr, alias: str, lazy: bool) -> pl.S lambda: ta.sonar_signal(pl.col("close"), period=9, step=6, signal_period=5), "sonar_signal", ), + ("trix_line", lambda: ta.trix_line(pl.col("close"), period=12), "trix_line"), + ( + "trix_signal", + lambda: ta.trix_signal(pl.col("close"), period=12, signal_period=9), + "trix_signal", + ), ( "stochrsi_percent_k", lambda: ta.stochrsi_percent_k(