package Ġcom . api . utilities Ċ Ċ import Ġorg . apache . log 4 j . Log Manager Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Paths Ċ Ċ class ĠParse Json Data ( private Ġval ĠfilePath : ĠString ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġindex Deriv ative Data : ĠJSONObject ? Ġ= Ġparse JSON File ( filePath ) ĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLog Manager . getLogger ( Parse Json Data :: class . java ) ĊĊĠĠĠ Ġfun Ġget At The Money Price (): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġindex Deriv ative Data ?. getInt (" underlying Value ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġget Market Direction Deriv ative Data ( ĊĠĠĠĠĠĠĠ Ġoption Expiry : ĠString , ĊĠĠĠĠĠĠĠ Ġat he Money Value : ĠInt , ĊĠĠĠĠĠĠĠ Ġcall DataMap : ĠHashMap < Int , ĠMarket Direction Data >, ĊĠĠĠĠĠĠĠ Ġput DataMap : ĠHashMap < Int , ĠMarket Direction Data >, ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Deriv ative Data : ĠJSONObject ? Ġ= Ġparse JSON File ( filePath ) ĊĠĠĠĠĠĠĠ Ġval Ġjson Array Ġ= Ġindex Deriv ative Data ?. get JSONArray (" stocks ") Ġas ĠJSONArray ĊĠĠĠĠĠĠĠ Ġfor Ġ( value Ġin Ġjson Array ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( value Ġin Ġjson Array ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmetadata : ĠJSONObject Ġ= Ġvalue Ġas ĠJSONObject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmarket Dept Order Book Ġ= Ġmetadata . getJSONObject (" market Dept Order Book ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrade Info Ġ= Ġmarket Dept Order Book . getJSONObject (" trade Info ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġmetadata . getJSONObject (" metadata ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġdata [" expiry Date "]. equals ( option Expiry ) Ġ&& Ġdata [" option Type "]. equals (" Call ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġchange In Open Interest Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Stri ke Price : Int Ġ= Ġdata [" strike Price "] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key Stri ke Price Ġ!= Ġat he Money Value ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange In Open Interest Ġ= Ġtrade Info [" change in Open Interest "] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall DataMap [ key Stri ke Price ] Ġ= ĠMarket Direction Data ( change In Open Interest ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data [" expiry Date "]. equals ( option Expiry ) Ġ&& Ġdata [" option Type "]. equals (" Put ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Stri ke Price : Int Ġ= Ġdata [" strike Price "] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġchange In Open Interest Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key Stri ke Price Ġ!= Ġat he Money Value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange In Open Interest Ġ= Ġtrade Info [" change in Open Interest "] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput DataMap [ key Stri ke Price ] Ġ= ĠMarket Direction Data ( change In Open Interest ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlogger . debug (" call Ġmarket Ġdata Ġ: Ġ$ call DataMap ") ĊĠĠĠĠĠĠĠ Ġlogger . debug (" put Ġmarket Ġdata Ġ: Ġ$ put DataMap ") ĊĠĠĠ Ġ} ĊĠĠĠĠ Ġfun Ġget Deriv ative Data ( ĊĠĠĠĠĠĠĠ ĠfilePath : ĠString , ĊĠĠĠĠĠĠĠ Ġoption Expiry : ĠString , ĊĠĠĠĠĠĠĠ Ġstrike Price Array : ĠInt Array , ĊĠĠĠĠĠĠĠ Ġcall DataMap : ĠHashMap < Int , ĠDer iv ative Data >, ĊĠĠĠĠĠĠĠ Ġput DataMap : ĠHashMap < Int , ĠDer iv ative Data >, ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġindex Deriv ative Data : ĠJSONObject ? Ġ= Ġparse JSON File ( filePath ) ĊĠĠĠĠĠĠĠ Ġval Ġjson Array Ġ= Ġindex Deriv ative Data ?. get JSONArray (" stocks ") Ġas ĠJSONArray ĊĠĠĠĠĠĠĠ Ġfor Ġ( strike Price Ġin Ġstrike Price Array ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( strike Price ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Call Data Found Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġis Put Data Found Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( value Ġin Ġjson Array ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmetadata : ĠJSONObject Ġ= Ġvalue Ġas ĠJSONObject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmarket Dept Order Book Ġ= Ġmetadata . getJSONObject (" market Dept Order Book ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrade Info Ġ= Ġmarket Dept Order Book . getJSONObject (" trade Info ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġmetadata . getJSONObject (" metadata ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data [" strike Price "] Ġ== Ġstrike Price Ġ&& Ġdata [" expiry Date "]. equals ( option Expiry ) Ġ&& Ġdata [" option Type "]. equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Call " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall Volume Ġ= Ġdata [" numberOf Contracts Tr aded "] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Call ĠVolume Ġfor Ġ$ strike Price Ġstrike Price Ġ: Ġ$ call Volume ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġchange In Open Interest Ġ= Ġtrade Info [" change in Open Interest "] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall VW AP Ġ= Ġtrade Info [" v map "] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcall L TP Ġ= Ġdata [" last Price "] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcall VW AP Double : ĠBigDecimal Ġ= ĠBigDecimal . valueOf ( 0 . 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcall L TP Double : ĠBigDecimal Ġ= ĠBigDecimal . valueOf ( 0 . 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( call VW AP Ġis ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall VW AP Double Ġ= ĠBigDecimal . valueOf ( call VW AP . toInt () Ġ+ Ġ 0 . 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( call VW AP Ġis ĠBigDecimal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall VW AP Double Ġ= Ġcall VW AP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( call L TP Ġis ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall L TP Double Ġ= ĠBigDecimal . valueOf ( call L TP . toInt () Ġ+ Ġ 0 . 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( call L TP Ġis ĠBigDecimal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall L TP Double Ġ= Ġcall L TP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall DataMap [ strike Price ] Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDer iv ative Data ( call Volume , Ġchange In Open Interest , Ġcall VW AP Double , Ġcall L TP Double ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Call Data Found Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data [" strike Price "] Ġ== Ġstrike Price Ġ&& Ġdata [" expiry Date "]. equals ( option Expiry ) Ġ&& Ġdata [" option Type "]. equals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Put " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġput Volume Ġ= Ġdata [" numberOf Contracts Tr aded "] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" put ĠVolume Ġfor Ġ$ strike Price Ġstrike Price Ġ: Ġ$ put Volume ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchange In Open Interest Ġ= Ġtrade Info [" change in Open Interest "] Ġas ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġput VW AP Ġ= Ġtrade Info [" v map "] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġput VW AP Double : ĠBigDecimal Ġ= ĠBigDecimal . valueOf ( 0 . 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( put VW AP Ġis ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput VW AP Double Ġ= ĠBigDecimal . valueOf ( put VW AP . toInt () Ġ+ Ġ 0 . 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( put VW AP Ġis ĠBigDecimal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput VW AP Double Ġ= Ġput VW AP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġput L TP Ġ= Ġdata [" last Price "] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġput L TP Double : ĠBigDecimal Ġ= ĠBigDecimal . valueOf ( 0 . 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( put L TP Ġis ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput L TP Double Ġ= ĠBigDecimal . valueOf ( put L TP . toInt () Ġ+ Ġ 0 . 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( put L TP Ġis ĠBigDecimal ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput L TP Double Ġ= Ġput L TP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput DataMap [ strike Price ] Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDer iv ative Data ( put Volume , Ġchange In Open Interest , Ġput VW AP Double , Ġput L TP Double ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Put Data Found Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Call Data Found Ġ&& Ġis Put Data Found ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug ("$ strike Price Ġ: Ġcall Ġand Ġput ĠData ĠFound ") ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġlogger . debug (" Call Data Ġ: Ġ$ call DataMap ") ĊĠĠĠĠĠĠĠĠ Ġlogger . debug (" Put Data Ġ Ġ: Ġ$ put DataMap ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse JSON File ( filename : ĠString ): ĠJSONObject ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= ĠString ( Files . read All Bytes ( Paths . get ( filename ))) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJSONObject ( content ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" parse JSON File Ġ: Ġ ĠException Ġfound Ġwhile Ġreading ĠJSON Ġfile Ġ$ filename ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} Ċ }