package Ġir . ah mad mo . math . timeseries . trend Ċ Ċ import Ġorg . know m . x chart . Swing Wrapper Ċ import Ġorg . know m . x chart . XY Chart Builder Ċ import Ġorg . know m . x chart . style . St y ler Ċ import Ġorg . know m . x chart . style . markers . Series Markers Ċ import Ġkotlin . math . abs Ċ import Ġkotlin . math . min Ċ Ċ fun Ġmain () Ġ{ ĊĊĠĠĠ Ġval Ġtrend Ġ= Ġgenerate Random Trend ( size Ġ= Ġ 1 2 0 ) ĊĠĠĠ Ġval Ġsmoothing Factors Ġ= Ġdouble ArrayOf ( 0 . 0 1 , Ġ 0 . 0 2 , Ġ 0 . 0 5 , Ġ 0 . 1 , Ġ 0 . 1 5 , Ġ 0 . 2 5 ) ĊĊĠĠĠ Ġval Ġ( res istance , Ġsupport , Ġaverage ) Ġ= Ġtrend . linear Trend Lines ( smoothing Factors ) ĊĊĠĠĠ Ġval Ġresistance Data Ġ= ĠDouble Array ( trend . size , Ġresistance :: value ) ĊĠĠĠ Ġval Ġsupport Data Ġ= ĠDouble Array ( trend . size , Ġsupport :: value ) ĊĠĠĠ Ġval Ġaverage Data Ġ= ĠDouble Array ( trend . size , Ġaverage :: value ) ĊĊĠĠĠ Ġval Ġchart Ġ= ĠXY Chart Builder () ĊĠĠĠĠĠĠĠ Ġ. width ( 1 2 8 0 ). height ( 7 2 0 ) ĊĠĠĠĠĠĠĠ Ġ. theme ( St y ler . Chart Theme . Mat lab ) ĊĠĠĠĠĠĠĠ Ġ. title (" Trend ĠLines ") ĊĠĠĠĠĠĠĠ Ġ. xAxis Title (" Day "). yAxis Title (" Price ") ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġchart . sty ler . is Plot Grid Lines Visible Ġ= Ġfalse ĊĠĠĠ Ġchart . sty ler . xAxis Tick Mark Spacing Hint Ġ= Ġ 1 0 0 ĊĊĠĠĠ Ġval Ġx Data Ġ= ĠDouble Array ( trend . size , ĠInt :: toDouble ) ĊĊĠĠĠ Ġchart . add Series (" Trend ", Ġx Data , Ġtrend ) ĊĠĠĠ Ġchart . add Series (" Res istance ", Ġx Data , Ġresistance Data ) ĊĠĠĠ Ġchart . add Series (" Support ", Ġx Data , Ġsupport Data ) ĊĠĠĠ Ġchart . add Series (" Average ", Ġx Data , Ġaverage Data ) ĊĊĠĠĠ Ġchart . series Map . values . forEach Ġ{ Ġit . marker Ġ= ĠSeries Markers . NONE Ġ} ĊĊĠĠĠ ĠSw ing Wrapper ( chart ). display Chart () Ċ } Ċ Ċ fun Ġgenerate Random Trend ( size : ĠInt ): ĠT rend Ġ{ ĊĠĠĠ Ġval Ġtrend Ġ= ĠT rend ( size ) ĊĠĠĠ Ġvar Ġmin Ġ= ĠDouble . MAX _ VALUE ĊĠĠĠ Ġfor Ġ( x Ġin Ġtrend . indices . drop ( 1 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrend [ x ] Ġ= Ġtrend [ x Ġ- Ġ 1 ] Ġ+ ĠMath . random () Ġ- Ġ 0 . 5 ĊĠĠĠĠĠĠĠ Ġmin Ġ= Ġmin ( min , Ġtrend [ x ]) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġshift Ġ= Ġabs ( min ( min , Ġ 0 . 0 )) ĊĠĠĠ Ġreturn Ġif Ġ( shift Ġ== Ġ 0 . 0 ) Ġtrend ĊĠĠĠ Ġelse ĠT rend ( size ) Ġ{ Ġx Ġ-> Ġtrend [ x ] Ġ+ Ġshift Ġ} Ċ } Ċ