/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠWang Y iq ian Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . github . wang y iq ian . stock chart . index Ċ Ċ import Ġcom . github . wang y iq ian . stock chart . entities . Empty K Entity Ċ import Ġcom . github . wang y iq ian . stock chart . entities . IK Entity Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . min Ċ Ċ /** Ċ Ġ* ĠK DJ Ġ éļıæľº æĮĩ æłĩ Ċ Ġ* Ġ@ author Ġw ang y iq ian ĠE - mail : Ġw ang y iq ian 9 8 9 1 @ gmail . com Ċ Ġ* Ġ@ version ĠåĪĽå»º æĹ¶éĹ´ : Ġ 2 0 2 1 / 2 / 1 8 Ċ Ġ*/ Ċ object ĠK DJ Calculator : ĠI Calculator Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcalculate ( param : ĠString , Ġinput : ĠList < IK Entity >): ĠList < List < Float ? >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparam List Ġ= Ġparam . split (",") ĊĠĠĠĠĠĠĠ Ġval Ġn Ġ= Ġparam List [ 0 ]. toInt () ĊĠĠĠĠĠĠĠ Ġval Ġkn Ġ= Ġparam List [ 1 ]. toInt () ĊĠĠĠĠĠĠĠ Ġval Ġdn Ġ= Ġparam List [ 2 ]. toInt () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠMutable List ( 3 ) Ġ{ ĠMutable List < Float ? >( input . size ) Ġ{ Ġ 0 f Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġk Idx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġd Idx Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġj Idx Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġinput . forEach Indexed Ġ{ Ġk Entity Idx , Ġk Entity Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( k Entity Ġis ĠEmpty K Entity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ k Idx ][ k Entity Idx ] Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ d Idx ][ k Entity Idx ] Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ j Idx ][ k Entity Idx ] Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ forEach Indexed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġk Entity . get Close Price () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġl Ġ= Ġk Entity . get Low Price () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġh Ġ= Ġk Entity . get High Price () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġk Entity Idx Ġ- Ġ 1 Ġdown To Ġmax ( 0 , Ġk Entity Idx Ġ- Ġn Ġ+ Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl Ġ= Ġmin ( l , Ġinput [ i ]. get Low Price ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh Ġ= Ġmax ( h , Ġinput [ i ]. get High Price ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( h Ġ== Ġl ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ k Idx ][ k Entity Idx ] Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ d Idx ][ k Entity Idx ] Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ j Idx ][ k Entity Idx ] Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ forEach Indexed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr sv Ġ= Ġ( c Ġ- Ġl ) Ġ/ Ġ( h Ġ- Ġl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpre K Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( k Entity Idx Ġ== Ġ 0 Ġ|| Ġresult [ k Idx ][ k Entity Idx Ġ- Ġ 1 ] Ġ== Ġnull ) Ġ 0 f Ġelse Ġresult [ k Idx ][ k Entity Idx ] !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk Ġ= Ġ( kn Ġ- Ġ 1 f ) Ġ/ Ġkn Ġ* Ġpre K Ġ+ Ġ 1 f Ġ/ Ġkn Ġ* Ġr sv ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpre D Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( k Entity Idx Ġ== Ġ 0 Ġ|| Ġresult [ d Idx ][ k Entity Idx Ġ- Ġ 1 ] Ġ== Ġnull ) Ġ 0 f Ġelse Ġresult [ d Idx ][ k Entity Idx ] !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġ( dn Ġ- Ġ 1 f ) Ġ/ Ġdn Ġ* Ġpre D Ġ+ Ġ 1 f Ġ/ Ġdn Ġ* Ġk ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġj Ġ= Ġ 3 f Ġ* Ġk Ġ- Ġ 2 f Ġ* Ġd ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ k Idx ][ k Entity Idx ] Ġ= Ġk ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ d Idx ][ k Entity Idx ] Ġ= Ġd ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult [ j Idx ][ k Entity Idx ] Ġ= Ġj ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ }