package Ġcom . future . quote . ui . future info . charts Ċ Ċ import Ġandroid . graphics . Matrix Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġcom . f sh . common . util . Date Utils Ċ import Ġcom . f sh . common . widget . mp chart . chart listener . Co uple Chart Gesture Listener Ċ import Ġcom . future . quote . R Ċ import Ġcom . future . quote . enums . Future Chart Type Ċ import Ġcom . future . quote . model . Chart Entity Ċ import Ġcom . future . quote . model . Diff Entity Ċ import Ġcom . future . quote . model . K Line Entity Ċ import Ġcom . future . quote . service . Quote Parser Ċ import Ġcom . github . mike phil . chart ing . charts . Combined Chart Ċ import Ġcom . github . mike phil . chart ing . components . X Axis Ċ import Ġcom . github . mike phil . chart ing . components . Y Axis Ċ import Ġcom . github . mike phil . chart ing . data .* Ċ import Ġcom . github . mike phil . chart ing . interfaces . datasets . I Bar DataSet Ċ import Ġcom . github . mike phil . chart ing . interfaces . datasets . IC andle DataSet Ċ import Ġcom . github . mike phil . chart ing . interfaces . datasets . IL ine DataSet Ċ Ċ /** Ċ Ġ* ĠK çº¿ çķĮéĿ¢ Ċ Ġ*/ Ċ class ĠK Line Chart Fragment Ġ: ĠBase Charts Fragment (){ ĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( instrument Id : String , type : ĠFuture Chart Type ): K Line Chart Fragment { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠK Line Chart Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( INSTR UMENT _ ID , instrument Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Serializable ( CH ART TYPE , type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġsum Volume : Int Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġsum Price : Float Ġ= Ġ 0 F ĊĠĠĠ Ġprivate Ġvar Ġlast Index : Int Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġleft Index : Int Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġright Index : Int Ġ= - 1 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġc andle Data : IC andle DataSet ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġavg Line Data : IL ine DataSet ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġvol Bar Data : I Bar DataSet ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġo i Line Data : IL ine DataSet ĊĊĠĠĠ Ġoverride Ġfun Ġlayout Res (): ĠInt Ġ= ĠR . layout . quote _ fragment _ c andle _ chart ĊĊĠĠĠ Ġoverride Ġfun Ġinit Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init Views () ĊĠĠĠĠĠĠĠ Ġinit Chart Views () ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprivate Ġfun Ġinit Chart Views (){ ĊĠĠĠĠĠĠĠ Ġfirst Chart View . is Scale Y Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġfirst Chart View . draw Order Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCom bined Chart . Draw Order . C AND LE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCom bined Chart . Draw Order . LINE ĊĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠ Ġm K line Marker View Ġ= ĠK line Marker View ( activity ) Ċ // ĠĠĠĠĠĠĠ Ġm K line Marker View . set Chart View ( first Chart View ) Ċ // ĠĠĠĠĠĠĠ Ġfirst Chart View . set Marker ( m K line Marker View ) ĊĊĠĠĠĠĠĠĠ Ġfirst Chart View . set Draw B orders ( false ) Ċ // ĠĠĠĠĠĠĠ Ġfirst Chart View . set BorderColor ( m Color Grid ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbottom Axis Ġ= Ġfirst Chart View . xAxis ĊĠĠĠĠĠĠĠ Ġbottom Axis . position Ġ= ĠX Axis . X Axis Position . BOTTOM ĊĠĠĠĠĠĠĠ Ġbottom Axis . set Draw Grid Lines ( false ) ĊĠĠĠĠĠĠĠ Ġbottom Axis . set Draw Axis Line ( true ) ĊĠĠĠĠĠĠĠ Ġbottom Axis . set Draw Labels ( false ) ĊĠĠĠĠĠĠĠ Ġbottom Axis . enable Grid D ashed Line ( 3 F , Ġ 6 F , Ġ 0 F ) ĊĠĠĠĠĠĠĠ Ġbottom Axis . axis Line Color Ġ= Ġhighlight Color Ċ // ĠĠĠĠĠĠĠ Ġbottom Axis . set Grid Color ( m Color Grid ) ĊĊĠĠĠĠĠĠĠ Ġval Ġleft Axis Ġ= Ġfirst Chart View . axis Left ĊĠĠĠĠĠĠĠ Ġleft Axis . setPosition ( Y Axis . Y Axis Label Position . INS IDE _ CH ART ) ĊĠĠĠĠĠĠĠ Ġleft Axis . set Draw Grid Lines ( true ) ĊĠĠĠĠĠĠĠ Ġleft Axis . set Draw Axis Line ( false ) ĊĠĠĠĠĠĠĠ Ġleft Axis . space Bottom Ġ= Ġ 3 f ĊĠĠĠĠĠĠĠ Ġleft Axis . space Top Ġ= Ġ 3 f ĊĠĠĠĠĠĠĠ Ġleft Axis . enable Grid D ashed Line ( 3 F , Ġ 6 F , Ġ 0 F ) ĊĠĠĠĠĠĠĠ Ġleft Axis . grid Color Ġ= Ġhighlight Color ĊĠĠĠĠĠĠĠ Ġleft Axis . textColor Ġ= ĠtextColor ĊĠĠĠĠĠĠĠ Ġleft Axis . setLabel Count ( 6 , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġleft Axis . value Formatter Ġ= ĠChart View Y Axis Value Formatter ( price Tick ) ĊĊĠĠĠĠĠĠĠ Ġval Ġright Axis Ġ= Ġfirst Chart View . axis Right ĊĠĠĠĠĠĠĠ Ġright Axis . setPosition ( Y Axis . Y Axis Label Position . INS IDE _ CH ART ) ĊĠĠĠĠĠĠĠ Ġright Axis . set Draw Grid Lines ( true ) ĊĠĠĠĠĠĠĠ Ġright Axis . set Draw Axis Line ( false ) ĊĠĠĠĠĠĠĠ Ġright Axis . space Bottom Ġ= Ġ 3 f ĊĠĠĠĠĠĠĠ Ġright Axis . space Top Ġ= Ġ 3 f ĊĠĠĠĠĠĠĠ Ġright Axis . enable Grid D ashed Line ( 3 F , Ġ 6 F , Ġ 0 F ) ĊĠĠĠĠĠĠĠ Ġright Axis . grid Color Ġ= Ġhighlight Color ĊĠĠĠĠĠĠĠ Ġright Axis . textColor Ġ= ĠtextColor ĊĠĠĠĠĠĠĠ Ġright Axis . setLabel Count ( 6 , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġright Axis . value Formatter Ġ= ĠChart View Y Axis Value Formatter ( price Tick ) ĊĊĠĠĠĠĠĠĠ Ġsecond Chart View . is Scale Y Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġsecond Chart View . set Draw B orders ( false ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbottom Bottom Axis Ġ= Ġsecond Chart View . xAxis ĊĠĠĠĠĠĠĠ Ġbottom Bottom Axis . position Ġ= ĠX Axis . X Axis Position . BOTTOM ĊĠĠĠĠĠĠĠ Ġbottom Bottom Axis . set Draw Grid Lines ( true ) ĊĠĠĠĠĠĠĠ Ġbottom Bottom Axis . set Draw Axis Line ( true ) ĊĠĠĠĠĠĠĠ Ġbottom Bottom Axis . axis LineWidth Ġ= Ġ 0 . 7 f ĊĠĠĠĠĠĠĠ Ġbottom Bottom Axis . set Draw Labels ( true ) ĊĠĠĠĠĠĠĠ Ġbottom Bottom Axis . enable Grid D ashed Line ( 3 F , Ġ 6 F , Ġ 0 F ) ĊĠĠĠĠĠĠĠ Ġbottom Bottom Axis . grid Color Ġ= Ġhighlight Color ĊĠĠĠĠĠĠĠ Ġbottom Bottom Axis . axis Line Color Ġ= Ġhighlight Color ĊĠĠĠĠĠĠĠ Ġbottom Bottom Axis . textColor Ġ= ĠtextColor ĊĠĠĠĠĠĠĠ Ġbottom Bottom Axis . value Formatter Ġ= ĠC andle Chart View X Axis Value Formatter ( x Values ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbottom Left Axis Ġ= Ġsecond Chart View . axis Left ĊĠĠĠĠĠĠĠ Ġbottom Left Axis . setPosition ( Y Axis . Y Axis Label Position . INS IDE _ CH ART ) ĊĠĠĠĠĠĠĠ Ġbottom Left Axis . set Draw Grid Lines ( true ) ĊĠĠĠĠĠĠĠ Ġbottom Left Axis . set Draw Axis Line ( false ) ĊĠĠĠĠĠĠĠ Ġbottom Left Axis . enable Grid D ashed Line ( 3 F , Ġ 6 F , Ġ 0 F ) ĊĠĠĠĠĠĠĠ Ġbottom Left Axis . grid Color Ġ= Ġhighlight Color ĊĠĠĠĠĠĠĠ Ġbottom Left Axis . textColor Ġ= ĠtextColor ĊĠĠĠĠĠĠĠ Ġbottom Left Axis . setLabel Count ( 4 , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġbottom Left Axis . value Formatter Ġ= ĠChart View Y Axis Value Formatter ( price Tick ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbottom Right Axis Ġ= Ġsecond Chart View . axis Right ĊĠĠĠĠĠĠĠ Ġbottom Right Axis . set Draw Labels ( false ) ĊĠĠĠĠĠĠĠ Ġbottom Right Axis . set Draw Axis Line ( false ) ĊĠĠĠĠĠĠĠ Ġbottom Right Axis . set Draw Grid Lines ( false ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġå°Ĩ K çº¿ æİ§ çļĦ æ»ĳ åĬ¨ äºĭä»¶ ä¼łéĢĴ ç»Ļ äº¤æĺĵ éĩı æİ§ä»¶ ĊĠĠĠĠĠĠĠ Ġfirst Chart View . on Chart Gesture Listener Ġ= ĠCo uple Chart Gesture Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Chart View , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray ListOf ( first Chart View , Ġsecond Chart View ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġsecond Chart View . on Chart Gesture Listener Ġ= ĠCo uple Chart Gesture Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Chart View , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray ListOf ( first Chart View , Ġsecond Chart View ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfirst Chart View . setView Port Offsets ( 0 F , Ġ 0 F , Ġ 0 F , Ġ 1 F ) ĊĠĠĠĠĠĠĠ Ġsecond Chart View . setView Port Offsets ( 0 F , Ġ 0 F , Ġ 0 F , Ġ 3 0 F ) ĊĠĠĠĠĠĠĠ Ġval Ġscale X Ġ= Ġ 2 . 4 F ĊĠĠĠĠĠĠĠ Ġval Ġtop Vals Ġ= ĠFloat Array ( 9 ) ĊĠĠĠĠĠĠĠ Ġval Ġmiddle Vals Ġ= ĠFloat Array ( 9 ) ĊĠĠĠĠĠĠĠ Ġval Ġbottom Vals Ġ= ĠFloat Array ( 9 ) ĊĠĠĠĠĠĠĠ Ġval Ġtop Matrix Ġ= Ġfirst Chart View . view Port Handler . matrix Touch ĊĠĠĠĠĠĠĠ Ġval Ġmiddle Matrix Ġ= Ġsecond Chart View . view Port Handler . matrix Touch ĊĠĠĠĠĠĠĠ Ġtop Matrix . getValues ( top Vals ) ĊĠĠĠĠĠĠĠ Ġmiddle Matrix . getValues ( middle Vals ) ĊĊĠĠĠĠĠĠĠ Ġtop Vals [ Matrix . M SCALE _ X ] Ġ= Ġscale X ĊĠĠĠĠĠĠĠ Ġmiddle Vals [ Matrix . M SCALE _ X ] Ġ= Ġscale X ĊĠĠĠĠĠĠĠ Ġtop Matrix . set Values ( top Vals ) ĊĠĠĠĠĠĠĠ Ġmiddle Matrix . set Values ( middle Vals ) ĊĠĠĠĠĠĠĠ Ġfirst Chart View . view Port Handler . refresh ( top Matrix , Ġfirst Chart View , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġsecond Chart View . view Port Handler . refresh ( middle Matrix , Ġsecond Chart View , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdraw Chart Lines ( k Line Entity : ĠK Line Entity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchart Entity Ġ= ĠDiff Entity . get Chart Entity ( Quote Parser . JSON _ CH ART _ ID ) ĊĠĠĠĠĠĠĠ ĠLog . d (" K Line Chart Fragment "," draw Chart Lines Ġ$ instrument Id Ġ${ chart Type . duration } Ġ${ k Line Entity . k line Duration } Ġ${ k Line Entity . data . size }") ĊĠĠĠĠĠĠĠ Ġif ( first Chart View . data Ġ== Ġnull Ġ|| Ġfirst Chart View . data . all Data . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Init Charts ( k Line Entity , chart Entity ) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Update Charts ( k Line Entity , chart Entity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Init Charts ( k Line Entity : ĠK Line Entity , chart Entity : ĠChart Entity ){ ĊĠĠĠĠĠĠĠ Ġleft Index Ġ= Ġchart Entity . left _ id ĊĠĠĠĠĠĠĠ Ġright Index Ġ= Ġchart Entity . right _ id ĊĠĠĠĠĠĠĠ Ġif ( left Index Ġ== Ġ- 1 Ġ|| Ġright Index Ġ== Ġ- 1 ) Ġreturn ĊĠĠĠĠĠĠĠ Ġlast Index Ġ= Ġk Line Entity . last _ id ĊĠĠĠĠĠĠĠ Ġif ( last Index Ġ== Ġ- 1 ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġc andle Ent ies Ġ= ĠArrayList < C andle Entry >() ĊĠĠĠĠĠĠĠ Ġval Ġvol Entries Ġ= ĠArrayList < Bar Entry >() ĊĠĠĠĠĠĠĠ Ġval Ġo i Entries Ġ= ĠArrayList < Entry >() ĊĠĠĠĠĠĠĠ Ġval Ġavg Entries Ġ= ĠArrayList < Entry >() ĊĠĠĠĠĠĠĠ Ġfor ( index Ġin Ġleft Index Ġ.. Ġlast Index ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Entity Ġ= Ġk Line Entity . data [ index . toString ()] Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentries Ġ= Ġgenerate Multi Data Entries ( index , left Index , data Entity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc andle Ent ies . add ( entries [ 0 ] Ġas ĠC andle Entry ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġavg Entries . add ( entries [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġo i Entries . add ( entries [ 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvol Entries . add ( entries [ 3 ] Ġas ĠBar Entry ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġc andle Data Ġ= Ġgenerate C andle Data ( c andle Ent ies ) ĊĠĠĠĠĠĠĠ Ġavg Line Data Ġ= Ġgenerate Line DataSet ( avg Entries , color Avg Line ," avg Line Chart ", Y Axis . Axis Dependency . RIGHT ) ĊĠĠĠĠĠĠĠ Ġvol Bar Data Ġ= Ġgenerate Bar DataSet ( vol Entries ," vol Bar Chart ", Ġarray ListOf ( quote Green , quote Red ), true ) ĊĠĠĠĠĠĠĠ Ġo i Line Data Ġ= Ġgenerate Line DataSet ( oi Entries , color Avg Line ," oi Line Chart ", Y Axis . Axis Dependency . RIGHT ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfirst Chart Data Ġ= ĠCom bined Data (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetData ( C andle Data ( this @ K Line Chart Fragment . c andle Data )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetData ( Line Data ( avg Line Data )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsecond Chart Data Ġ= ĠCom bined Data (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetData ( Bar Data ( vol Bar Data ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbar Width Ġ= Ġ 0 . 0 1 F ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetData ( Line Data ( oi Line Data )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrefresh Legend ( last Index ) ĊĠĠĠĠĠĠĠ Ġfirst Chart View . data Ġ= Ġfirst Chart Data // å½ĵåīį å±ı å¹ķ ä¼ļ æĺ¾ç¤º æīĢæľī çļĦæķ°æį® ĊĠĠĠĠĠĠĠ Ġfirst Chart View . xAxis . axis Maximum Ġ= Ġfirst Chart Data . x Max Ġ+ Ġ 2 . 5 f ĊĠĠĠĠĠĠĠ Ġfirst Chart View . xAxis . axis Minimum Ġ= Ġfirst Chart Data . x Min Ġ- Ġ 0 . 5 f ĊĠĠĠĠĠĠĠ Ġfirst Chart View . setVisible X Range Minimum ( 1 0 F ) Ċ // ĠĠĠĠĠĠĠ Ġfirst Chart View . setVisible X Range Maximum ( 7 0 F ) ĊĊĊĠĠĠĠĠĠĠ Ġsecond Chart View . data Ġ= Ġsecond Chart Data // å½ĵåīį å±ı å¹ķ ä¼ļ æĺ¾ç¤º æīĢæľī çļĦæķ°æį® ĊĠĠĠĠĠĠĠ Ġsecond Chart View . xAxis . axis Maximum Ġ= Ġsecond Chart Data . x Max Ġ+ Ġ 2 . 5 f ĊĠĠĠĠĠĠĠ Ġsecond Chart View . xAxis . axis Minimum Ġ= Ġsecond Chart Data . x Min Ġ- Ġ 0 . 5 f ĊĠĠĠĠĠĠĠ Ġsecond Chart View . setVisible X Range Minimum ( 1 0 F ) Ċ // ĠĠĠĠĠĠĠ Ġsecond Chart View . setVisible X Range Maximum ( 7 0 F ) ĊĠĠĠĠĠĠĠ Ġfirst Chart View . post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Chart View . move View To X (( last Index Ġ- Ġleft Index ). toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Chart View . move View To X (( last Index Ġ- Ġleft Index ). toFloat ()) ĊĠĠĠĠĠĠĠ Ġ}, 3 0 0 ) ĊĠĠĠĠĠĠĠ ĠLog . d (" K Line Chart Fragment "," chart Ġview Ġmove Ġto Ġ${ ( last Index Ġ- Ġleft Index ). toFloat () }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Update Charts ( k Line Entity : ĠK Line Entity , Ġchart Entity : ĠChart Entity ){ ĊĠĠĠĠĠĠĠ Ġval Ġnew Left Id Ġ= Ġchart Entity . left _ id ĊĠĠĠĠĠĠĠ Ġval Ġnew Right Id Ġ= Ġchart Entity . right _ id ĊĠĠĠĠĠĠĠ Ġif ( new Left Id Ġ== Ġ- 1 Ġ|| Ġnew Right Id Ġ== Ġ- 1 ) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġnew Last Id Ġ= Ġk Line Entity . last _ id ĊĠĠĠĠĠĠĠ Ġif ( new Last Id Ġ== Ġ- 1 ) Ġreturn ĊĠĠĠĠĠĠĠ Ġ// æĸ°å¢ŀ æķ°æį® ĊĠĠĠĠĠĠĠ Ġif ( new Left Id Ġ>= Ġleft Index Ġ&& Ġnew Right Id Ġ>= Ġright Index ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( index Ġin Ġnew Last Id .. new Right Id ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Entity Ġ= Ġk Line Entity . data [ index . toString ()] ?: continue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( index Ġ== Ġlast Index ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsum Volume Ġ-= Ġdata Entity . volume ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsum Price Ġ-= Ġdata Entity . volume Ġ* Ġdata Entity . close ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsum Volume Ġ+= Ġdata Entity . volume ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsum Price Ġ+= Ġdata Entity . volume Ġ* Ġdata Entity . close ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġavg Price Ġ= Ġsum Price Ġ/ Ġsum Volume ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc andle Entry Ġ= Ġc andle Data . getEntry For Index ( c andle Data . entry Count - 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc andle Entry . close Ġ= Ġdata Entity . close ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc andle Entry . open Ġ= Ġdata Entity . open ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc andle Entry . high Ġ= Ġdata Entity . high ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc andle Entry . low Ġ= Ġdata Entity . low ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġavg Line Data . getEntry For Index ( avg Line Data . entry Count - 1 ). y Ġ= Ġavg Price ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvol Bar Data . getEntry For Index ( vol Bar Data . entry Count - 1 ). y Ġ= Ġdata Entity . volume . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvol Bar Data . getEntry For Index ( vol Bar Data . entry Count - 1 ). data Ġ= Ġdata Entity . open Ġ- Ġdata Entity . close ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo i Line Data . getEntry For Index ( oi Line Data . entry Count - 1 ). y Ġ= Ġdata Entity . close _ oi . toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentries Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Multi Data Entries ( index , Ġnew Left Id , Ġdata Entity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc andle Data . add Entry ( entries [ 0 ] Ġas ĠC andle Entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġavg Line Data . add Entry ( entries [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo i Line Data . add Entry ( entries [ 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvol Bar Data . add Entry ( entries [ 3 ] Ġas ĠBar Entry ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Index Ġ= Ġnew Left Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Index Ġ= Ġnew Right Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Index Ġ= Ġnew Last Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Chart View . data . notify Data Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Chart View . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Chart View . xAxis . axis Maximum Ġ= Ġfirst Chart View . data . x Max Ġ+ Ġ 2 . 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Chart View . xAxis . axis Minimum Ġ= Ġfirst Chart View . data . x Min Ġ- Ġ 0 . 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Chart View . invalidate () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Chart View . data . notify Data Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Chart View . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Chart View . xAxis . axis Maximum Ġ= Ġsecond Chart View . data . x Max Ġ+ Ġ 2 . 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Chart View . xAxis . axis Minimum Ġ= Ġsecond Chart View . data . x Min Ġ- Ġ 0 . 5 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Chart View . invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Legend ( last Index ) ĊĠĠĠĠĠĠĠ Ġ} else { // æĽ´å¤ļ åİĨåı² æķ°æį® ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Multi Data Entries ( index : Int , left Index : Int , data Entity : K Line Entity . Data Entity ): List < Entry >{ ĊĠĠĠĠĠĠĠ Ġval Ġentries Ġ= ĠArrayList < Entry >() ĊĠĠĠĠĠĠĠ Ġsum Volume Ġ+= Ġdata Entity . volume ĊĠĠĠĠĠĠĠ Ġsum Price Ġ+= Ġdata Entity . volume Ġ* Ġdata Entity . close ĊĠĠĠĠĠĠĠ Ġval Ġavg : Float Ġ= Ġif ( sum Volume Ġ== Ġ 0 ) Ġ 0 F Ġelse Ġsum Price / sum Volume ĊĠĠĠĠĠĠĠ Ġentries . add ( C andle Entry ( index . toFloat (), data Entity . high , data Entity . low , data Entity . open , data Entity . close )) ĊĠĠĠĠĠĠĠ Ġentries . add ( Entry ( index . toFloat (), avg )) ĊĠĠĠĠĠĠĠ Ġentries . add ( Entry ( index . toFloat (), data Entity . close _ oi . toFloat ())) ĊĠĠĠĠĠĠĠ Ġentries . add ( Bar Entry ( index . toFloat (), data Entity . volume . toFloat (), data Entity . open Ġ- Ġdata Entity . close )) ĊĠĠĠĠĠĠĠ Ġcalendar . time In Millis Ġ= Ġdata Entity . datetime Ġ/ Ġ 1 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġx Values . put ( index , Date Utils . format Date ( chart Type . pattern , calendar . time )) ĊĠĠĠĠĠĠĠ Ġreturn Ġentries ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate C andle Data ( entries : List < C andle Entry >): IC andle DataSet { ĊĠĠĠĠĠĠĠ Ġval ĠdataSet Ġ= ĠC andle DataSet ( entries ," ") ĊĠĠĠĠĠĠĠ ĠdataSet . axis Dependency Ġ= ĠY Axis . Axis Dependency . LEFT ĊĠĠĠĠĠĠĠ ĠdataSet . shadow Width Ġ= Ġ 0 . 7 F ĊĠĠĠĠĠĠĠ ĠdataSet . de creasing Color Ġ= Ġquote Green ĊĠĠĠĠĠĠĠ ĠdataSet . de creasing Paint Style Ġ= ĠPaint . Style . FILL ĊĠĠĠĠĠĠĠ ĠdataSet . in creasing Color Ġ= Ġquote Red ĊĠĠĠĠĠĠĠ ĠdataSet . in creasing Paint Style Ġ= ĠPaint . Style . ST RO KE ĊĠĠĠĠĠĠĠ ĠdataSet . neutral Color Ġ= Ġquote White ĊĠĠĠĠĠĠĠ ĠdataSet . shadow Color Same As C andle Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠdataSet . highlight LineWidth Ġ= Ġ 0 . 8 F ĊĠĠĠĠĠĠĠ ĠdataSet . high Light Color Ġ= Ġhighlight Color ĊĠĠĠĠĠĠĠ ĠdataSet . set Draw Values ( true ) ĊĠĠĠĠĠĠĠ ĠdataSet . value Text Size Ġ= Ġ 9 F ĊĠĠĠĠĠĠĠ ĠdataSet . value TextColor Ġ= Ġquote Red ĊĠĠĠĠĠĠĠ ĠdataSet . set Draw Icons ( false ) ĊĠĠĠĠĠĠĠ ĠdataSet . value Formatter Ġ= ĠChart View Y Axis Value Formatter ( price Tick ) ĊĠĠĠĠĠĠĠ Ġreturn ĠdataSet ĊĠĠĠ Ġ} Ċ }