Repository: scsfwgy/FinancialCustomerView Branch: master Commit: f96935bffdf0 Files: 134 Total size: 808.8 KB Directory structure: gitextract_biu67knk/ ├── .gitignore ├── README.md ├── README_en.md ├── apk/ │ ├── v0.0.1_金融View正式版..apk │ ├── v1.3_分时图第五阶段支持缩放.apk │ ├── v1.4_蜡烛图(MA、BOLL).apk │ └── v1.5_主图副图组合图.apk ├── app/ │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── wgyscsf/ │ │ └── financialcustomerview/ │ │ └── ExampleInstrumentedTest.java │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── assets/ │ │ │ ├── fund.json │ │ │ ├── timesharing0.json │ │ │ ├── timesharing1.json │ │ │ ├── timesharing2.json │ │ │ ├── timesharing22.json │ │ │ ├── timesharing3.json │ │ │ └── timesharing_backup.json │ │ ├── java/ │ │ │ └── com/ │ │ │ └── tophold/ │ │ │ └── example/ │ │ │ ├── MainActivity.java │ │ │ ├── MyApplication.java │ │ │ ├── base/ │ │ │ │ ├── BaseActivity.java │ │ │ │ └── BaseFragment.java │ │ │ ├── demo/ │ │ │ │ ├── fund/ │ │ │ │ │ └── FundActivity.java │ │ │ │ ├── kview/ │ │ │ │ │ ├── KViewActivity.kt │ │ │ │ │ ├── beginner/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ ├── FundSimulateNetAPI.java │ │ │ │ │ │ │ └── KViewSimulateNetAPI.java │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ ├── OriginFundMode.java │ │ │ │ │ │ │ └── OriginQuotes.java │ │ │ │ │ │ └── ui/ │ │ │ │ │ │ ├── KViewHorizontalActivityActivity.java │ │ │ │ │ │ └── KViewVerticalActivity.java │ │ │ │ │ ├── btc/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ ├── GZipUtil.java │ │ │ │ │ │ │ ├── HttpCommonInterceptor.java │ │ │ │ │ │ │ ├── HuobiService.java │ │ │ │ │ │ │ ├── HuobiSocketApi.java │ │ │ │ │ │ │ ├── HuobiSocketParser.java │ │ │ │ │ │ │ ├── HuobiWebSocket.java │ │ │ │ │ │ │ └── RetrofitManager.java │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ ├── HuobiData.java │ │ │ │ │ │ │ ├── HuobiQuote.java │ │ │ │ │ │ │ ├── HuobiSymbol.java │ │ │ │ │ │ │ ├── HuobiTab.java │ │ │ │ │ │ │ └── HuobiWsQuote.java │ │ │ │ │ │ └── ui/ │ │ │ │ │ │ ├── HuobiActivity.java │ │ │ │ │ │ ├── HuobiAdapter.java │ │ │ │ │ │ ├── HuobiFragment.java │ │ │ │ │ │ └── HuobiListActivity.java │ │ │ │ │ └── forex/ │ │ │ │ │ ├── ForexTab.java │ │ │ │ │ ├── api/ │ │ │ │ │ │ ├── ForexWebSocket.java │ │ │ │ │ │ ├── HttpCommonInterceptor.java │ │ │ │ │ │ ├── RetrofitManager.java │ │ │ │ │ │ ├── WebSocketApi.java │ │ │ │ │ │ ├── WebSocketParser.java │ │ │ │ │ │ └── XcfdService.java │ │ │ │ │ ├── model/ │ │ │ │ │ │ ├── Forex.java │ │ │ │ │ │ ├── WsPrice.java │ │ │ │ │ │ └── XcfdQuotes.java │ │ │ │ │ └── ui/ │ │ │ │ │ ├── ForexActivity.java │ │ │ │ │ ├── ForexListActivity.java │ │ │ │ │ ├── KViewAdapter.java │ │ │ │ │ └── KViewFragment.java │ │ │ │ ├── pie/ │ │ │ │ │ └── PieChartActivity.kt │ │ │ │ └── seekbar/ │ │ │ │ └── DoubleThumbSeekBarActivity.kt │ │ │ └── utils/ │ │ │ ├── GsonUtil.java │ │ │ ├── NoScrollViewPager.java │ │ │ └── RxUtils.java │ │ └── res/ │ │ ├── drawable/ │ │ │ ├── layer_seekbar_thumb_green.xml │ │ │ └── layer_seekbar_thumb_red.xml │ │ ├── layout/ │ │ │ ├── activity_double_thumb_seek_bar.xml │ │ │ ├── activity_forex.xml │ │ │ ├── activity_forex_list.xml │ │ │ ├── activity_fund.xml │ │ │ ├── activity_huobi.xml │ │ │ ├── activity_huobi_list.xml │ │ │ ├── activity_kview.xml │ │ │ ├── activity_kview_horizontal.xml │ │ │ ├── activity_kview_vertical.xml │ │ │ ├── activity_main.xml │ │ │ ├── activity_pie_chart.xml │ │ │ ├── fragment_huobi.xml │ │ │ ├── fragment_kview.xml │ │ │ ├── item_activity_forex_list.xml │ │ │ └── item_activity_huobi_list.xml │ │ └── values/ │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test/ │ └── java/ │ └── wgyscsf/ │ └── financialcustomerview/ │ └── ExampleUnitTest.java ├── build.gradle ├── financiallib/ │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ ├── TODO.md │ │ └── com/ │ │ └── tophold/ │ │ └── trade/ │ │ ├── Constant.java │ │ ├── utils/ │ │ │ ├── FormatUtil.java │ │ │ ├── GsonUtil.java │ │ │ ├── RegxUtils.java │ │ │ ├── RenderUtils.java │ │ │ ├── ScreenUtils.java │ │ │ ├── StringUtils.java │ │ │ ├── TimeConstants.java │ │ │ └── TimeUtils.java │ │ └── view/ │ │ ├── BaseView.java │ │ ├── fund/ │ │ │ ├── FundMode.java │ │ │ └── FundView.java │ │ ├── kview/ │ │ │ ├── FinancialAlgorithm.java │ │ │ ├── KBaseView.java │ │ │ ├── KLayoutView.java │ │ │ ├── KView.java │ │ │ ├── KViewListener.java │ │ │ ├── KViewType.java │ │ │ ├── MasterView.java │ │ │ ├── MinorView.java │ │ │ ├── Quotes.java │ │ │ ├── VolModel.java │ │ │ └── VolView.java │ │ ├── pie/ │ │ │ ├── PieChartAnimation.java │ │ │ ├── PieChartView.java │ │ │ └── PieEntrys.java │ │ └── seekbar/ │ │ ├── DoubleThumbSeekBar.java │ │ └── DoubleTumb.java │ └── res/ │ └── values/ │ ├── colors.xml │ └── strings.xml ├── gradle.properties ├── key/ │ └── financial.jks ├── settings.gradle └── 资料与文档/ ├── 如何实现一个商业应用级K线图.key ├── 如何实现一个商业应用级K线图.pptx ├── 效果图和进度.md ├── 整理的指标算法.md ├── 金融类自定义View(一)--仿蚂蚁财富基金收益曲线图.md ├── 金融类自定义View(三)--股票分时图(关于细节和实现思路).md ├── 金融类自定义View(二)--股票分时图.md └── 金融类自定义View(四)--股票蜡烛图以及MA、BOLL指标.md ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ #---------以下为通用配置BEGIN------ # 操作系统忽略文件 # OSX *.DS_Store # Windows thumbnail db Thumbs.db ## AndroidStudio IDE忽略文件 # Intellij *.iml .idea/ # Android Studio captures folder captures/ # Android Studio Navigation editor temp files .navigation/ ## gradle忽略文件 # Gradle files .gradle/ gradle/ gradlew gradlew.bat ## sdk配置文件 # Local configuration file (sdk path, etc) local.properties ## 编译生成的文件 # Generated files bin/ gen/ out/ build/ *.dex ## *.apk *.ap_ *.class ## 日志文件 # Log Files *.log #---------以上为通用配置END-------- #--------- 根据需求个性化配置--------- # Keystore files # *.jks ## 第三方 # bugly *.txt # note # .ignore不起作用解决方案 # git rm -r --cached . # git add . # git commit -m "update .ignore" ================================================ FILE: README.md ================================================ ## FinancialCustomerView * 本项目会对金融交易软件中存在的各种View进行模仿绘制 * 提供详细的实现思路 * 收集整理相关算法、文档以及专业资料 * 开源库不依赖第三方,继承系统View实现 * 提供完整Demo * [参考文档](https://github.com/Tophold/FinancialCustomerView/tree/master/%E8%B5%84%E6%96%99%E4%B8%8E%E6%96%87%E6%A1%A3) ## 号外 1. [MPAndroidChartWrapper](https://github.com/scsfwgy/MPAndroidChartWrapper)【开发完善中...】高度封装MPAndroidChart,提供开箱即用的MPAndroidChart。 两大原则:1.不修改MPAndroidChart源码,只继承封装原有功能实现扩展。2. 开箱即用。目标:可商用。 2. 商用k线图**推荐**使用[MPAndroidChartWrapper](https://github.com/scsfwgy/MPAndroidChartWrapper),让您几行代码实现一个商用级别k线图。 #### 目录 1. ``com.tophold.trade.view.fund.FundView`` 仿蚂蚁金服基金走势图 2. ``com.tophold.trade.view.kview.KView`` k线走势图 3. ``com.tophold.trade.view.pie.PieChartView`` 饼图 4. ``com.tophold.trade.view.seekbar.DoubleThumbSeekBar`` 双Thumb自定义进度条 #### com.tophold.trade.view.fund.FundView * 仿蚂蚁金服基金走势图,支持长按查看指定数据,可以据此扩展出各种简单的资金走势图。KView的思路来自于此。 ![](https://github.com/scsfwgy/FinancialCustomerView/raw/master/img/v1.1_img_nopress.png) ![](https://github.com/scsfwgy/FinancialCustomerView/raw/master/img/v1.1_img_press.png) #### com.tophold.trade.view.kview.KView * k线走势图,支持主图+副图+量图 * 主图支持缩放、长按十字、滑动等各种手势操作;支持显示最小、最大值;指标支持:ma、boll、ma+boll;图形类别支持分时图、蜡烛图 * 副图支持指标:macd、kdj、rsi * 量图支持:量、ma(5,10) * ![](https://raw.githubusercontent.com/Tophold/FinancialCustomerView/master/img/vol_huobi_eos.png) ![](https://raw.githubusercontent.com/Tophold/FinancialCustomerView/master/img/vol_huobi_eos_press.png) #### com.tophold.trade.view.pie.PieChartView * 饼图,加载动画、特定指示图 ![](https://camo.githubusercontent.com/d345e80888d09007764b575932a7ede0ba368953/687474703a2f2f6f373175686f6b67662e626b742e636c6f7564646e2e636f6d2f31353331383135393530313831372e6a7067) #### com.tophold.trade.view.seekbar.DoubleThumbSeekBar * 双Thumb自定义进度条,可以高度定制化 * 支持单、双thumb * 支持从左、右开始最小值(和滑动方向无关) * 两个thumb可以任意设置开始方向以及起始位置 * 支持数据回调 * 具体使用参看Demo ![](https://raw.githubusercontent.com/Tophold/FinancialCustomerView/master/img/DoubleThumbSeekBar.png) #### 其它 * [天厚投资](https://www.tophold.com/) * [MPAndroidChart](https://github.com/PhilJay/MPAndroidChart) ================================================ FILE: README_en.md ================================================ # FinancialCustomerView ## Introduce > This project will simulate the various views in financial transaction software, provide detailed implementation ideas, and collect relevant algorithms, documents and professional materials. ## Significance > May our developers to say, have very mature third party framework, why return to oneself to realize? * Knowing how to write and draw, it is more convenient to extend the third library graphics library. * Understand the principle of implementation, if the third parties can not achieve, you can write one in a leisurely way. * There are many kinds of algorithms and various indicators in financial transactions, but there are few related information on the Internet. I hope can give a little help to financial related developers. * Knowing it, knowing it is so. ## Demo * impression drawing:[impression drawing](https://github.com/scsfwgy/FinancialCustomerView/blob/master/%E8%B5%84%E6%96%99%E4%B8%8E%E6%96%87%E6%A1%A3/%E6%95%88%E6%9E%9C%E5%9B%BE%E5%92%8C%E8%BF%9B%E5%BA%A6.md) * demo apk:[demo_apk](https://github.com/scsfwgy/FinancialCustomerView/tree/master/apk) ## Reference material and blogs * reference material and blogs:[reference material and blogs](https://github.com/scsfwgy/FinancialCustomerView/tree/master/%E8%B5%84%E6%96%99%E4%B8%8E%E6%96%87%E6%A1%A3) ## Schedule * Completed:The FundView has developed in the master branch. * Completed:The TimeSharingView has developed in the master branch. * Completed:The CandleView(including MA、BOLL)has developed in the master branch. * Completed:The code refactoring has completed in the master branch. The code is refactoring in the later period. * being developed:The MinorView is being developed in the feature_minor branch. * plan:Verify the accuracy of the data (proofread data with On-line app). * plan:Test availability using open API in a real environment. * plan:Simulating real use,switching timesharing、5m、15m、30m、1h、1d、1w、1m。 ## Contribution * new branch,PR。 ## Famous third party graphic library * MPAndroidChart:[https://github.com/PhilJay/MPAndroidChart](https://github.com/PhilJay/MPAndroidChart) * AndroidCharts:[https://github.com/HackPlan/AndroidCharts](https://github.com/HackPlan/AndroidCharts) * Android-Charts:[https://github.com/limccn/Android-Charts](https://github.com/limccn/Android-Charts) ================================================ FILE: app/.gitignore ================================================ /build ================================================ FILE: app/build.gradle ================================================ apply plugin: 'com.android.application' /**获取git count HEAD,可以根据该值回退版本*/ def getMyVersionCode() { Process process = "git rev-list --count HEAD".execute() process.waitFor() int cccc = process.getText().toInteger() return cccc } android { compileSdkVersion 28 defaultConfig { applicationId "com.tophold.example" minSdkVersion 17 targetSdkVersion 28 versionCode getMyVersionCode() as int//查询versioncode即可找到对应git历史 versionName "0.0.1" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } signingConfigs { //debug模式下签名的设置,这里的配置主要用于脚本运行。对于采用图形界面构建测不起效。 debug { storeFile file(project.debug_storeFile) storePassword project.debug_storePassword keyAlias project.debug_keyAlias keyPassword project.debug_keyPassword v1SigningEnabled true v2SigningEnabled true } beta { storeFile file(project.debug_storeFile) storePassword project.debug_storePassword keyAlias project.debug_keyAlias keyPassword project.debug_keyPassword v1SigningEnabled true v2SigningEnabled true } release { storeFile file(project.release_storeFile) storePassword project.release_storePassword keyAlias project.release_keyAlias keyPassword project.release_keyPassword v1SigningEnabled true v2SigningEnabled true } } buildTypes { //平时开发使用 debug { // 显示Log buildConfigField "boolean", "LOG_DEBUG", "true" shrinkResources false minifyEnabled false zipAlignEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //versionName的后缀 versionNameSuffix "_debug" //appId后缀,加一个后缀保证各个版本(debug、beta、release可以共存) applicationIdSuffix ".debug" //签名选择 signingConfig signingConfigs.debug //动态修改应用的名字和图标 manifestPlaceholders = [app_names: "金融View_debug"] debuggable true } //内侧使用 beta { // 显示Log buildConfigField "boolean", "LOG_DEBUG", "true" shrinkResources false minifyEnabled false zipAlignEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //versionName的后缀 versionNameSuffix "_beta" //appId后缀 applicationIdSuffix ".beta" //签名选择 signingConfig signingConfigs.beta manifestPlaceholders = [app_names: "金融View_beta"] debuggable true } //正式版本 release { //不显示log信息 buildConfigField "boolean", "LOG_DEBUG", "false" // 移除无用的resource文件 shrinkResources true //混淆 minifyEnabled true //压缩 zipAlignEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //签名 signingConfig signingConfigs.release manifestPlaceholders = [app_names: "金融View"] debuggable true } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:support-v4:28.0.0' implementation 'com.android.support:recyclerview-v7:28.0.0' implementation 'com.android.support:design:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation project(path: ':financiallib') //rx2.0 implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' implementation 'io.reactivex.rxjava2:rxjava:2.2.8' //api implementation 'com.squareup.retrofit2:retrofit:2.5.0' implementation 'com.squareup.retrofit2:converter-gson:2.5.0' implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0' implementation 'com.squareup.okhttp3:okhttp:3.12.0' implementation 'com.squareup.okhttp3:logging-interceptor:3.11.0' /**https://github.com/CymChad/BaseRecyclerViewAdapterHelper:qucik recycle*/ implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.49' implementation 'org.greenrobot:eventbus:3.1.1' implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" } apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' ================================================ FILE: app/proguard-rules.pro ================================================ ###########################正文#################################### ##这里是APP默认的混淆配置规则,和第三方没有关系。 ##这里禁止配置个性化、第三方库的混淆配置。 ##应用第三方库混淆规则配置请配置在最下方"其它第三方"模块。 #指定代码的压缩级别 -optimizationpasses 5 #包明不混合大小写 -dontusemixedcaseclassnames #不去忽略非公共的库类 -dontskipnonpubliclibraryclasses #优化 不优化输入的类文件 -dontoptimize #预校验 -dontpreverify #混淆时是否记录日志 -verbose # 混淆时所采用的算法 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* #保护注解 -keepattributes *Annotation* # 保持哪些类不被混淆 -keep public class * extends android.app.Fragment -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class com.android.vending.licensing.ILicensingService #如果引用了v4或者v7包 -dontwarn android.support.** # support design #@link http://stackoverflow.com/a/31028536 -dontwarn android.support.design.** -keep class android.support.design.** { *; } -keep interface android.support.design.** { *; } -keep public class android.support.design.R$* { *; } #忽略警告 -ignorewarning ##记录生成的日志数据,gradle build时在本项目根目录输出## #apk 包内所有 class 的内部结构 -dump proguard/class_files.txt #未混淆的类和成员 -printseeds proguard/seeds.txt #列出从 apk 中删除的代码 -printusage proguard/unused.txt #混淆前后的映射 -printmapping proguard/mapping.txt #保持 native 方法不被混淆 -keepclasseswithmembernames class * { native ; } #保持自定义控件类不被混淆 -keepclasseswithmembers class * { public (android.content.Context, android.util.AttributeSet); } -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } -keep public class * extends android.view.View { public (android.content.Context); public (android.content.Context, android.util.AttributeSet); public (android.content.Context, android.util.AttributeSet, int); public void set*(...); } #保持 Parcelable 不被混淆 -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } #保持 Serializable 不被混淆 -keepnames class * implements java.io.Serializable #保持 Serializable 不被混淆并且enum 类也不被混淆 -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; !static !transient ; !private ; !private ; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } #保持枚举 enum 类不被混淆 -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keepclassmembers class * { public void *ButtonClicked(android.view.View); } #不混淆资源类 -keepclassmembers class **.R$* { public static ; } #避免混淆泛型 如果混淆报错建议关掉 -keepattributes Signature #移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用,这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制 #-assumenosideeffects class android.util.Log { # public static *** v(...); # public static *** i(...); # public static *** d(...); # public static *** w(...); # public static *** e(...); #} #################################################必备开发第三方################################ # UI相关 ## https://github.com/JakeWharton/butterknife:butterknife -keep class butterknife.** { *; } -dontwarn butterknife.internal.** -keep class **$$ViewBinder { *; } -keepclasseswithmembernames class * { @butterknife.* ; } -keepclasseswithmembernames class * { @butterknife.* ; } ## https://github.com/bumptech/glide:glide -keep public class * implements com.bumptech.glide.module.GlideModule -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { **[] $VALUES; public *; } ## https://github.com/CymChad/BaseRecyclerViewAdapterHelper:recycle封装 -keep class com.chad.library.adapter.** { *; } -keep public class * extends com.chad.library.adapter.base.BaseQuickAdapter -keep public class * extends com.chad.library.adapter.base.BaseViewHolder -keepclassmembers class **$** extends com.chad.library.adapter.base.BaseViewHolder { (...); } ## https://github.com/gyf-dev/ImmersionBarw:沉浸式*/ -keep class com.gyf.barlibrary.* {*;} # 数据相关 ## https://github.com/greenrobot/EventBus:EventBus3.0混淆配置 -keepattributes *Annotation* -keepclassmembers class ** { @org.greenrobot.eventbus.Subscribe ; } -keep enum org.greenrobot.eventbus.ThreadMode { *; } # Only required if you use AsyncExecutor -keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent { (java.lang.Throwable); } ## https://github.com/google/gson:gson -keepattributes Signature # Gson specific classes -keep class sun.misc.Unsafe { *; } # Application classes that will be serialized/deserialized over Gson -keep class com.google.gson.** { *; } -keep class com.google.gson.stream.** { *; } ## https://github.com/Blankj/AndroidUtilCode:安卓开发常用工具类 -keep class com.blankj.utilcode.** { *; } -keepclassmembers class com.blankj.utilcode.** { *; } -dontwarn com.blankj.utilcode.** # APP运维 #bugly -dontwarn com.tencent.bugly.** -keep public class com.tencent.bugly.**{*;} # Umeng -keepclassmembers class * { public (org.json.JSONObject); } -keep public class wgyscsf.quickapp.R$*{ public static final int *; } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } ## UmengPush -dontwarn com.taobao.** -dontwarn anet.channel.** -dontwarn anetwork.channel.** -dontwarn org.android.** -dontwarn org.apache.thrift.** -dontwarn com.xiaomi.** -dontwarn com.huawei.** -keepattributes *Annotation* -keep class com.taobao.** {*;} -keep class org.android.** {*;} -keep class anet.channel.** {*;} -keep class com.umeng.** {*;} -keep class com.xiaomi.** {*;} -keep class com.huawei.** {*;} -keep class org.apache.thrift.** {*;} -keep class com.alibaba.sdk.android.**{*;} -keep class com.ut.**{*;} -keep class com.ta.**{*;} -keep public class **.R$*{ public static final int *; } #(可选)避免Log打印输出 #-assumenosideeffects class android.util.Log { # public static *** v(...); # public static *** d(...); # public static *** i(...); # public static *** w(...); # } # rx -dontwarn javax.annotation.** -dontwarn javax.inject.** # OkHttp3 -dontwarn okhttp3.logging.** -keep class okhttp3.internal.**{*;} -dontwarn okio.** # Retrofit -dontwarn retrofit2.** -keep class retrofit2.** {*;} -keepattributes Signature -keepattributes Exceptions # RxJava RxAndroid -dontwarn sun.misc.** -keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* { long producerIndex; long consumerIndex; } -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef { rx.internal.util.atomic.LinkedQueueNode producerNode; } -keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef { rx.internal.util.atomic.LinkedQueueNode consumerNode; } #################################################其它第三方######################## ================================================ FILE: app/src/androidTest/java/wgyscsf/financialcustomerview/ExampleInstrumentedTest.java ================================================ package com.tophold.example; import android.content.Context; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; import static org.junit.Assert.*; /** * Instrumentation test, which will execute on an Android device. * * @see Testing documentation */ @RunWith(AndroidJUnit4.class) public class ExampleInstrumentedTest { @Test public void useAppContext() throws Exception { // Context of the app under test. Context appContext = InstrumentationRegistry.getTargetContext(); assertEquals("com.tophold.example", appContext.getPackageName()); } } ================================================ FILE: app/src/main/AndroidManifest.xml ================================================ ================================================ FILE: app/src/main/assets/fund.json ================================================ [ { "actual": "103", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "102", "historyId": 449366, "previous": "103", "revised": "", "timestamp": 1456213500 }, { "actual": "102", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "103", "historyId": 449367, "previous": "103", "revised": "101", "timestamp": 1458805500 }, { "actual": "105", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "101", "historyId": 449368, "previous": "102", "revised": "104", "timestamp": 1461221100 }, { "actual": "104", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "104", "historyId": 449369, "previous": "105", "revised": "", "timestamp": 1464072300 }, { "actual": "102", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "103", "historyId": 449370, "previous": "104", "revised": "", "timestamp": 1466664300 }, { "actual": "103", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "101", "historyId": 449371, "previous": "102", "revised": "", "timestamp": 1469083500 }, { "actual": "101", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "103", "historyId": 449372, "previous": "103", "revised": "", "timestamp": 1472107500 }, { "actual": "103", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "101", "historyId": 449373, "previous": "101", "revised": "", "timestamp": 1474526700 }, { "actual": "103", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "103", "historyId": 449374, "previous": "103", "revised": "102", "timestamp": 1477377900 }, { "actual": "102", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "102", "historyId": 449375, "previous": "103", "revised": "103", "timestamp": 1479973500 }, { "actual": "106", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "103", "historyId": 449376, "previous": "102", "revised": "", "timestamp": 1481874300 }, { "actual": "106", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "106", "historyId": 449377, "previous": "106", "revised": "", "timestamp": 1485330300 }, { "actual": "107", "createTime": "Apr 10, 2017 12:04:14 AM", "economicId": 518, "forecast": "106", "historyId": 449378, "previous": "106", "revised": "", "timestamp": 1487835900 }, { "actual": "105", "createTime": "Aug 8, 2017 12:35:07 AM", "economicId": 518, "forecast": "107", "historyId": 692633, "previous": "107", "revised": "104", "timestamp": 1490255100 }, { "actual": "108", "createTime": "Aug 8, 2017 12:35:07 AM", "economicId": 518, "forecast": "104", "historyId": 692634, "previous": "105", "revised": "104", "timestamp": 1493102700 }, { "actual": "109", "createTime": "Aug 8, 2017 12:35:07 AM", "economicId": 518, "forecast": "108", "historyId": 692635, "previous": "109", "revised": "", "timestamp": 1495521900 }, { "actual": "109", "createTime": "Aug 8, 2017 12:35:07 AM", "economicId": 518, "forecast": "109", "historyId": 692636, "previous": "109", "revised": "108", "timestamp": 1498113900 }, { "actual": "109", "createTime": "Aug 8, 2017 12:35:07 AM", "economicId": 518, "forecast": "108", "historyId": 692637, "previous": "109", "revised": "108", "timestamp": 1500965100 }, { "actual": "111", "createTime": "Aug 24, 2017 6:14:38 PM", "economicId": 518, "forecast": "108", "historyId": 696718, "previous": "108", "revised": "109", "timestamp": 1503557100 }, { "actual": "110", "createTime": "Oct 9, 2017 9:07:19 AM", "economicId": 518, "forecast": "", "historyId": 698671, "previous": "111", "revised": "", "timestamp": 1506408300 } ] ================================================ FILE: app/src/main/assets/timesharing0.json ================================================ [ { "c": "148.942", "h": "148.9445", "l": "148.9245", "o": "148.926", "t": "Nov 20, 2017 2:45:00 AM" }, { "c": "148.9105", "h": "148.9445", "l": "148.9075", "o": "148.942", "t": "Nov 20, 2017 2:46:00 AM" }, { "c": "148.9175", "h": "148.9175", "l": "148.878", "o": "148.906", "t": "Nov 20, 2017 2:47:00 AM" }, { "c": "148.9155", "h": "148.933", "l": "148.905", "o": "148.9175", "t": "Nov 20, 2017 2:48:00 AM" }, { "c": "148.9035", "h": "148.9195", "l": "148.8955", "o": "148.916", "t": "Nov 20, 2017 2:49:00 AM" }, { "c": "148.9045", "h": "148.9075", "l": "148.8975", "o": "148.9035", "t": "Nov 20, 2017 2:50:00 AM" }, { "c": "148.9", "h": "148.9045", "l": "148.9", "o": "148.9045", "t": "Nov 20, 2017 2:51:00 AM" }, { "c": "148.9025", "h": "148.908", "l": "148.8915", "o": "148.9005", "t": "Nov 20, 2017 2:52:00 AM" }, { "c": "148.926", "h": "148.926", "l": "148.9015", "o": "148.9015", "t": "Nov 20, 2017 2:53:00 AM" }, { "c": "148.9105", "h": "148.926", "l": "148.91", "o": "148.926", "t": "Nov 20, 2017 2:54:00 AM" }, { "c": "148.9265", "h": "148.941", "l": "148.91", "o": "148.91", "t": "Nov 20, 2017 2:55:00 AM" }, { "c": "148.933", "h": "148.9455", "l": "148.9255", "o": "148.9265", "t": "Nov 20, 2017 2:56:00 AM" }, { "c": "148.94", "h": "148.952", "l": "148.932", "o": "148.9325", "t": "Nov 20, 2017 2:57:00 AM" }, { "c": "148.9325", "h": "148.9465", "l": "148.928", "o": "148.94", "t": "Nov 20, 2017 2:58:00 AM" }, { "c": "148.937", "h": "148.9395", "l": "148.913", "o": "148.932", "t": "Nov 20, 2017 2:59:00 AM" }, { "c": "148.9635", "h": "148.9655", "l": "148.937", "o": "148.937", "t": "Nov 20, 2017 3:00:00 AM" }, { "c": "148.973", "h": "148.978", "l": "148.962", "o": "148.962", "t": "Nov 20, 2017 3:01:00 AM" }, { "c": "148.9725", "h": "148.976", "l": "148.966", "o": "148.9725", "t": "Nov 20, 2017 3:02:00 AM" }, { "c": "148.975", "h": "148.975", "l": "148.965", "o": "148.9725", "t": "Nov 20, 2017 3:03:00 AM" }, { "c": "149.0235", "h": "149.03", "l": "148.9635", "o": "148.976", "t": "Nov 20, 2017 3:04:00 AM" }, { "c": "148.972", "h": "149.093", "l": "148.9695", "o": "149.024", "t": "Nov 20, 2017 3:05:00 AM" }, { "c": "148.981", "h": "148.981", "l": "148.9615", "o": "148.973", "t": "Nov 20, 2017 3:06:00 AM" }, { "c": "148.9825", "h": "148.9885", "l": "148.9755", "o": "148.981", "t": "Nov 20, 2017 3:07:00 AM" }, { "c": "148.9695", "h": "148.994", "l": "148.9665", "o": "148.982", "t": "Nov 20, 2017 3:08:00 AM" }, { "c": "148.9675", "h": "148.9815", "l": "148.9635", "o": "148.97", "t": "Nov 20, 2017 3:09:00 AM" }, { "c": "149.0195", "h": "149.0215", "l": "148.963", "o": "148.9675", "t": "Nov 20, 2017 3:10:00 AM" }, { "c": "149.0355", "h": "149.0355", "l": "149.005", "o": "149.0185", "t": "Nov 20, 2017 3:11:00 AM" }, { "c": "149.03", "h": "149.0585", "l": "149.0285", "o": "149.036", "t": "Nov 20, 2017 3:12:00 AM" }, { "c": "149.02", "h": "149.0315", "l": "149.016", "o": "149.0295", "t": "Nov 20, 2017 3:13:00 AM" }, { "c": "149.0495", "h": "149.071", "l": "149.0195", "o": "149.0215", "t": "Nov 20, 2017 3:14:00 AM" }, { "c": "149.0655", "h": "149.0785", "l": "149.032", "o": "149.0505", "t": "Nov 20, 2017 3:15:00 AM" }, { "c": "149.065", "h": "149.0795", "l": "149.059", "o": "149.0655", "t": "Nov 20, 2017 3:16:00 AM" }, { "c": "149.0715", "h": "149.09", "l": "149.062", "o": "149.0645", "t": "Nov 20, 2017 3:17:00 AM" }, { "c": "149.078", "h": "149.0785", "l": "149.06", "o": "149.0715", "t": "Nov 20, 2017 3:18:00 AM" }, { "c": "149.0855", "h": "149.086", "l": "149.0755", "o": "149.0775", "t": "Nov 20, 2017 3:19:00 AM" }, { "c": "149.1735", "h": "149.1755", "l": "149.085", "o": "149.0855", "t": "Nov 20, 2017 3:20:00 AM" }, { "c": "149.147", "h": "149.178", "l": "149.103", "o": "149.1735", "t": "Nov 20, 2017 3:21:00 AM" }, { "c": "149.1395", "h": "149.149", "l": "149.1255", "o": "149.1465", "t": "Nov 20, 2017 3:22:00 AM" }, { "c": "149.1585", "h": "149.1775", "l": "149.1375", "o": "149.1385", "t": "Nov 20, 2017 3:23:00 AM" }, { "c": "149.157", "h": "149.1615", "l": "149.1475", "o": "149.1595", "t": "Nov 20, 2017 3:24:00 AM" }, { "c": "149.147", "h": "149.158", "l": "149.131", "o": "149.158", "t": "Nov 20, 2017 3:25:00 AM" }, { "c": "149.1485", "h": "149.157", "l": "149.145", "o": "149.147", "t": "Nov 20, 2017 3:26:00 AM" }, { "c": "149.165", "h": "149.171", "l": "149.1475", "o": "149.1485", "t": "Nov 20, 2017 3:27:00 AM" }, { "c": "149.178", "h": "149.1805", "l": "149.1635", "o": "149.1635", "t": "Nov 20, 2017 3:28:00 AM" }, { "c": "149.19", "h": "149.19", "l": "149.1745", "o": "149.178", "t": "Nov 20, 2017 3:29:00 AM" }, { "c": "149.1835", "h": "149.198", "l": "149.177", "o": "149.191", "t": "Nov 20, 2017 3:30:00 AM" }, { "c": "149.177", "h": "149.187", "l": "149.167", "o": "149.1835", "t": "Nov 20, 2017 3:31:00 AM" }, { "c": "149.1725", "h": "149.1855", "l": "149.1685", "o": "149.1775", "t": "Nov 20, 2017 3:32:00 AM" }, { "c": "149.193", "h": "149.195", "l": "149.168", "o": "149.1725", "t": "Nov 20, 2017 3:33:00 AM" }, { "c": "149.191", "h": "149.204", "l": "149.1825", "o": "149.1935", "t": "Nov 20, 2017 3:34:00 AM" }, { "c": "149.195", "h": "149.198", "l": "149.1825", "o": "149.1905", "t": "Nov 20, 2017 3:35:00 AM" }, { "c": "149.197", "h": "149.2395", "l": "149.193", "o": "149.196", "t": "Nov 20, 2017 3:36:00 AM" }, { "c": "149.2235", "h": "149.232", "l": "149.193", "o": "149.197", "t": "Nov 20, 2017 3:37:00 AM" }, { "c": "149.2065", "h": "149.2355", "l": "149.2065", "o": "149.224", "t": "Nov 20, 2017 3:38:00 AM" }, { "c": "149.2145", "h": "149.2185", "l": "149.2075", "o": "149.2075", "t": "Nov 20, 2017 3:39:00 AM" }, { "c": "149.2075", "h": "149.2145", "l": "149.2045", "o": "149.2145", "t": "Nov 20, 2017 3:40:00 AM" }, { "c": "149.1765", "h": "149.2125", "l": "149.1765", "o": "149.2085", "t": "Nov 20, 2017 3:41:00 AM" }, { "c": "149.171", "h": "149.189", "l": "149.1655", "o": "149.1775", "t": "Nov 20, 2017 3:42:00 AM" }, { "c": "149.183", "h": "149.188", "l": "149.165", "o": "149.171", "t": "Nov 20, 2017 3:43:00 AM" }, { "c": "149.181", "h": "149.1925", "l": "149.1685", "o": "149.183", "t": "Nov 20, 2017 3:44:00 AM" }, { "c": "149.1775", "h": "149.192", "l": "149.172", "o": "149.179", "t": "Nov 20, 2017 3:45:00 AM" }, { "c": "149.174", "h": "149.1805", "l": "149.1635", "o": "149.1765", "t": "Nov 20, 2017 3:46:00 AM" }, { "c": "149.17", "h": "149.1885", "l": "149.17", "o": "149.1745", "t": "Nov 20, 2017 3:47:00 AM" }, { "c": "149.1735", "h": "149.1805", "l": "149.166", "o": "149.1705", "t": "Nov 20, 2017 3:48:00 AM" }, { "c": "149.1815", "h": "149.1875", "l": "149.1735", "o": "149.1735", "t": "Nov 20, 2017 3:49:00 AM" }, { "c": "149.1585", "h": "149.181", "l": "149.1495", "o": "149.1805", "t": "Nov 20, 2017 3:50:00 AM" }, { "c": "149.1465", "h": "149.162", "l": "149.1455", "o": "149.158", "t": "Nov 20, 2017 3:51:00 AM" }, { "c": "149.1545", "h": "149.1625", "l": "149.141", "o": "149.147", "t": "Nov 20, 2017 3:52:00 AM" }, { "c": "149.1405", "h": "149.163", "l": "149.137", "o": "149.1545", "t": "Nov 20, 2017 3:53:00 AM" }, { "c": "149.148", "h": "149.1505", "l": "149.137", "o": "149.1405", "t": "Nov 20, 2017 3:54:00 AM" }, { "c": "149.153", "h": "149.156", "l": "149.129", "o": "149.148", "t": "Nov 20, 2017 3:55:00 AM" }, { "c": "149.1375", "h": "149.154", "l": "149.1375", "o": "149.1535", "t": "Nov 20, 2017 3:56:00 AM" }, { "c": "149.163", "h": "149.163", "l": "149.1275", "o": "149.138", "t": "Nov 20, 2017 3:57:00 AM" }, { "c": "149.166", "h": "149.174", "l": "149.1495", "o": "149.163", "t": "Nov 20, 2017 3:58:00 AM" }, { "c": "149.1485", "h": "149.1775", "l": "149.1435", "o": "149.1655", "t": "Nov 20, 2017 3:59:00 AM" }, { "c": "149.1245", "h": "149.1515", "l": "149.1245", "o": "149.147", "t": "Nov 20, 2017 4:00:00 AM" }, { "c": "149.115", "h": "149.1295", "l": "149.115", "o": "149.1245", "t": "Nov 20, 2017 4:01:00 AM" }, { "c": "149.119", "h": "149.125", "l": "149.1145", "o": "149.116", "t": "Nov 20, 2017 4:02:00 AM" }, { "c": "149.1325", "h": "149.1325", "l": "149.11", "o": "149.1185", "t": "Nov 20, 2017 4:03:00 AM" }, { "c": "149.152", "h": "149.163", "l": "149.1325", "o": "149.1325", "t": "Nov 20, 2017 4:04:00 AM" }, { "c": "149.161", "h": "149.164", "l": "149.152", "o": "149.152", "t": "Nov 20, 2017 4:05:00 AM" }, { "c": "149.1595", "h": "149.169", "l": "149.1585", "o": "149.1615", "t": "Nov 20, 2017 4:06:00 AM" }, { "c": "149.1475", "h": "149.166", "l": "149.144", "o": "149.1595", "t": "Nov 20, 2017 4:07:00 AM" }, { "c": "149.1455", "h": "149.152", "l": "149.137", "o": "149.148", "t": "Nov 20, 2017 4:08:00 AM" }, { "c": "149.1375", "h": "149.1485", "l": "149.1345", "o": "149.147", "t": "Nov 20, 2017 4:09:00 AM" }, { "c": "149.1375", "h": "149.144", "l": "149.1265", "o": "149.137", "t": "Nov 20, 2017 4:10:00 AM" }, { "c": "149.1485", "h": "149.152", "l": "149.1365", "o": "149.138", "t": "Nov 20, 2017 4:11:00 AM" }, { "c": "149.1355", "h": "149.1475", "l": "149.133", "o": "149.1475", "t": "Nov 20, 2017 4:12:00 AM" }, { "c": "149.116", "h": "149.138", "l": "149.1155", "o": "149.1355", "t": "Nov 20, 2017 4:13:00 AM" }, { "c": "149.13", "h": "149.1315", "l": "149.1155", "o": "149.1165", "t": "Nov 20, 2017 4:14:00 AM" }, { "c": "149.124", "h": "149.13", "l": "149.1195", "o": "149.1295", "t": "Nov 20, 2017 4:15:00 AM" }, { "c": "149.1265", "h": "149.1285", "l": "149.1245", "o": "149.1245", "t": "Nov 20, 2017 4:16:00 AM" }, { "c": "149.123", "h": "149.1315", "l": "149.112", "o": "149.128", "t": "Nov 20, 2017 4:17:00 AM" }, { "c": "149.115", "h": "149.126", "l": "149.109", "o": "149.1225", "t": "Nov 20, 2017 4:18:00 AM" }, { "c": "149.1125", "h": "149.123", "l": "149.11", "o": "149.1145", "t": "Nov 20, 2017 4:19:00 AM" }, { "c": "149.1145", "h": "149.117", "l": "149.1065", "o": "149.112", "t": "Nov 20, 2017 4:20:00 AM" }, { "c": "149.106", "h": "149.115", "l": "149.1045", "o": "149.114", "t": "Nov 20, 2017 4:21:00 AM" }, { "c": "149.0965", "h": "149.105", "l": "149.094", "o": "149.1045", "t": "Nov 20, 2017 4:22:00 AM" }, { "c": "149.1195", "h": "149.1195", "l": "149.095", "o": "149.0965", "t": "Nov 20, 2017 4:23:00 AM" }, { "c": "149.123", "h": "149.1305", "l": "149.115", "o": "149.119", "t": "Nov 20, 2017 4:24:00 AM" }, { "c": "149.134", "h": "149.1355", "l": "149.1215", "o": "149.122", "t": "Nov 20, 2017 4:25:00 AM" }, { "c": "149.1215", "h": "149.137", "l": "149.12", "o": "149.134", "t": "Nov 20, 2017 4:26:00 AM" }, { "c": "149.1335", "h": "149.137", "l": "149.118", "o": "149.1205", "t": "Nov 20, 2017 4:27:00 AM" }, { "c": "149.144", "h": "149.1525", "l": "149.134", "o": "149.134", "t": "Nov 20, 2017 4:28:00 AM" }, { "c": "149.1435", "h": "149.1585", "l": "149.1425", "o": "149.1445", "t": "Nov 20, 2017 4:29:00 AM" }, { "c": "149.1455", "h": "149.151", "l": "149.136", "o": "149.1435", "t": "Nov 20, 2017 4:30:00 AM" }, { "c": "149.114", "h": "149.147", "l": "149.114", "o": "149.146", "t": "Nov 20, 2017 4:31:00 AM" }, { "c": "149.103", "h": "149.1155", "l": "149.1025", "o": "149.114", "t": "Nov 20, 2017 4:32:00 AM" }, { "c": "149.0985", "h": "149.1115", "l": "149.096", "o": "149.1035", "t": "Nov 20, 2017 4:33:00 AM" }, { "c": "149.0995", "h": "149.1005", "l": "149.0875", "o": "149.0975", "t": "Nov 20, 2017 4:34:00 AM" }, { "c": "149.088", "h": "149.0985", "l": "149.0845", "o": "149.0985", "t": "Nov 20, 2017 4:35:00 AM" }, { "c": "149.089", "h": "149.089", "l": "149.082", "o": "149.0875", "t": "Nov 20, 2017 4:36:00 AM" }, { "c": "149.085", "h": "149.095", "l": "149.0815", "o": "149.088", "t": "Nov 20, 2017 4:37:00 AM" }, { "c": "149.09", "h": "149.091", "l": "149.0745", "o": "149.0855", "t": "Nov 20, 2017 4:38:00 AM" }, { "c": "149.0945", "h": "149.0985", "l": "149.0875", "o": "149.09", "t": "Nov 20, 2017 4:39:00 AM" }, { "c": "149.098", "h": "149.099", "l": "149.0835", "o": "149.0945", "t": "Nov 20, 2017 4:40:00 AM" }, { "c": "149.0815", "h": "149.0995", "l": "149.0795", "o": "149.098", "t": "Nov 20, 2017 4:41:00 AM" }, { "c": "149.0875", "h": "149.092", "l": "149.08", "o": "149.0815", "t": "Nov 20, 2017 4:42:00 AM" }, { "c": "149.091", "h": "149.0965", "l": "149.0875", "o": "149.0875", "t": "Nov 20, 2017 4:43:00 AM" }, { "c": "149.0805", "h": "149.0925", "l": "149.079", "o": "149.0915", "t": "Nov 20, 2017 4:44:00 AM" }, { "c": "149.0745", "h": "149.081", "l": "149.0675", "o": "149.0795", "t": "Nov 20, 2017 4:45:00 AM" }, { "c": "149.0775", "h": "149.0785", "l": "149.0715", "o": "149.075", "t": "Nov 20, 2017 4:46:00 AM" }, { "c": "149.077", "h": "149.079", "l": "149.0765", "o": "149.078", "t": "Nov 20, 2017 4:47:00 AM" }, { "c": "149.0835", "h": "149.0835", "l": "149.077", "o": "149.0775", "t": "Nov 20, 2017 4:48:00 AM" }, { "c": "149.0765", "h": "149.083", "l": "149.073", "o": "149.083", "t": "Nov 20, 2017 4:49:00 AM" }, { "c": "149.069", "h": "149.078", "l": "149.0665", "o": "149.076", "t": "Nov 20, 2017 4:50:00 AM" }, { "c": "149.0715", "h": "149.076", "l": "149.0675", "o": "149.07", "t": "Nov 20, 2017 4:51:00 AM" }, { "c": "149.0735", "h": "149.076", "l": "149.064", "o": "149.0725", "t": "Nov 20, 2017 4:52:00 AM" }, { "c": "149.0675", "h": "149.0735", "l": "149.063", "o": "149.0715", "t": "Nov 20, 2017 4:53:00 AM" }, { "c": "149.0775", "h": "149.083", "l": "149.0655", "o": "149.067", "t": "Nov 20, 2017 4:54:00 AM" }, { "c": "149.079", "h": "149.081", "l": "149.0645", "o": "149.0775", "t": "Nov 20, 2017 4:55:00 AM" }, { "c": "149.066", "h": "149.0795", "l": "149.061", "o": "149.0785", "t": "Nov 20, 2017 4:56:00 AM" }, { "c": "149.048", "h": "149.0655", "l": "149.0445", "o": "149.065", "t": "Nov 20, 2017 4:57:00 AM" }, { "c": "149.0435", "h": "149.0615", "l": "149.0365", "o": "149.0485", "t": "Nov 20, 2017 4:58:00 AM" }, { "c": "149.031", "h": "149.0545", "l": "149.025", "o": "149.043", "t": "Nov 20, 2017 4:59:00 AM" }, { "c": "149.0095", "h": "149.0455", "l": "149.002", "o": "149.0305", "t": "Nov 20, 2017 5:00:00 AM" }, { "c": "149.007", "h": "149.015", "l": "149.0", "o": "149.01", "t": "Nov 20, 2017 5:01:00 AM" }, { "c": "149.0045", "h": "149.0095", "l": "149.0", "o": "149.008", "t": "Nov 20, 2017 5:02:00 AM" }, { "c": "148.997", "h": "149.0035", "l": "148.9915", "o": "149.0035", "t": "Nov 20, 2017 5:03:00 AM" }, { "c": "148.989", "h": "148.998", "l": "148.985", "o": "148.997", "t": "Nov 20, 2017 5:04:00 AM" }, { "c": "148.9855", "h": "149.0", "l": "148.9825", "o": "148.99", "t": "Nov 20, 2017 5:05:00 AM" }, { "c": "148.977", "h": "148.9935", "l": "148.974", "o": "148.986", "t": "Nov 20, 2017 5:06:00 AM" }, { "c": "148.97", "h": "148.9815", "l": "148.961", "o": "148.9765", "t": "Nov 20, 2017 5:07:00 AM" }, { "c": "148.9865", "h": "148.988", "l": "148.9675", "o": "148.9695", "t": "Nov 20, 2017 5:08:00 AM" }, { "c": "149.002", "h": "149.002", "l": "148.9855", "o": "148.9865", "t": "Nov 20, 2017 5:09:00 AM" }, { "c": "149.0085", "h": "149.014", "l": "148.9905", "o": "149.0025", "t": "Nov 20, 2017 5:10:00 AM" }, { "c": "149.007", "h": "149.0085", "l": "148.9965", "o": "149.0075", "t": "Nov 20, 2017 5:11:00 AM" }, { "c": "149.0185", "h": "149.0185", "l": "149.007", "o": "149.007", "t": "Nov 20, 2017 5:12:00 AM" }, { "c": "149.0165", "h": "149.0215", "l": "149.0135", "o": "149.0185", "t": "Nov 20, 2017 5:13:00 AM" }, { "c": "149.0305", "h": "149.033", "l": "149.0145", "o": "149.0175", "t": "Nov 20, 2017 5:14:00 AM" }, { "c": "149.0365", "h": "149.0375", "l": "149.0285", "o": "149.03", "t": "Nov 20, 2017 5:15:00 AM" }, { "c": "149.0395", "h": "149.04", "l": "149.033", "o": "149.0375", "t": "Nov 20, 2017 5:16:00 AM" }, { "c": "149.0405", "h": "149.047", "l": "149.0375", "o": "149.039", "t": "Nov 20, 2017 5:17:00 AM" }, { "c": "149.0455", "h": "149.051", "l": "149.038", "o": "149.0405", "t": "Nov 20, 2017 5:18:00 AM" }, { "c": "149.0535", "h": "149.0585", "l": "149.0455", "o": "149.0455", "t": "Nov 20, 2017 5:19:00 AM" }, { "c": "149.055", "h": "149.059", "l": "149.0445", "o": "149.0535", "t": "Nov 20, 2017 5:20:00 AM" }, { "c": "149.0625", "h": "149.0625", "l": "149.0455", "o": "149.055", "t": "Nov 20, 2017 5:21:00 AM" }, { "c": "149.051", "h": "149.064", "l": "149.0495", "o": "149.0635", "t": "Nov 20, 2017 5:22:00 AM" }, { "c": "149.064", "h": "149.064", "l": "149.0505", "o": "149.051", "t": "Nov 20, 2017 5:23:00 AM" }, { "c": "149.056", "h": "149.0645", "l": "149.046", "o": "149.0645", "t": "Nov 20, 2017 5:24:00 AM" }, { "c": "149.0645", "h": "149.0645", "l": "149.0535", "o": "149.056", "t": "Nov 20, 2017 5:25:00 AM" }, { "c": "149.076", "h": "149.077", "l": "149.063", "o": "149.063", "t": "Nov 20, 2017 5:26:00 AM" }, { "c": "149.0805", "h": "149.0805", "l": "149.0725", "o": "149.0755", "t": "Nov 20, 2017 5:27:00 AM" }, { "c": "149.085", "h": "149.087", "l": "149.08", "o": "149.081", "t": "Nov 20, 2017 5:28:00 AM" }, { "c": "149.087", "h": "149.091", "l": "149.0825", "o": "149.084", "t": "Nov 20, 2017 5:29:00 AM" }, { "c": "149.091", "h": "149.093", "l": "149.0805", "o": "149.086", "t": "Nov 20, 2017 5:30:00 AM" }, { "c": "149.0975", "h": "149.0975", "l": "149.087", "o": "149.0915", "t": "Nov 20, 2017 5:31:00 AM" }, { "c": "149.084", "h": "149.1015", "l": "149.0795", "o": "149.097", "t": "Nov 20, 2017 5:32:00 AM" }, { "c": "149.107", "h": "149.1095", "l": "149.0825", "o": "149.0835", "t": "Nov 20, 2017 5:33:00 AM" }, { "c": "149.1025", "h": "149.113", "l": "149.095", "o": "149.1055", "t": "Nov 20, 2017 5:34:00 AM" }, { "c": "149.096", "h": "149.1035", "l": "149.0935", "o": "149.103", "t": "Nov 20, 2017 5:35:00 AM" }, { "c": "149.0915", "h": "149.097", "l": "149.091", "o": "149.096", "t": "Nov 20, 2017 5:36:00 AM" }, { "c": "149.0855", "h": "149.093", "l": "149.0835", "o": "149.0925", "t": "Nov 20, 2017 5:37:00 AM" }, { "c": "149.0755", "h": "149.087", "l": "149.0675", "o": "149.0865", "t": "Nov 20, 2017 5:38:00 AM" }, { "c": "149.05", "h": "149.078", "l": "149.0495", "o": "149.0765", "t": "Nov 20, 2017 5:39:00 AM" }, { "c": "149.018", "h": "149.051", "l": "149.0155", "o": "149.0485", "t": "Nov 20, 2017 5:40:00 AM" }, { "c": "149.0365", "h": "149.037", "l": "149.0175", "o": "149.018", "t": "Nov 20, 2017 5:41:00 AM" }, { "c": "149.0525", "h": "149.0535", "l": "149.0375", "o": "149.0375", "t": "Nov 20, 2017 5:42:00 AM" }, { "c": "149.057", "h": "149.07", "l": "149.0535", "o": "149.0535", "t": "Nov 20, 2017 5:43:00 AM" }, { "c": "149.064", "h": "149.064", "l": "149.0535", "o": "149.0575", "t": "Nov 20, 2017 5:44:00 AM" }, { "c": "149.074", "h": "149.074", "l": "149.0655", "o": "149.0655", "t": "Nov 20, 2017 5:45:00 AM" }, { "c": "149.0775", "h": "149.084", "l": "149.0725", "o": "149.0735", "t": "Nov 20, 2017 5:46:00 AM" }, { "c": "149.0745", "h": "149.08", "l": "149.0745", "o": "149.0775", "t": "Nov 20, 2017 5:47:00 AM" }, { "c": "149.0685", "h": "149.0775", "l": "149.068", "o": "149.076", "t": "Nov 20, 2017 5:48:00 AM" }, { "c": "149.067", "h": "149.0685", "l": "149.066", "o": "149.067", "t": "Nov 20, 2017 5:49:00 AM" }, { "c": "149.045", "h": "149.073", "l": "149.0445", "o": "149.066", "t": "Nov 20, 2017 5:50:00 AM" }, { "c": "149.0235", "h": "149.046", "l": "149.0225", "o": "149.045", "t": "Nov 20, 2017 5:51:00 AM" }, { "c": "149.004", "h": "149.023", "l": "149.004", "o": "149.023", "t": "Nov 20, 2017 5:52:00 AM" }, { "c": "149.0175", "h": "149.022", "l": "149.0045", "o": "149.0045", "t": "Nov 20, 2017 5:53:00 AM" }, { "c": "149.011", "h": "149.0195", "l": "149.008", "o": "149.0175", "t": "Nov 20, 2017 5:54:00 AM" }, { "c": "149.009", "h": "149.0115", "l": "149.001", "o": "149.0115", "t": "Nov 20, 2017 5:55:00 AM" }, { "c": "149.001", "h": "149.0155", "l": "148.9975", "o": "149.007", "t": "Nov 20, 2017 5:56:00 AM" }, { "c": "149.0025", "h": "149.005", "l": "148.998", "o": "149.0025", "t": "Nov 20, 2017 5:57:00 AM" }, { "c": "149.041", "h": "149.0555", "l": "149.0025", "o": "149.0025", "t": "Nov 20, 2017 5:58:00 AM" }, { "c": "149.064", "h": "149.069", "l": "149.033", "o": "149.042", "t": "Nov 20, 2017 5:59:00 AM" }, { "c": "149.0405", "h": "149.0805", "l": "149.0405", "o": "149.0805", "t": "Nov 20, 2017 6:00:00 AM" }, { "c": "149.0395", "h": "149.0395", "l": "149.039", "o": "149.039", "t": "Nov 20, 2017 6:01:00 AM" }, { "c": "149.0415", "h": "149.0415", "l": "149.0355", "o": "149.04", "t": "Nov 20, 2017 6:02:00 AM" }, { "c": "149.0635", "h": "149.0635", "l": "149.0415", "o": "149.0415", "t": "Nov 20, 2017 6:03:00 AM" }, { "c": "149.104", "h": "149.1045", "l": "149.064", "o": "149.064", "t": "Nov 20, 2017 6:04:00 AM" }, { "c": "149.0915", "h": "149.105", "l": "149.0915", "o": "149.102", "t": "Nov 20, 2017 6:05:00 AM" }, { "c": "149.0815", "h": "149.0925", "l": "149.08", "o": "149.0925", "t": "Nov 20, 2017 6:06:00 AM" }, { "c": "149.0875", "h": "149.0885", "l": "149.082", "o": "149.082", "t": "Nov 20, 2017 6:07:00 AM" }, { "c": "149.0925", "h": "149.0925", "l": "149.0865", "o": "149.088", "t": "Nov 20, 2017 6:08:00 AM" }, { "c": "149.0915", "h": "149.093", "l": "149.0865", "o": "149.0915", "t": "Nov 20, 2017 6:09:00 AM" }, { "c": "149.0885", "h": "149.0945", "l": "149.087", "o": "149.0935", "t": "Nov 20, 2017 6:10:00 AM" }, { "c": "149.0965", "h": "149.0965", "l": "149.088", "o": "149.088", "t": "Nov 20, 2017 6:11:00 AM" }, { "c": "149.097", "h": "149.0975", "l": "149.0945", "o": "149.0975", "t": "Nov 20, 2017 6:12:00 AM" }, { "c": "149.0965", "h": "149.098", "l": "149.0965", "o": "149.097", "t": "Nov 20, 2017 6:13:00 AM" }, { "c": "149.0965", "h": "149.097", "l": "149.0965", "o": "149.097", "t": "Nov 20, 2017 6:14:00 AM" }, { "c": "149.096", "h": "149.0965", "l": "149.092", "o": "149.095", "t": "Nov 20, 2017 6:15:00 AM" }, { "c": "149.096", "h": "149.099", "l": "149.094", "o": "149.097", "t": "Nov 20, 2017 6:16:00 AM" }, { "c": "149.0915", "h": "149.0965", "l": "149.0875", "o": "149.0965", "t": "Nov 20, 2017 6:17:00 AM" }, { "c": "149.1015", "h": "149.102", "l": "149.0885", "o": "149.091", "t": "Nov 20, 2017 6:18:00 AM" }, { "c": "149.0955", "h": "149.107", "l": "149.0905", "o": "149.1005", "t": "Nov 20, 2017 6:19:00 AM" }, { "c": "149.0935", "h": "149.105", "l": "149.0905", "o": "149.0965", "t": "Nov 20, 2017 6:20:00 AM" }, { "c": "149.096", "h": "149.0975", "l": "149.094", "o": "149.0945", "t": "Nov 20, 2017 6:21:00 AM" }, { "c": "149.0925", "h": "149.096", "l": "149.0925", "o": "149.096", "t": "Nov 20, 2017 6:22:00 AM" }, { "c": "149.09", "h": "149.0915", "l": "149.0855", "o": "149.0915", "t": "Nov 20, 2017 6:23:00 AM" }, { "c": "149.0885", "h": "149.09", "l": "149.0865", "o": "149.0895", "t": "Nov 20, 2017 6:24:00 AM" }, { "c": "149.088", "h": "149.0925", "l": "149.087", "o": "149.0895", "t": "Nov 20, 2017 6:25:00 AM" }, { "c": "149.085", "h": "149.0875", "l": "149.084", "o": "149.0875", "t": "Nov 20, 2017 6:26:00 AM" }, { "c": "149.0775", "h": "149.0825", "l": "149.0635", "o": "149.0825", "t": "Nov 20, 2017 6:27:00 AM" }, { "c": "149.0845", "h": "149.0865", "l": "149.078", "o": "149.0795", "t": "Nov 20, 2017 6:28:00 AM" }, { "c": "149.065", "h": "149.0885", "l": "149.062", "o": "149.085", "t": "Nov 20, 2017 6:29:00 AM" }, { "c": "149.0625", "h": "149.065", "l": "149.052", "o": "149.065", "t": "Nov 20, 2017 6:30:00 AM" }, { "c": "149.0905", "h": "149.094", "l": "149.061", "o": "149.0625", "t": "Nov 20, 2017 6:31:00 AM" }, { "c": "149.086", "h": "149.0915", "l": "149.0805", "o": "149.0915", "t": "Nov 20, 2017 6:32:00 AM" }, { "c": "149.087", "h": "149.088", "l": "149.0845", "o": "149.086", "t": "Nov 20, 2017 6:33:00 AM" }, { "c": "149.089", "h": "149.0925", "l": "149.0875", "o": "149.088", "t": "Nov 20, 2017 6:34:00 AM" }, { "c": "149.0865", "h": "149.095", "l": "149.0845", "o": "149.0895", "t": "Nov 20, 2017 6:35:00 AM" }, { "c": "149.097", "h": "149.0975", "l": "149.0865", "o": "149.0865", "t": "Nov 20, 2017 6:36:00 AM" }, { "c": "149.091", "h": "149.098", "l": "149.0875", "o": "149.0975", "t": "Nov 20, 2017 6:37:00 AM" }, { "c": "149.0745", "h": "149.095", "l": "149.067", "o": "149.092", "t": "Nov 20, 2017 6:38:00 AM" }, { "c": "149.08", "h": "149.0815", "l": "149.074", "o": "149.074", "t": "Nov 20, 2017 6:39:00 AM" }, { "c": "149.0775", "h": "149.0835", "l": "149.0775", "o": "149.08", "t": "Nov 20, 2017 6:40:00 AM" }, { "c": "149.0785", "h": "149.08", "l": "149.0765", "o": "149.077", "t": "Nov 20, 2017 6:41:00 AM" }, { "c": "149.077", "h": "149.081", "l": "149.0765", "o": "149.08", "t": "Nov 20, 2017 6:42:00 AM" }, { "c": "149.0765", "h": "149.0785", "l": "149.076", "o": "149.0775", "t": "Nov 20, 2017 6:43:00 AM" }, { "c": "149.075", "h": "149.0765", "l": "149.0745", "o": "149.076", "t": "Nov 20, 2017 6:44:00 AM" }, { "c": "149.056", "h": "149.0745", "l": "149.053", "o": "149.0745", "t": "Nov 20, 2017 6:45:00 AM" }, { "c": "149.0375", "h": "149.0585", "l": "149.0355", "o": "149.0555", "t": "Nov 20, 2017 6:46:00 AM" }, { "c": "149.0415", "h": "149.0425", "l": "149.0385", "o": "149.0395", "t": "Nov 20, 2017 6:47:00 AM" }, { "c": "149.0445", "h": "149.045", "l": "149.04", "o": "149.04", "t": "Nov 20, 2017 6:48:00 AM" }, { "c": "149.059", "h": "149.06", "l": "149.045", "o": "149.0455", "t": "Nov 20, 2017 6:49:00 AM" }, { "c": "149.051", "h": "149.059", "l": "149.049", "o": "149.059", "t": "Nov 20, 2017 6:50:00 AM" }, { "c": "149.0525", "h": "149.054", "l": "149.05", "o": "149.0515", "t": "Nov 20, 2017 6:51:00 AM" }, { "c": "149.0395", "h": "149.052", "l": "149.0385", "o": "149.052", "t": "Nov 20, 2017 6:52:00 AM" }, { "c": "149.039", "h": "149.0475", "l": "149.0365", "o": "149.04", "t": "Nov 20, 2017 6:53:00 AM" }, { "c": "149.039", "h": "149.04", "l": "149.0385", "o": "149.039", "t": "Nov 20, 2017 6:54:00 AM" }, { "c": "149.0345", "h": "149.04", "l": "149.034", "o": "149.0385", "t": "Nov 20, 2017 6:55:00 AM" }, { "c": "149.0405", "h": "149.045", "l": "149.034", "o": "149.0345", "t": "Nov 20, 2017 6:56:00 AM" }, { "c": "149.0245", "h": "149.0425", "l": "149.022", "o": "149.0415", "t": "Nov 20, 2017 6:57:00 AM" }, { "c": "149.03", "h": "149.037", "l": "149.019", "o": "149.0235", "t": "Nov 20, 2017 6:58:00 AM" }, { "c": "149.0235", "h": "149.0285", "l": "149.015", "o": "149.0285", "t": "Nov 20, 2017 6:59:00 AM" }, { "c": "149.032", "h": "149.033", "l": "149.019", "o": "149.0235", "t": "Nov 20, 2017 7:00:00 AM" }, { "c": "149.025", "h": "149.035", "l": "149.022", "o": "149.031", "t": "Nov 20, 2017 7:01:00 AM" }, { "c": "149.0245", "h": "149.029", "l": "149.011", "o": "149.0245", "t": "Nov 20, 2017 7:02:00 AM" }, { "c": "149.019", "h": "149.029", "l": "149.0135", "o": "149.026", "t": "Nov 20, 2017 7:03:00 AM" }, { "c": "149.011", "h": "149.02", "l": "149.011", "o": "149.02", "t": "Nov 20, 2017 7:04:00 AM" }, { "c": "149.0035", "h": "149.0165", "l": "148.9985", "o": "149.012", "t": "Nov 20, 2017 7:05:00 AM" }, { "c": "149.012", "h": "149.012", "l": "148.9965", "o": "149.0045", "t": "Nov 20, 2017 7:06:00 AM" }, { "c": "148.989", "h": "149.014", "l": "148.987", "o": "149.0115", "t": "Nov 20, 2017 7:07:00 AM" }, { "c": "149.0215", "h": "149.0225", "l": "148.991", "o": "148.991", "t": "Nov 20, 2017 7:08:00 AM" }, { "c": "149.0195", "h": "149.024", "l": "149.019", "o": "149.019", "t": "Nov 20, 2017 7:09:00 AM" }, { "c": "149.024", "h": "149.0255", "l": "149.017", "o": "149.018", "t": "Nov 20, 2017 7:10:00 AM" }, { "c": "149.052", "h": "149.0535", "l": "149.02", "o": "149.0225", "t": "Nov 20, 2017 7:11:00 AM" }, { "c": "149.0485", "h": "149.0545", "l": "149.048", "o": "149.052", "t": "Nov 20, 2017 7:12:00 AM" }, { "c": "149.042", "h": "149.048", "l": "149.041", "o": "149.0445", "t": "Nov 20, 2017 7:13:00 AM" }, { "c": "149.039", "h": "149.043", "l": "149.0385", "o": "149.043", "t": "Nov 20, 2017 7:14:00 AM" }, { "c": "149.0335", "h": "149.0395", "l": "149.0305", "o": "149.039", "t": "Nov 20, 2017 7:15:00 AM" }, { "c": "149.0285", "h": "149.0335", "l": "149.027", "o": "149.0325", "t": "Nov 20, 2017 7:16:00 AM" }, { "c": "149.027", "h": "149.03", "l": "149.0225", "o": "149.0285", "t": "Nov 20, 2017 7:17:00 AM" }, { "c": "149.0295", "h": "149.03", "l": "149.019", "o": "149.0265", "t": "Nov 20, 2017 7:18:00 AM" }, { "c": "149.031", "h": "149.031", "l": "149.027", "o": "149.0295", "t": "Nov 20, 2017 7:19:00 AM" }, { "c": "149.028", "h": "149.031", "l": "149.028", "o": "149.029", "t": "Nov 20, 2017 7:20:00 AM" }, { "c": "149.0355", "h": "149.0375", "l": "149.0265", "o": "149.027", "t": "Nov 20, 2017 7:21:00 AM" }, { "c": "149.0355", "h": "149.043", "l": "149.0325", "o": "149.0345", "t": "Nov 20, 2017 7:22:00 AM" }, { "c": "149.0355", "h": "149.037", "l": "149.0285", "o": "149.037", "t": "Nov 20, 2017 7:23:00 AM" }, { "c": "149.033", "h": "149.0395", "l": "149.033", "o": "149.033", "t": "Nov 20, 2017 7:24:00 AM" }, { "c": "149.033", "h": "149.0335", "l": "149.03", "o": "149.033", "t": "Nov 20, 2017 7:25:00 AM" }, { "c": "149.033", "h": "149.0345", "l": "149.033", "o": "149.0345", "t": "Nov 20, 2017 7:26:00 AM" }, { "c": "149.0435", "h": "149.0435", "l": "149.032", "o": "149.0325", "t": "Nov 20, 2017 7:27:00 AM" }, { "c": "149.0465", "h": "149.05", "l": "149.0425", "o": "149.0445", "t": "Nov 20, 2017 7:28:00 AM" }, { "c": "149.0475", "h": "149.0485", "l": "149.0465", "o": "149.047", "t": "Nov 20, 2017 7:29:00 AM" }, { "c": "149.056", "h": "149.0595", "l": "149.048", "o": "149.048", "t": "Nov 20, 2017 7:30:00 AM" }, { "c": "149.0595", "h": "149.06", "l": "149.057", "o": "149.057", "t": "Nov 20, 2017 7:31:00 AM" }, { "c": "149.0605", "h": "149.0615", "l": "149.056", "o": "149.058", "t": "Nov 20, 2017 7:32:00 AM" }, { "c": "149.067", "h": "149.07", "l": "149.059", "o": "149.062", "t": "Nov 20, 2017 7:33:00 AM" }, { "c": "149.063", "h": "149.075", "l": "149.063", "o": "149.0675", "t": "Nov 20, 2017 7:34:00 AM" }, { "c": "149.062", "h": "149.065", "l": "149.0615", "o": "149.0635", "t": "Nov 20, 2017 7:35:00 AM" }, { "c": "149.0625", "h": "149.063", "l": "149.061", "o": "149.061", "t": "Nov 20, 2017 7:36:00 AM" }, { "c": "149.06", "h": "149.0625", "l": "149.056", "o": "149.062", "t": "Nov 20, 2017 7:37:00 AM" }, { "c": "149.085", "h": "149.085", "l": "149.059", "o": "149.059", "t": "Nov 20, 2017 7:38:00 AM" }, { "c": "149.0745", "h": "149.085", "l": "149.0745", "o": "149.085", "t": "Nov 20, 2017 7:39:00 AM" }, { "c": "149.0705", "h": "149.0735", "l": "149.0685", "o": "149.073", "t": "Nov 20, 2017 7:40:00 AM" }, { "c": "149.066", "h": "149.074", "l": "149.0635", "o": "149.07", "t": "Nov 20, 2017 7:41:00 AM" }, { "c": "149.077", "h": "149.077", "l": "149.058", "o": "149.0665", "t": "Nov 20, 2017 7:42:00 AM" }, { "c": "149.0705", "h": "149.0835", "l": "149.066", "o": "149.077", "t": "Nov 20, 2017 7:43:00 AM" }, { "c": "149.059", "h": "149.0775", "l": "149.058", "o": "149.071", "t": "Nov 20, 2017 7:44:00 AM" }, { "c": "149.077", "h": "149.08", "l": "149.052", "o": "149.0595", "t": "Nov 20, 2017 7:45:00 AM" }, { "c": "149.0605", "h": "149.077", "l": "149.0605", "o": "149.0765", "t": "Nov 20, 2017 7:46:00 AM" }, { "c": "149.044", "h": "149.0605", "l": "149.038", "o": "149.06", "t": "Nov 20, 2017 7:47:00 AM" }, { "c": "149.051", "h": "149.063", "l": "149.0445", "o": "149.0445", "t": "Nov 20, 2017 7:48:00 AM" }, { "c": "149.06", "h": "149.06", "l": "149.048", "o": "149.0505", "t": "Nov 20, 2017 7:49:00 AM" }, { "c": "149.058", "h": "149.0625", "l": "149.0565", "o": "149.059", "t": "Nov 20, 2017 7:50:00 AM" }, { "c": "149.0555", "h": "149.0615", "l": "149.0555", "o": "149.058", "t": "Nov 20, 2017 7:51:00 AM" }, { "c": "149.0125", "h": "149.056", "l": "149.0125", "o": "149.054", "t": "Nov 20, 2017 7:52:00 AM" }, { "c": "149.0165", "h": "149.02", "l": "149.0015", "o": "149.0135", "t": "Nov 20, 2017 7:53:00 AM" }, { "c": "149.026", "h": "149.0335", "l": "149.007", "o": "149.0145", "t": "Nov 20, 2017 7:54:00 AM" }, { "c": "149.03", "h": "149.0355", "l": "149.0235", "o": "149.0255", "t": "Nov 20, 2017 7:55:00 AM" }, { "c": "149.036", "h": "149.0495", "l": "149.0305", "o": "149.0305", "t": "Nov 20, 2017 7:56:00 AM" }, { "c": "149.041", "h": "149.042", "l": "149.036", "o": "149.0375", "t": "Nov 20, 2017 7:57:00 AM" }, { "c": "149.0435", "h": "149.0535", "l": "149.0405", "o": "149.042", "t": "Nov 20, 2017 7:58:00 AM" }, { "c": "149.048", "h": "149.052", "l": "149.043", "o": "149.045", "t": "Nov 20, 2017 7:59:00 AM" }, { "c": "149.042", "h": "149.0565", "l": "149.032", "o": "149.047", "t": "Nov 20, 2017 8:00:00 AM" }, { "c": "149.0855", "h": "149.096", "l": "149.036", "o": "149.0425", "t": "Nov 20, 2017 8:01:00 AM" }, { "c": "149.103", "h": "149.104", "l": "149.0795", "o": "149.086", "t": "Nov 20, 2017 8:02:00 AM" }, { "c": "149.1095", "h": "149.1155", "l": "149.083", "o": "149.104", "t": "Nov 20, 2017 8:03:00 AM" }, { "c": "149.126", "h": "149.1395", "l": "149.109", "o": "149.11", "t": "Nov 20, 2017 8:04:00 AM" }, { "c": "149.127", "h": "149.141", "l": "149.123", "o": "149.1255", "t": "Nov 20, 2017 8:05:00 AM" }, { "c": "149.1145", "h": "149.138", "l": "149.112", "o": "149.126", "t": "Nov 20, 2017 8:06:00 AM" }, { "c": "149.0845", "h": "149.1185", "l": "149.078", "o": "149.114", "t": "Nov 20, 2017 8:07:00 AM" }, { "c": "149.0825", "h": "149.0875", "l": "149.0775", "o": "149.083", "t": "Nov 20, 2017 8:08:00 AM" }, { "c": "149.074", "h": "149.0825", "l": "149.0665", "o": "149.0815", "t": "Nov 20, 2017 8:09:00 AM" }, { "c": "149.0545", "h": "149.076", "l": "149.0505", "o": "149.0745", "t": "Nov 20, 2017 8:10:00 AM" }, { "c": "149.0685", "h": "149.0695", "l": "149.0525", "o": "149.053", "t": "Nov 20, 2017 8:11:00 AM" }, { "c": "149.093", "h": "149.1025", "l": "149.063", "o": "149.068", "t": "Nov 20, 2017 8:12:00 AM" }, { "c": "149.116", "h": "149.1195", "l": "149.0935", "o": "149.0935", "t": "Nov 20, 2017 8:13:00 AM" }, { "c": "149.103", "h": "149.1155", "l": "149.103", "o": "149.1155", "t": "Nov 20, 2017 8:14:00 AM" }, { "c": "149.1065", "h": "149.124", "l": "149.099", "o": "149.1025", "t": "Nov 20, 2017 8:15:00 AM" }, { "c": "149.1125", "h": "149.1135", "l": "149.1005", "o": "149.1075", "t": "Nov 20, 2017 8:16:00 AM" }, { "c": "149.1295", "h": "149.136", "l": "149.1125", "o": "149.1125", "t": "Nov 20, 2017 8:17:00 AM" }, { "c": "149.135", "h": "149.1375", "l": "149.1225", "o": "149.1285", "t": "Nov 20, 2017 8:18:00 AM" }, { "c": "149.1375", "h": "149.1395", "l": "149.1325", "o": "149.135", "t": "Nov 20, 2017 8:19:00 AM" }, { "c": "149.1615", "h": "149.17", "l": "149.1375", "o": "149.1375", "t": "Nov 20, 2017 8:20:00 AM" }, { "c": "149.1415", "h": "149.173", "l": "149.141", "o": "149.162", "t": "Nov 20, 2017 8:21:00 AM" }, { "c": "149.147", "h": "149.153", "l": "149.137", "o": "149.1425", "t": "Nov 20, 2017 8:22:00 AM" }, { "c": "149.131", "h": "149.1465", "l": "149.126", "o": "149.1465", "t": "Nov 20, 2017 8:23:00 AM" }, { "c": "149.1325", "h": "149.1365", "l": "149.1245", "o": "149.13", "t": "Nov 20, 2017 8:24:00 AM" }, { "c": "149.1565", "h": "149.157", "l": "149.1335", "o": "149.1335", "t": "Nov 20, 2017 8:25:00 AM" }, { "c": "149.208", "h": "149.21", "l": "149.155", "o": "149.1555", "t": "Nov 20, 2017 8:26:00 AM" }, { "c": "149.198", "h": "149.218", "l": "149.1915", "o": "149.207", "t": "Nov 20, 2017 8:27:00 AM" }, { "c": "149.202", "h": "149.207", "l": "149.195", "o": "149.196", "t": "Nov 20, 2017 8:28:00 AM" }, { "c": "149.216", "h": "149.2235", "l": "149.191", "o": "149.2035", "t": "Nov 20, 2017 8:29:00 AM" }, { "c": "149.193", "h": "149.216", "l": "149.185", "o": "149.2145", "t": "Nov 20, 2017 8:30:00 AM" }, { "c": "149.1835", "h": "149.197", "l": "149.1835", "o": "149.193", "t": "Nov 20, 2017 8:31:00 AM" }, { "c": "149.1735", "h": "149.1905", "l": "149.1735", "o": "149.182", "t": "Nov 20, 2017 8:32:00 AM" }, { "c": "149.1755", "h": "149.1835", "l": "149.1705", "o": "149.174", "t": "Nov 20, 2017 8:33:00 AM" }, { "c": "149.1795", "h": "149.187", "l": "149.1715", "o": "149.1755", "t": "Nov 20, 2017 8:34:00 AM" }, { "c": "149.2055", "h": "149.209", "l": "149.1805", "o": "149.1805", "t": "Nov 20, 2017 8:35:00 AM" }, { "c": "149.194", "h": "149.2095", "l": "149.1925", "o": "149.2055", "t": "Nov 20, 2017 8:36:00 AM" }, { "c": "149.1955", "h": "149.2", "l": "149.1845", "o": "149.1935", "t": "Nov 20, 2017 8:37:00 AM" }, { "c": "149.1995", "h": "149.211", "l": "149.184", "o": "149.194", "t": "Nov 20, 2017 8:38:00 AM" }, { "c": "149.202", "h": "149.206", "l": "149.1905", "o": "149.199", "t": "Nov 20, 2017 8:39:00 AM" }, { "c": "149.184", "h": "149.2025", "l": "149.17", "o": "149.202", "t": "Nov 20, 2017 8:40:00 AM" }, { "c": "149.187", "h": "149.1945", "l": "149.174", "o": "149.1835", "t": "Nov 20, 2017 8:41:00 AM" } ] ================================================ FILE: app/src/main/assets/timesharing1.json ================================================ [ { "c": "148.942", "h": "148.9445", "l": "148.9245", "o": "148.926", "t": "Nov 21, 2017 2:45:00 AM" }, { "c": "148.9105", "h": "148.9445", "l": "148.9075", "o": "148.942", "t": "Nov 21, 2017 2:46:00 AM" }, { "c": "148.9175", "h": "148.9175", "l": "148.878", "o": "148.906", "t": "Nov 21, 2017 2:47:00 AM" }, { "c": "148.9155", "h": "148.933", "l": "148.905", "o": "148.9175", "t": "Nov 21, 2017 2:48:00 AM" }, { "c": "148.9035", "h": "148.9195", "l": "148.8955", "o": "148.916", "t": "Nov 21, 2017 2:49:00 AM" }, { "c": "148.9045", "h": "148.9075", "l": "148.8975", "o": "148.9035", "t": "Nov 21, 2017 2:50:00 AM" }, { "c": "148.9", "h": "148.9045", "l": "148.9", "o": "148.9045", "t": "Nov 21, 2017 2:51:00 AM" }, { "c": "148.9025", "h": "148.908", "l": "148.8915", "o": "148.9005", "t": "Nov 21, 2017 2:52:00 AM" }, { "c": "148.926", "h": "148.926", "l": "148.9015", "o": "148.9015", "t": "Nov 21, 2017 2:53:00 AM" }, { "c": "148.9105", "h": "148.926", "l": "148.91", "o": "148.926", "t": "Nov 21, 2017 2:54:00 AM" }, { "c": "148.9265", "h": "148.941", "l": "148.91", "o": "148.91", "t": "Nov 21, 2017 2:55:00 AM" }, { "c": "148.933", "h": "148.9455", "l": "148.9255", "o": "148.9265", "t": "Nov 21, 2017 2:56:00 AM" }, { "c": "148.94", "h": "148.952", "l": "148.932", "o": "148.9325", "t": "Nov 21, 2017 2:57:00 AM" }, { "c": "148.9325", "h": "148.9465", "l": "148.928", "o": "148.94", "t": "Nov 21, 2017 2:58:00 AM" }, { "c": "148.937", "h": "148.9395", "l": "148.913", "o": "148.932", "t": "Nov 21, 2017 2:59:00 AM" }, { "c": "148.9635", "h": "148.9655", "l": "148.937", "o": "148.937", "t": "Nov 21, 2017 3:00:00 AM" }, { "c": "148.973", "h": "148.978", "l": "148.962", "o": "148.962", "t": "Nov 21, 2017 3:01:00 AM" }, { "c": "148.9725", "h": "148.976", "l": "148.966", "o": "148.9725", "t": "Nov 21, 2017 3:02:00 AM" }, { "c": "148.975", "h": "148.975", "l": "148.965", "o": "148.9725", "t": "Nov 21, 2017 3:03:00 AM" }, { "c": "149.0235", "h": "149.03", "l": "148.9635", "o": "148.976", "t": "Nov 21, 2017 3:04:00 AM" }, { "c": "148.972", "h": "149.093", "l": "148.9695", "o": "149.024", "t": "Nov 21, 2017 3:05:00 AM" }, { "c": "148.981", "h": "148.981", "l": "148.9615", "o": "148.973", "t": "Nov 21, 2017 3:06:00 AM" }, { "c": "148.9825", "h": "148.9885", "l": "148.9755", "o": "148.981", "t": "Nov 21, 2017 3:07:00 AM" }, { "c": "148.9695", "h": "148.994", "l": "148.9665", "o": "148.982", "t": "Nov 21, 2017 3:08:00 AM" }, { "c": "148.9675", "h": "148.9815", "l": "148.9635", "o": "148.97", "t": "Nov 21, 2017 3:09:00 AM" }, { "c": "149.0195", "h": "149.0215", "l": "148.963", "o": "148.9675", "t": "Nov 21, 2017 3:10:00 AM" }, { "c": "149.0355", "h": "149.0355", "l": "149.005", "o": "149.0185", "t": "Nov 21, 2017 3:11:00 AM" }, { "c": "149.03", "h": "149.0585", "l": "149.0285", "o": "149.036", "t": "Nov 21, 2017 3:12:00 AM" }, { "c": "149.02", "h": "149.0315", "l": "149.016", "o": "149.0295", "t": "Nov 21, 2017 3:13:00 AM" }, { "c": "149.0495", "h": "149.071", "l": "149.0195", "o": "149.0215", "t": "Nov 21, 2017 3:14:00 AM" }, { "c": "149.0655", "h": "149.0785", "l": "149.032", "o": "149.0505", "t": "Nov 21, 2017 3:15:00 AM" }, { "c": "149.065", "h": "149.0795", "l": "149.059", "o": "149.0655", "t": "Nov 21, 2017 3:16:00 AM" }, { "c": "149.0715", "h": "149.09", "l": "149.062", "o": "149.0645", "t": "Nov 21, 2017 3:17:00 AM" }, { "c": "149.078", "h": "149.0785", "l": "149.06", "o": "149.0715", "t": "Nov 21, 2017 3:18:00 AM" }, { "c": "149.0855", "h": "149.086", "l": "149.0755", "o": "149.0775", "t": "Nov 21, 2017 3:19:00 AM" }, { "c": "149.1735", "h": "149.1755", "l": "149.085", "o": "149.0855", "t": "Nov 21, 2017 3:20:00 AM" }, { "c": "149.147", "h": "149.178", "l": "149.103", "o": "149.1735", "t": "Nov 21, 2017 3:21:00 AM" }, { "c": "149.1395", "h": "149.149", "l": "149.1255", "o": "149.1465", "t": "Nov 21, 2017 3:22:00 AM" }, { "c": "149.1585", "h": "149.1775", "l": "149.1375", "o": "149.1385", "t": "Nov 21, 2017 3:23:00 AM" }, { "c": "149.157", "h": "149.1615", "l": "149.1475", "o": "149.1595", "t": "Nov 21, 2017 3:24:00 AM" }, { "c": "149.147", "h": "149.158", "l": "149.131", "o": "149.158", "t": "Nov 21, 2017 3:25:00 AM" }, { "c": "149.1485", "h": "149.157", "l": "149.145", "o": "149.147", "t": "Nov 21, 2017 3:26:00 AM" }, { "c": "149.165", "h": "149.171", "l": "149.1475", "o": "149.1485", "t": "Nov 21, 2017 3:27:00 AM" }, { "c": "149.178", "h": "149.1805", "l": "149.1635", "o": "149.1635", "t": "Nov 21, 2017 3:28:00 AM" }, { "c": "149.19", "h": "149.19", "l": "149.1745", "o": "149.178", "t": "Nov 21, 2017 3:29:00 AM" }, { "c": "149.1835", "h": "149.198", "l": "149.177", "o": "149.191", "t": "Nov 21, 2017 3:30:00 AM" }, { "c": "149.177", "h": "149.187", "l": "149.167", "o": "149.1835", "t": "Nov 21, 2017 3:31:00 AM" }, { "c": "149.1725", "h": "149.1855", "l": "149.1685", "o": "149.1775", "t": "Nov 21, 2017 3:32:00 AM" }, { "c": "149.193", "h": "149.195", "l": "149.168", "o": "149.1725", "t": "Nov 21, 2017 3:33:00 AM" }, { "c": "149.191", "h": "149.204", "l": "149.1825", "o": "149.1935", "t": "Nov 21, 2017 3:34:00 AM" }, { "c": "149.195", "h": "149.198", "l": "149.1825", "o": "149.1905", "t": "Nov 21, 2017 3:35:00 AM" }, { "c": "149.197", "h": "149.2395", "l": "149.193", "o": "149.196", "t": "Nov 21, 2017 3:36:00 AM" }, { "c": "149.2235", "h": "149.232", "l": "149.193", "o": "149.197", "t": "Nov 21, 2017 3:37:00 AM" }, { "c": "149.2065", "h": "149.2355", "l": "149.2065", "o": "149.224", "t": "Nov 21, 2017 3:38:00 AM" }, { "c": "149.2145", "h": "149.2185", "l": "149.2075", "o": "149.2075", "t": "Nov 21, 2017 3:39:00 AM" }, { "c": "149.2075", "h": "149.2145", "l": "149.2045", "o": "149.2145", "t": "Nov 21, 2017 3:40:00 AM" }, { "c": "149.1765", "h": "149.2125", "l": "149.1765", "o": "149.2085", "t": "Nov 21, 2017 3:41:00 AM" }, { "c": "149.171", "h": "149.189", "l": "149.1655", "o": "149.1775", "t": "Nov 21, 2017 3:42:00 AM" }, { "c": "149.183", "h": "149.188", "l": "149.165", "o": "149.171", "t": "Nov 21, 2017 3:43:00 AM" }, { "c": "149.181", "h": "149.1925", "l": "149.1685", "o": "149.183", "t": "Nov 21, 2017 3:44:00 AM" }, { "c": "149.1775", "h": "149.192", "l": "149.172", "o": "149.179", "t": "Nov 21, 2017 3:45:00 AM" }, { "c": "149.174", "h": "149.1805", "l": "149.1635", "o": "149.1765", "t": "Nov 21, 2017 3:46:00 AM" }, { "c": "149.17", "h": "149.1885", "l": "149.17", "o": "149.1745", "t": "Nov 21, 2017 3:47:00 AM" }, { "c": "149.1735", "h": "149.1805", "l": "149.166", "o": "149.1705", "t": "Nov 21, 2017 3:48:00 AM" }, { "c": "149.1815", "h": "149.1875", "l": "149.1735", "o": "149.1735", "t": "Nov 21, 2017 3:49:00 AM" }, { "c": "149.1585", "h": "149.181", "l": "149.1495", "o": "149.1805", "t": "Nov 21, 2017 3:50:00 AM" }, { "c": "149.1465", "h": "149.162", "l": "149.1455", "o": "149.158", "t": "Nov 21, 2017 3:51:00 AM" }, { "c": "149.1545", "h": "149.1625", "l": "149.141", "o": "149.147", "t": "Nov 21, 2017 3:52:00 AM" }, { "c": "149.1405", "h": "149.163", "l": "149.137", "o": "149.1545", "t": "Nov 21, 2017 3:53:00 AM" }, { "c": "149.148", "h": "149.1505", "l": "149.137", "o": "149.1405", "t": "Nov 21, 2017 3:54:00 AM" }, { "c": "149.153", "h": "149.156", "l": "149.129", "o": "149.148", "t": "Nov 21, 2017 3:55:00 AM" }, { "c": "149.1375", "h": "149.154", "l": "149.1375", "o": "149.1535", "t": "Nov 21, 2017 3:56:00 AM" }, { "c": "149.163", "h": "149.163", "l": "149.1275", "o": "149.138", "t": "Nov 21, 2017 3:57:00 AM" }, { "c": "149.166", "h": "149.174", "l": "149.1495", "o": "149.163", "t": "Nov 21, 2017 3:58:00 AM" }, { "c": "149.1485", "h": "149.1775", "l": "149.1435", "o": "149.1655", "t": "Nov 21, 2017 3:59:00 AM" }, { "c": "149.1245", "h": "149.1515", "l": "149.1245", "o": "149.147", "t": "Nov 21, 2017 4:00:00 AM" }, { "c": "149.115", "h": "149.1295", "l": "149.115", "o": "149.1245", "t": "Nov 21, 2017 4:01:00 AM" }, { "c": "149.119", "h": "149.125", "l": "149.1145", "o": "149.116", "t": "Nov 21, 2017 4:02:00 AM" }, { "c": "149.1325", "h": "149.1325", "l": "149.11", "o": "149.1185", "t": "Nov 21, 2017 4:03:00 AM" }, { "c": "149.152", "h": "149.163", "l": "149.1325", "o": "149.1325", "t": "Nov 21, 2017 4:04:00 AM" }, { "c": "149.161", "h": "149.164", "l": "149.152", "o": "149.152", "t": "Nov 21, 2017 4:05:00 AM" }, { "c": "149.1595", "h": "149.169", "l": "149.1585", "o": "149.1615", "t": "Nov 21, 2017 4:06:00 AM" }, { "c": "149.1475", "h": "149.166", "l": "149.144", "o": "149.1595", "t": "Nov 21, 2017 4:07:00 AM" }, { "c": "149.1455", "h": "149.152", "l": "149.137", "o": "149.148", "t": "Nov 21, 2017 4:08:00 AM" }, { "c": "149.1375", "h": "149.1485", "l": "149.1345", "o": "149.147", "t": "Nov 21, 2017 4:09:00 AM" }, { "c": "149.1375", "h": "149.144", "l": "149.1265", "o": "149.137", "t": "Nov 21, 2017 4:10:00 AM" }, { "c": "149.1485", "h": "149.152", "l": "149.1365", "o": "149.138", "t": "Nov 21, 2017 4:11:00 AM" }, { "c": "149.1355", "h": "149.1475", "l": "149.133", "o": "149.1475", "t": "Nov 21, 2017 4:12:00 AM" }, { "c": "149.116", "h": "149.138", "l": "149.1155", "o": "149.1355", "t": "Nov 21, 2017 4:13:00 AM" }, { "c": "149.13", "h": "149.1315", "l": "149.1155", "o": "149.1165", "t": "Nov 21, 2017 4:14:00 AM" }, { "c": "149.124", "h": "149.13", "l": "149.1195", "o": "149.1295", "t": "Nov 21, 2017 4:15:00 AM" }, { "c": "149.1265", "h": "149.1285", "l": "149.1245", "o": "149.1245", "t": "Nov 21, 2017 4:16:00 AM" }, { "c": "149.123", "h": "149.1315", "l": "149.112", "o": "149.128", "t": "Nov 21, 2017 4:17:00 AM" }, { "c": "149.115", "h": "149.126", "l": "149.109", "o": "149.1225", "t": "Nov 21, 2017 4:18:00 AM" }, { "c": "149.1125", "h": "149.123", "l": "149.11", "o": "149.1145", "t": "Nov 21, 2017 4:19:00 AM" }, { "c": "149.1145", "h": "149.117", "l": "149.1065", "o": "149.112", "t": "Nov 21, 2017 4:20:00 AM" }, { "c": "149.106", "h": "149.115", "l": "149.1045", "o": "149.114", "t": "Nov 21, 2017 4:21:00 AM" }, { "c": "149.0965", "h": "149.105", "l": "149.094", "o": "149.1045", "t": "Nov 21, 2017 4:22:00 AM" }, { "c": "149.1195", "h": "149.1195", "l": "149.095", "o": "149.0965", "t": "Nov 21, 2017 4:23:00 AM" }, { "c": "149.123", "h": "149.1305", "l": "149.115", "o": "149.119", "t": "Nov 21, 2017 4:24:00 AM" }, { "c": "149.134", "h": "149.1355", "l": "149.1215", "o": "149.122", "t": "Nov 21, 2017 4:25:00 AM" }, { "c": "149.1215", "h": "149.137", "l": "149.12", "o": "149.134", "t": "Nov 21, 2017 4:26:00 AM" }, { "c": "149.1335", "h": "149.137", "l": "149.118", "o": "149.1205", "t": "Nov 21, 2017 4:27:00 AM" }, { "c": "149.144", "h": "149.1525", "l": "149.134", "o": "149.134", "t": "Nov 21, 2017 4:28:00 AM" }, { "c": "149.1435", "h": "149.1585", "l": "149.1425", "o": "149.1445", "t": "Nov 21, 2017 4:29:00 AM" }, { "c": "149.1455", "h": "149.151", "l": "149.136", "o": "149.1435", "t": "Nov 21, 2017 4:30:00 AM" }, { "c": "149.114", "h": "149.147", "l": "149.114", "o": "149.146", "t": "Nov 21, 2017 4:31:00 AM" }, { "c": "149.103", "h": "149.1155", "l": "149.1025", "o": "149.114", "t": "Nov 21, 2017 4:32:00 AM" }, { "c": "149.0985", "h": "149.1115", "l": "149.096", "o": "149.1035", "t": "Nov 21, 2017 4:33:00 AM" }, { "c": "149.0995", "h": "149.1005", "l": "149.0875", "o": "149.0975", "t": "Nov 21, 2017 4:34:00 AM" }, { "c": "149.088", "h": "149.0985", "l": "149.0845", "o": "149.0985", "t": "Nov 21, 2017 4:35:00 AM" }, { "c": "149.089", "h": "149.089", "l": "149.082", "o": "149.0875", "t": "Nov 21, 2017 4:36:00 AM" }, { "c": "149.085", "h": "149.095", "l": "149.0815", "o": "149.088", "t": "Nov 21, 2017 4:37:00 AM" }, { "c": "149.09", "h": "149.091", "l": "149.0745", "o": "149.0855", "t": "Nov 21, 2017 4:38:00 AM" }, { "c": "149.0945", "h": "149.0985", "l": "149.0875", "o": "149.09", "t": "Nov 21, 2017 4:39:00 AM" }, { "c": "149.098", "h": "149.099", "l": "149.0835", "o": "149.0945", "t": "Nov 21, 2017 4:40:00 AM" }, { "c": "149.0815", "h": "149.0995", "l": "149.0795", "o": "149.098", "t": "Nov 21, 2017 4:41:00 AM" }, { "c": "149.0875", "h": "149.092", "l": "149.08", "o": "149.0815", "t": "Nov 21, 2017 4:42:00 AM" }, { "c": "149.091", "h": "149.0965", "l": "149.0875", "o": "149.0875", "t": "Nov 21, 2017 4:43:00 AM" }, { "c": "149.0805", "h": "149.0925", "l": "149.079", "o": "149.0915", "t": "Nov 21, 2017 4:44:00 AM" }, { "c": "149.0745", "h": "149.081", "l": "149.0675", "o": "149.0795", "t": "Nov 21, 2017 4:45:00 AM" }, { "c": "149.0775", "h": "149.0785", "l": "149.0715", "o": "149.075", "t": "Nov 21, 2017 4:46:00 AM" }, { "c": "149.077", "h": "149.079", "l": "149.0765", "o": "149.078", "t": "Nov 21, 2017 4:47:00 AM" }, { "c": "149.0835", "h": "149.0835", "l": "149.077", "o": "149.0775", "t": "Nov 21, 2017 4:48:00 AM" }, { "c": "149.0765", "h": "149.083", "l": "149.073", "o": "149.083", "t": "Nov 21, 2017 4:49:00 AM" }, { "c": "149.069", "h": "149.078", "l": "149.0665", "o": "149.076", "t": "Nov 21, 2017 4:50:00 AM" }, { "c": "149.0715", "h": "149.076", "l": "149.0675", "o": "149.07", "t": "Nov 21, 2017 4:51:00 AM" }, { "c": "149.0735", "h": "149.076", "l": "149.064", "o": "149.0725", "t": "Nov 21, 2017 4:52:00 AM" }, { "c": "149.0675", "h": "149.0735", "l": "149.063", "o": "149.0715", "t": "Nov 21, 2017 4:53:00 AM" }, { "c": "149.0775", "h": "149.083", "l": "149.0655", "o": "149.067", "t": "Nov 21, 2017 4:54:00 AM" }, { "c": "149.079", "h": "149.081", "l": "149.0645", "o": "149.0775", "t": "Nov 21, 2017 4:55:00 AM" }, { "c": "149.066", "h": "149.0795", "l": "149.061", "o": "149.0785", "t": "Nov 21, 2017 4:56:00 AM" }, { "c": "149.048", "h": "149.0655", "l": "149.0445", "o": "149.065", "t": "Nov 21, 2017 4:57:00 AM" }, { "c": "149.0435", "h": "149.0615", "l": "149.0365", "o": "149.0485", "t": "Nov 21, 2017 4:58:00 AM" }, { "c": "149.031", "h": "149.0545", "l": "149.025", "o": "149.043", "t": "Nov 21, 2017 4:59:00 AM" }, { "c": "149.0095", "h": "149.0455", "l": "149.002", "o": "149.0305", "t": "Nov 21, 2017 5:00:00 AM" }, { "c": "149.007", "h": "149.015", "l": "149.0", "o": "149.01", "t": "Nov 21, 2017 5:01:00 AM" }, { "c": "149.0045", "h": "149.0095", "l": "149.0", "o": "149.008", "t": "Nov 21, 2017 5:02:00 AM" }, { "c": "148.997", "h": "149.0035", "l": "148.9915", "o": "149.0035", "t": "Nov 21, 2017 5:03:00 AM" }, { "c": "148.989", "h": "148.998", "l": "148.985", "o": "148.997", "t": "Nov 21, 2017 5:04:00 AM" }, { "c": "148.9855", "h": "149.0", "l": "148.9825", "o": "148.99", "t": "Nov 21, 2017 5:05:00 AM" }, { "c": "148.977", "h": "148.9935", "l": "148.974", "o": "148.986", "t": "Nov 21, 2017 5:06:00 AM" }, { "c": "148.97", "h": "148.9815", "l": "148.961", "o": "148.9765", "t": "Nov 21, 2017 5:07:00 AM" }, { "c": "148.9865", "h": "148.988", "l": "148.9675", "o": "148.9695", "t": "Nov 21, 2017 5:08:00 AM" }, { "c": "149.002", "h": "149.002", "l": "148.9855", "o": "148.9865", "t": "Nov 21, 2017 5:09:00 AM" }, { "c": "149.0085", "h": "149.014", "l": "148.9905", "o": "149.0025", "t": "Nov 21, 2017 5:10:00 AM" }, { "c": "149.007", "h": "149.0085", "l": "148.9965", "o": "149.0075", "t": "Nov 21, 2017 5:11:00 AM" }, { "c": "149.0185", "h": "149.0185", "l": "149.007", "o": "149.007", "t": "Nov 21, 2017 5:12:00 AM" }, { "c": "149.0165", "h": "149.0215", "l": "149.0135", "o": "149.0185", "t": "Nov 21, 2017 5:13:00 AM" }, { "c": "149.0305", "h": "149.033", "l": "149.0145", "o": "149.0175", "t": "Nov 21, 2017 5:14:00 AM" }, { "c": "149.0365", "h": "149.0375", "l": "149.0285", "o": "149.03", "t": "Nov 21, 2017 5:15:00 AM" }, { "c": "149.0395", "h": "149.04", "l": "149.033", "o": "149.0375", "t": "Nov 21, 2017 5:16:00 AM" }, { "c": "149.0405", "h": "149.047", "l": "149.0375", "o": "149.039", "t": "Nov 21, 2017 5:17:00 AM" }, { "c": "149.0455", "h": "149.051", "l": "149.038", "o": "149.0405", "t": "Nov 21, 2017 5:18:00 AM" }, { "c": "149.0535", "h": "149.0585", "l": "149.0455", "o": "149.0455", "t": "Nov 21, 2017 5:19:00 AM" }, { "c": "149.055", "h": "149.059", "l": "149.0445", "o": "149.0535", "t": "Nov 21, 2017 5:20:00 AM" }, { "c": "149.0625", "h": "149.0625", "l": "149.0455", "o": "149.055", "t": "Nov 21, 2017 5:21:00 AM" }, { "c": "149.051", "h": "149.064", "l": "149.0495", "o": "149.0635", "t": "Nov 21, 2017 5:22:00 AM" }, { "c": "149.064", "h": "149.064", "l": "149.0505", "o": "149.051", "t": "Nov 21, 2017 5:23:00 AM" }, { "c": "149.056", "h": "149.0645", "l": "149.046", "o": "149.0645", "t": "Nov 21, 2017 5:24:00 AM" }, { "c": "149.0645", "h": "149.0645", "l": "149.0535", "o": "149.056", "t": "Nov 21, 2017 5:25:00 AM" }, { "c": "149.076", "h": "149.077", "l": "149.063", "o": "149.063", "t": "Nov 21, 2017 5:26:00 AM" }, { "c": "149.0805", "h": "149.0805", "l": "149.0725", "o": "149.0755", "t": "Nov 21, 2017 5:27:00 AM" }, { "c": "149.085", "h": "149.087", "l": "149.08", "o": "149.081", "t": "Nov 21, 2017 5:28:00 AM" }, { "c": "149.087", "h": "149.091", "l": "149.0825", "o": "149.084", "t": "Nov 21, 2017 5:29:00 AM" }, { "c": "149.091", "h": "149.093", "l": "149.0805", "o": "149.086", "t": "Nov 21, 2017 5:30:00 AM" }, { "c": "149.0975", "h": "149.0975", "l": "149.087", "o": "149.0915", "t": "Nov 21, 2017 5:31:00 AM" }, { "c": "149.084", "h": "149.1015", "l": "149.0795", "o": "149.097", "t": "Nov 21, 2017 5:32:00 AM" }, { "c": "149.107", "h": "149.1095", "l": "149.0825", "o": "149.0835", "t": "Nov 21, 2017 5:33:00 AM" }, { "c": "149.1025", "h": "149.113", "l": "149.095", "o": "149.1055", "t": "Nov 21, 2017 5:34:00 AM" }, { "c": "149.096", "h": "149.1035", "l": "149.0935", "o": "149.103", "t": "Nov 21, 2017 5:35:00 AM" }, { "c": "149.0915", "h": "149.097", "l": "149.091", "o": "149.096", "t": "Nov 21, 2017 5:36:00 AM" }, { "c": "149.0855", "h": "149.093", "l": "149.0835", "o": "149.0925", "t": "Nov 21, 2017 5:37:00 AM" }, { "c": "149.0755", "h": "149.087", "l": "149.0675", "o": "149.0865", "t": "Nov 21, 2017 5:38:00 AM" }, { "c": "149.05", "h": "149.078", "l": "149.0495", "o": "149.0765", "t": "Nov 21, 2017 5:39:00 AM" }, { "c": "149.018", "h": "149.051", "l": "149.0155", "o": "149.0485", "t": "Nov 21, 2017 5:40:00 AM" }, { "c": "149.0365", "h": "149.037", "l": "149.0175", "o": "149.018", "t": "Nov 21, 2017 5:41:00 AM" }, { "c": "149.0525", "h": "149.0535", "l": "149.0375", "o": "149.0375", "t": "Nov 21, 2017 5:42:00 AM" }, { "c": "149.057", "h": "149.07", "l": "149.0535", "o": "149.0535", "t": "Nov 21, 2017 5:43:00 AM" }, { "c": "149.064", "h": "149.064", "l": "149.0535", "o": "149.0575", "t": "Nov 21, 2017 5:44:00 AM" }, { "c": "149.074", "h": "149.074", "l": "149.0655", "o": "149.0655", "t": "Nov 21, 2017 5:45:00 AM" }, { "c": "149.0775", "h": "149.084", "l": "149.0725", "o": "149.0735", "t": "Nov 21, 2017 5:46:00 AM" }, { "c": "149.0745", "h": "149.08", "l": "149.0745", "o": "149.0775", "t": "Nov 21, 2017 5:47:00 AM" }, { "c": "149.0685", "h": "149.0775", "l": "149.068", "o": "149.076", "t": "Nov 21, 2017 5:48:00 AM" }, { "c": "149.067", "h": "149.0685", "l": "149.066", "o": "149.067", "t": "Nov 21, 2017 5:49:00 AM" }, { "c": "149.045", "h": "149.073", "l": "149.0445", "o": "149.066", "t": "Nov 21, 2017 5:50:00 AM" }, { "c": "149.0235", "h": "149.046", "l": "149.0225", "o": "149.045", "t": "Nov 21, 2017 5:51:00 AM" }, { "c": "149.004", "h": "149.023", "l": "149.004", "o": "149.023", "t": "Nov 21, 2017 5:52:00 AM" }, { "c": "149.0175", "h": "149.022", "l": "149.0045", "o": "149.0045", "t": "Nov 21, 2017 5:53:00 AM" }, { "c": "149.011", "h": "149.0195", "l": "149.008", "o": "149.0175", "t": "Nov 21, 2017 5:54:00 AM" }, { "c": "149.009", "h": "149.0115", "l": "149.001", "o": "149.0115", "t": "Nov 21, 2017 5:55:00 AM" }, { "c": "149.001", "h": "149.0155", "l": "148.9975", "o": "149.007", "t": "Nov 21, 2017 5:56:00 AM" }, { "c": "149.0025", "h": "149.005", "l": "148.998", "o": "149.0025", "t": "Nov 21, 2017 5:57:00 AM" }, { "c": "149.041", "h": "149.0555", "l": "149.0025", "o": "149.0025", "t": "Nov 21, 2017 5:58:00 AM" }, { "c": "149.064", "h": "149.069", "l": "149.033", "o": "149.042", "t": "Nov 21, 2017 5:59:00 AM" }, { "c": "149.0405", "h": "149.0805", "l": "149.0405", "o": "149.0805", "t": "Nov 21, 2017 6:00:00 AM" }, { "c": "149.0395", "h": "149.0395", "l": "149.039", "o": "149.039", "t": "Nov 21, 2017 6:01:00 AM" }, { "c": "149.0415", "h": "149.0415", "l": "149.0355", "o": "149.04", "t": "Nov 21, 2017 6:02:00 AM" }, { "c": "149.0635", "h": "149.0635", "l": "149.0415", "o": "149.0415", "t": "Nov 21, 2017 6:03:00 AM" }, { "c": "149.104", "h": "149.1045", "l": "149.064", "o": "149.064", "t": "Nov 21, 2017 6:04:00 AM" }, { "c": "149.0915", "h": "149.105", "l": "149.0915", "o": "149.102", "t": "Nov 21, 2017 6:05:00 AM" }, { "c": "149.0815", "h": "149.0925", "l": "149.08", "o": "149.0925", "t": "Nov 21, 2017 6:06:00 AM" }, { "c": "149.0875", "h": "149.0885", "l": "149.082", "o": "149.082", "t": "Nov 21, 2017 6:07:00 AM" }, { "c": "149.0925", "h": "149.0925", "l": "149.0865", "o": "149.088", "t": "Nov 21, 2017 6:08:00 AM" }, { "c": "149.0915", "h": "149.093", "l": "149.0865", "o": "149.0915", "t": "Nov 21, 2017 6:09:00 AM" }, { "c": "149.0885", "h": "149.0945", "l": "149.087", "o": "149.0935", "t": "Nov 21, 2017 6:10:00 AM" }, { "c": "149.0965", "h": "149.0965", "l": "149.088", "o": "149.088", "t": "Nov 21, 2017 6:11:00 AM" }, { "c": "149.097", "h": "149.0975", "l": "149.0945", "o": "149.0975", "t": "Nov 21, 2017 6:12:00 AM" }, { "c": "149.0965", "h": "149.098", "l": "149.0965", "o": "149.097", "t": "Nov 21, 2017 6:13:00 AM" }, { "c": "149.0965", "h": "149.097", "l": "149.0965", "o": "149.097", "t": "Nov 21, 2017 6:14:00 AM" }, { "c": "149.096", "h": "149.0965", "l": "149.092", "o": "149.095", "t": "Nov 21, 2017 6:15:00 AM" }, { "c": "149.096", "h": "149.099", "l": "149.094", "o": "149.097", "t": "Nov 21, 2017 6:16:00 AM" }, { "c": "149.0915", "h": "149.0965", "l": "149.0875", "o": "149.0965", "t": "Nov 21, 2017 6:17:00 AM" }, { "c": "149.1015", "h": "149.102", "l": "149.0885", "o": "149.091", "t": "Nov 21, 2017 6:18:00 AM" }, { "c": "149.0955", "h": "149.107", "l": "149.0905", "o": "149.1005", "t": "Nov 21, 2017 6:19:00 AM" }, { "c": "149.0935", "h": "149.105", "l": "149.0905", "o": "149.0965", "t": "Nov 21, 2017 6:20:00 AM" }, { "c": "149.096", "h": "149.0975", "l": "149.094", "o": "149.0945", "t": "Nov 21, 2017 6:21:00 AM" }, { "c": "149.0925", "h": "149.096", "l": "149.0925", "o": "149.096", "t": "Nov 21, 2017 6:22:00 AM" }, { "c": "149.09", "h": "149.0915", "l": "149.0855", "o": "149.0915", "t": "Nov 21, 2017 6:23:00 AM" }, { "c": "149.0885", "h": "149.09", "l": "149.0865", "o": "149.0895", "t": "Nov 21, 2017 6:24:00 AM" }, { "c": "149.088", "h": "149.0925", "l": "149.087", "o": "149.0895", "t": "Nov 21, 2017 6:25:00 AM" }, { "c": "149.085", "h": "149.0875", "l": "149.084", "o": "149.0875", "t": "Nov 21, 2017 6:26:00 AM" }, { "c": "149.0775", "h": "149.0825", "l": "149.0635", "o": "149.0825", "t": "Nov 21, 2017 6:27:00 AM" }, { "c": "149.0845", "h": "149.0865", "l": "149.078", "o": "149.0795", "t": "Nov 21, 2017 6:28:00 AM" }, { "c": "149.065", "h": "149.0885", "l": "149.062", "o": "149.085", "t": "Nov 21, 2017 6:29:00 AM" }, { "c": "149.0625", "h": "149.065", "l": "149.052", "o": "149.065", "t": "Nov 21, 2017 6:30:00 AM" }, { "c": "149.0905", "h": "149.094", "l": "149.061", "o": "149.0625", "t": "Nov 21, 2017 6:31:00 AM" }, { "c": "149.086", "h": "149.0915", "l": "149.0805", "o": "149.0915", "t": "Nov 21, 2017 6:32:00 AM" }, { "c": "149.087", "h": "149.088", "l": "149.0845", "o": "149.086", "t": "Nov 21, 2017 6:33:00 AM" }, { "c": "149.089", "h": "149.0925", "l": "149.0875", "o": "149.088", "t": "Nov 21, 2017 6:34:00 AM" }, { "c": "149.0865", "h": "149.095", "l": "149.0845", "o": "149.0895", "t": "Nov 21, 2017 6:35:00 AM" }, { "c": "149.097", "h": "149.0975", "l": "149.0865", "o": "149.0865", "t": "Nov 21, 2017 6:36:00 AM" }, { "c": "149.091", "h": "149.098", "l": "149.0875", "o": "149.0975", "t": "Nov 21, 2017 6:37:00 AM" }, { "c": "149.0745", "h": "149.095", "l": "149.067", "o": "149.092", "t": "Nov 21, 2017 6:38:00 AM" }, { "c": "149.08", "h": "149.0815", "l": "149.074", "o": "149.074", "t": "Nov 21, 2017 6:39:00 AM" }, { "c": "149.0775", "h": "149.0835", "l": "149.0775", "o": "149.08", "t": "Nov 21, 2017 6:40:00 AM" }, { "c": "149.0785", "h": "149.08", "l": "149.0765", "o": "149.077", "t": "Nov 21, 2017 6:41:00 AM" }, { "c": "149.077", "h": "149.081", "l": "149.0765", "o": "149.08", "t": "Nov 21, 2017 6:42:00 AM" }, { "c": "149.0765", "h": "149.0785", "l": "149.076", "o": "149.0775", "t": "Nov 21, 2017 6:43:00 AM" }, { "c": "149.075", "h": "149.0765", "l": "149.0745", "o": "149.076", "t": "Nov 21, 2017 6:44:00 AM" }, { "c": "149.056", "h": "149.0745", "l": "149.053", "o": "149.0745", "t": "Nov 21, 2017 6:45:00 AM" }, { "c": "149.0375", "h": "149.0585", "l": "149.0355", "o": "149.0555", "t": "Nov 21, 2017 6:46:00 AM" }, { "c": "149.0415", "h": "149.0425", "l": "149.0385", "o": "149.0395", "t": "Nov 21, 2017 6:47:00 AM" }, { "c": "149.0445", "h": "149.045", "l": "149.04", "o": "149.04", "t": "Nov 21, 2017 6:48:00 AM" }, { "c": "149.059", "h": "149.06", "l": "149.045", "o": "149.0455", "t": "Nov 21, 2017 6:49:00 AM" }, { "c": "149.051", "h": "149.059", "l": "149.049", "o": "149.059", "t": "Nov 21, 2017 6:50:00 AM" }, { "c": "149.0525", "h": "149.054", "l": "149.05", "o": "149.0515", "t": "Nov 21, 2017 6:51:00 AM" }, { "c": "149.0395", "h": "149.052", "l": "149.0385", "o": "149.052", "t": "Nov 21, 2017 6:52:00 AM" }, { "c": "149.039", "h": "149.0475", "l": "149.0365", "o": "149.04", "t": "Nov 21, 2017 6:53:00 AM" }, { "c": "149.039", "h": "149.04", "l": "149.0385", "o": "149.039", "t": "Nov 21, 2017 6:54:00 AM" }, { "c": "149.0345", "h": "149.04", "l": "149.034", "o": "149.0385", "t": "Nov 21, 2017 6:55:00 AM" }, { "c": "149.0405", "h": "149.045", "l": "149.034", "o": "149.0345", "t": "Nov 21, 2017 6:56:00 AM" }, { "c": "149.0245", "h": "149.0425", "l": "149.022", "o": "149.0415", "t": "Nov 21, 2017 6:57:00 AM" }, { "c": "149.03", "h": "149.037", "l": "149.019", "o": "149.0235", "t": "Nov 21, 2017 6:58:00 AM" }, { "c": "149.0235", "h": "149.0285", "l": "149.015", "o": "149.0285", "t": "Nov 21, 2017 6:59:00 AM" }, { "c": "149.032", "h": "149.033", "l": "149.019", "o": "149.0235", "t": "Nov 21, 2017 7:00:00 AM" }, { "c": "149.025", "h": "149.035", "l": "149.022", "o": "149.031", "t": "Nov 21, 2017 7:01:00 AM" }, { "c": "149.0245", "h": "149.029", "l": "149.011", "o": "149.0245", "t": "Nov 21, 2017 7:02:00 AM" }, { "c": "149.019", "h": "149.029", "l": "149.0135", "o": "149.026", "t": "Nov 21, 2017 7:03:00 AM" }, { "c": "149.011", "h": "149.02", "l": "149.011", "o": "149.02", "t": "Nov 21, 2017 7:04:00 AM" }, { "c": "149.0035", "h": "149.0165", "l": "148.9985", "o": "149.012", "t": "Nov 21, 2017 7:05:00 AM" }, { "c": "149.012", "h": "149.012", "l": "148.9965", "o": "149.0045", "t": "Nov 21, 2017 7:06:00 AM" }, { "c": "148.989", "h": "149.014", "l": "148.987", "o": "149.0115", "t": "Nov 21, 2017 7:07:00 AM" }, { "c": "149.0215", "h": "149.0225", "l": "148.991", "o": "148.991", "t": "Nov 21, 2017 7:08:00 AM" }, { "c": "149.0195", "h": "149.024", "l": "149.019", "o": "149.019", "t": "Nov 21, 2017 7:09:00 AM" }, { "c": "149.024", "h": "149.0255", "l": "149.017", "o": "149.018", "t": "Nov 21, 2017 7:10:00 AM" }, { "c": "149.052", "h": "149.0535", "l": "149.02", "o": "149.0225", "t": "Nov 21, 2017 7:11:00 AM" }, { "c": "149.0485", "h": "149.0545", "l": "149.048", "o": "149.052", "t": "Nov 21, 2017 7:12:00 AM" }, { "c": "149.042", "h": "149.048", "l": "149.041", "o": "149.0445", "t": "Nov 21, 2017 7:13:00 AM" }, { "c": "149.039", "h": "149.043", "l": "149.0385", "o": "149.043", "t": "Nov 21, 2017 7:14:00 AM" }, { "c": "149.0335", "h": "149.0395", "l": "149.0305", "o": "149.039", "t": "Nov 21, 2017 7:15:00 AM" }, { "c": "149.0285", "h": "149.0335", "l": "149.027", "o": "149.0325", "t": "Nov 21, 2017 7:16:00 AM" }, { "c": "149.027", "h": "149.03", "l": "149.0225", "o": "149.0285", "t": "Nov 21, 2017 7:17:00 AM" }, { "c": "149.0295", "h": "149.03", "l": "149.019", "o": "149.0265", "t": "Nov 21, 2017 7:18:00 AM" }, { "c": "149.031", "h": "149.031", "l": "149.027", "o": "149.0295", "t": "Nov 21, 2017 7:19:00 AM" }, { "c": "149.028", "h": "149.031", "l": "149.028", "o": "149.029", "t": "Nov 21, 2017 7:20:00 AM" }, { "c": "149.0355", "h": "149.0375", "l": "149.0265", "o": "149.027", "t": "Nov 21, 2017 7:21:00 AM" }, { "c": "149.0355", "h": "149.043", "l": "149.0325", "o": "149.0345", "t": "Nov 21, 2017 7:22:00 AM" }, { "c": "149.0355", "h": "149.037", "l": "149.0285", "o": "149.037", "t": "Nov 21, 2017 7:23:00 AM" }, { "c": "149.033", "h": "149.0395", "l": "149.033", "o": "149.033", "t": "Nov 21, 2017 7:24:00 AM" }, { "c": "149.033", "h": "149.0335", "l": "149.03", "o": "149.033", "t": "Nov 21, 2017 7:25:00 AM" }, { "c": "149.033", "h": "149.0345", "l": "149.033", "o": "149.0345", "t": "Nov 21, 2017 7:26:00 AM" }, { "c": "149.0435", "h": "149.0435", "l": "149.032", "o": "149.0325", "t": "Nov 21, 2017 7:27:00 AM" }, { "c": "149.0465", "h": "149.05", "l": "149.0425", "o": "149.0445", "t": "Nov 21, 2017 7:28:00 AM" }, { "c": "149.0475", "h": "149.0485", "l": "149.0465", "o": "149.047", "t": "Nov 21, 2017 7:29:00 AM" }, { "c": "149.056", "h": "149.0595", "l": "149.048", "o": "149.048", "t": "Nov 21, 2017 7:30:00 AM" }, { "c": "149.0595", "h": "149.06", "l": "149.057", "o": "149.057", "t": "Nov 21, 2017 7:31:00 AM" }, { "c": "149.0605", "h": "149.0615", "l": "149.056", "o": "149.058", "t": "Nov 21, 2017 7:32:00 AM" }, { "c": "149.067", "h": "149.07", "l": "149.059", "o": "149.062", "t": "Nov 21, 2017 7:33:00 AM" }, { "c": "149.063", "h": "149.075", "l": "149.063", "o": "149.0675", "t": "Nov 21, 2017 7:34:00 AM" }, { "c": "149.062", "h": "149.065", "l": "149.0615", "o": "149.0635", "t": "Nov 21, 2017 7:35:00 AM" }, { "c": "149.0625", "h": "149.063", "l": "149.061", "o": "149.061", "t": "Nov 21, 2017 7:36:00 AM" }, { "c": "149.06", "h": "149.0625", "l": "149.056", "o": "149.062", "t": "Nov 21, 2017 7:37:00 AM" }, { "c": "149.085", "h": "149.085", "l": "149.059", "o": "149.059", "t": "Nov 21, 2017 7:38:00 AM" }, { "c": "149.0745", "h": "149.085", "l": "149.0745", "o": "149.085", "t": "Nov 21, 2017 7:39:00 AM" }, { "c": "149.0705", "h": "149.0735", "l": "149.0685", "o": "149.073", "t": "Nov 21, 2017 7:40:00 AM" }, { "c": "149.066", "h": "149.074", "l": "149.0635", "o": "149.07", "t": "Nov 21, 2017 7:41:00 AM" }, { "c": "149.077", "h": "149.077", "l": "149.058", "o": "149.0665", "t": "Nov 21, 2017 7:42:00 AM" }, { "c": "149.0705", "h": "149.0835", "l": "149.066", "o": "149.077", "t": "Nov 21, 2017 7:43:00 AM" }, { "c": "149.059", "h": "149.0775", "l": "149.058", "o": "149.071", "t": "Nov 21, 2017 7:44:00 AM" }, { "c": "149.077", "h": "149.08", "l": "149.052", "o": "149.0595", "t": "Nov 21, 2017 7:45:00 AM" }, { "c": "149.0605", "h": "149.077", "l": "149.0605", "o": "149.0765", "t": "Nov 21, 2017 7:46:00 AM" }, { "c": "149.044", "h": "149.0605", "l": "149.038", "o": "149.06", "t": "Nov 21, 2017 7:47:00 AM" }, { "c": "149.051", "h": "149.063", "l": "149.0445", "o": "149.0445", "t": "Nov 21, 2017 7:48:00 AM" }, { "c": "149.06", "h": "149.06", "l": "149.048", "o": "149.0505", "t": "Nov 21, 2017 7:49:00 AM" }, { "c": "149.058", "h": "149.0625", "l": "149.0565", "o": "149.059", "t": "Nov 21, 2017 7:50:00 AM" }, { "c": "149.0555", "h": "149.0615", "l": "149.0555", "o": "149.058", "t": "Nov 21, 2017 7:51:00 AM" }, { "c": "149.0125", "h": "149.056", "l": "149.0125", "o": "149.054", "t": "Nov 21, 2017 7:52:00 AM" }, { "c": "149.0165", "h": "149.02", "l": "149.0015", "o": "149.0135", "t": "Nov 21, 2017 7:53:00 AM" }, { "c": "149.026", "h": "149.0335", "l": "149.007", "o": "149.0145", "t": "Nov 21, 2017 7:54:00 AM" }, { "c": "149.03", "h": "149.0355", "l": "149.0235", "o": "149.0255", "t": "Nov 21, 2017 7:55:00 AM" }, { "c": "149.036", "h": "149.0495", "l": "149.0305", "o": "149.0305", "t": "Nov 21, 2017 7:56:00 AM" }, { "c": "149.041", "h": "149.042", "l": "149.036", "o": "149.0375", "t": "Nov 21, 2017 7:57:00 AM" }, { "c": "149.0435", "h": "149.0535", "l": "149.0405", "o": "149.042", "t": "Nov 21, 2017 7:58:00 AM" }, { "c": "149.048", "h": "149.052", "l": "149.043", "o": "149.045", "t": "Nov 21, 2017 7:59:00 AM" }, { "c": "149.042", "h": "149.0565", "l": "149.032", "o": "149.047", "t": "Nov 21, 2017 8:00:00 AM" }, { "c": "149.0855", "h": "149.096", "l": "149.036", "o": "149.0425", "t": "Nov 21, 2017 8:01:00 AM" }, { "c": "149.103", "h": "149.104", "l": "149.0795", "o": "149.086", "t": "Nov 21, 2017 8:02:00 AM" }, { "c": "149.1095", "h": "149.1155", "l": "149.083", "o": "149.104", "t": "Nov 21, 2017 8:03:00 AM" }, { "c": "149.126", "h": "149.1395", "l": "149.109", "o": "149.11", "t": "Nov 21, 2017 8:04:00 AM" }, { "c": "149.127", "h": "149.141", "l": "149.123", "o": "149.1255", "t": "Nov 21, 2017 8:05:00 AM" }, { "c": "149.1145", "h": "149.138", "l": "149.112", "o": "149.126", "t": "Nov 21, 2017 8:06:00 AM" }, { "c": "149.0845", "h": "149.1185", "l": "149.078", "o": "149.114", "t": "Nov 21, 2017 8:07:00 AM" }, { "c": "149.0825", "h": "149.0875", "l": "149.0775", "o": "149.083", "t": "Nov 21, 2017 8:08:00 AM" }, { "c": "149.074", "h": "149.0825", "l": "149.0665", "o": "149.0815", "t": "Nov 21, 2017 8:09:00 AM" }, { "c": "149.0545", "h": "149.076", "l": "149.0505", "o": "149.0745", "t": "Nov 21, 2017 8:10:00 AM" }, { "c": "149.0685", "h": "149.0695", "l": "149.0525", "o": "149.053", "t": "Nov 21, 2017 8:11:00 AM" }, { "c": "149.093", "h": "149.1025", "l": "149.063", "o": "149.068", "t": "Nov 21, 2017 8:12:00 AM" }, { "c": "149.116", "h": "149.1195", "l": "149.0935", "o": "149.0935", "t": "Nov 21, 2017 8:13:00 AM" }, { "c": "149.103", "h": "149.1155", "l": "149.103", "o": "149.1155", "t": "Nov 21, 2017 8:14:00 AM" }, { "c": "149.1065", "h": "149.124", "l": "149.099", "o": "149.1025", "t": "Nov 21, 2017 8:15:00 AM" }, { "c": "149.1125", "h": "149.1135", "l": "149.1005", "o": "149.1075", "t": "Nov 21, 2017 8:16:00 AM" }, { "c": "149.1295", "h": "149.136", "l": "149.1125", "o": "149.1125", "t": "Nov 21, 2017 8:17:00 AM" }, { "c": "149.135", "h": "149.1375", "l": "149.1225", "o": "149.1285", "t": "Nov 21, 2017 8:18:00 AM" }, { "c": "149.1375", "h": "149.1395", "l": "149.1325", "o": "149.135", "t": "Nov 21, 2017 8:19:00 AM" }, { "c": "149.1615", "h": "149.17", "l": "149.1375", "o": "149.1375", "t": "Nov 21, 2017 8:20:00 AM" }, { "c": "149.1415", "h": "149.173", "l": "149.141", "o": "149.162", "t": "Nov 21, 2017 8:21:00 AM" }, { "c": "149.147", "h": "149.153", "l": "149.137", "o": "149.1425", "t": "Nov 21, 2017 8:22:00 AM" }, { "c": "149.131", "h": "149.1465", "l": "149.126", "o": "149.1465", "t": "Nov 21, 2017 8:23:00 AM" }, { "c": "149.1325", "h": "149.1365", "l": "149.1245", "o": "149.13", "t": "Nov 21, 2017 8:24:00 AM" }, { "c": "149.1565", "h": "149.157", "l": "149.1335", "o": "149.1335", "t": "Nov 21, 2017 8:25:00 AM" }, { "c": "149.208", "h": "149.21", "l": "149.155", "o": "149.1555", "t": "Nov 21, 2017 8:26:00 AM" }, { "c": "149.198", "h": "149.218", "l": "149.1915", "o": "149.207", "t": "Nov 21, 2017 8:27:00 AM" }, { "c": "149.202", "h": "149.207", "l": "149.195", "o": "149.196", "t": "Nov 21, 2017 8:28:00 AM" }, { "c": "149.216", "h": "149.2235", "l": "149.191", "o": "149.2035", "t": "Nov 21, 2017 8:29:00 AM" }, { "c": "149.193", "h": "149.216", "l": "149.185", "o": "149.2145", "t": "Nov 21, 2017 8:30:00 AM" }, { "c": "149.1835", "h": "149.197", "l": "149.1835", "o": "149.193", "t": "Nov 21, 2017 8:31:00 AM" }, { "c": "149.1735", "h": "149.1905", "l": "149.1735", "o": "149.182", "t": "Nov 21, 2017 8:32:00 AM" }, { "c": "149.1755", "h": "149.1835", "l": "149.1705", "o": "149.174", "t": "Nov 21, 2017 8:33:00 AM" }, { "c": "149.1795", "h": "149.187", "l": "149.1715", "o": "149.1755", "t": "Nov 21, 2017 8:34:00 AM" }, { "c": "149.2055", "h": "149.209", "l": "149.1805", "o": "149.1805", "t": "Nov 21, 2017 8:35:00 AM" }, { "c": "149.194", "h": "149.2095", "l": "149.1925", "o": "149.2055", "t": "Nov 21, 2017 8:36:00 AM" }, { "c": "149.1955", "h": "149.2", "l": "149.1845", "o": "149.1935", "t": "Nov 21, 2017 8:37:00 AM" }, { "c": "149.1995", "h": "149.211", "l": "149.184", "o": "149.194", "t": "Nov 21, 2017 8:38:00 AM" }, { "c": "149.202", "h": "149.206", "l": "149.1905", "o": "149.199", "t": "Nov 21, 2017 8:39:00 AM" }, { "c": "149.184", "h": "149.2025", "l": "149.17", "o": "149.202", "t": "Nov 21, 2017 8:40:00 AM" }, { "c": "149.187", "h": "149.1945", "l": "149.174", "o": "149.1835", "t": "Nov 21, 2017 8:41:00 AM" } ] ================================================ FILE: app/src/main/assets/timesharing2.json ================================================ [ { "c": "149.1755", "h": "149.1935", "l": "149.1755", "o": "149.1755", "t": "Nov 21, 2017 8:42:00 AM" }, { "c": "149.1755", "h": "149.1935", "l": "149.1755", "o": "149.1755", "t": "Nov 21, 2017 8:43:00 AM" }, { "c": "149.1755", "h": "149.1935", "l": "149.1755", "o": "149.1755", "t": "Nov 21, 2017 8:44:00 AM" }, { "c": "149.1755", "h": "149.1935", "l": "149.1755", "o": "149.1755", "t": "Nov 21, 2017 8:45:00 AM" }, { "c": "149.1755", "h": "149.1935", "l": "149.1755", "o": "149.1755", "t": "Nov 21, 2017 8:46:00 AM" }, { "c": "149.1755", "h": "149.1935", "l": "149.1755", "o": "149.1755", "t": "Nov 21, 2017 8:47:00 AM" }, { "c": "149.1755", "h": "149.1935", "l": "149.1755", "o": "149.1755", "t": "Nov 21, 2017 8:48:00 AM" }, { "c": "149.1755", "h": "149.1935", "l": "149.1755", "o": "149.1755", "t": "Nov 21, 2017 8:42:00 AM" }, { "c": "149.1755", "h": "149.1935", "l": "149.1755", "o": "149.1755", "t": "Nov 21, 2017 8:43:00 AM" }, { "c": "149.1755", "h": "149.1935", "l": "149.1755", "o": "149.1755", "t": "Nov 21, 2017 8:44:00 AM" }, { "c": "149.1755", "h": "149.1935", "l": "149.1755", "o": "149.1755", "t": "Nov 21, 2017 8:45:00 AM" }, { "c": "149.1755", "h": "149.1935", "l": "149.1755", "o": "149.1755", "t": "Nov 21, 2017 8:46:00 AM" }, { "c": "149.1755", "h": "149.1935", "l": "149.1755", "o": "149.1755", "t": "Nov 21, 2017 8:47:00 AM" }, { "c": "149.1755", "h": "149.1935", "l": "149.1755", "o": "149.1755", "t": "Nov 21, 2017 8:48:00 AM" } ] ================================================ FILE: app/src/main/assets/timesharing22.json ================================================ [ { "c": "149.1755", "h": "149.1935", "l": "149.1755", "o": "149.1865", "t": "Nov 21, 2017 8:42:00 AM" }, { "c": "149.146", "h": "149.177", "l": "149.146", "o": "149.176", "t": "Nov 21, 2017 8:43:00 AM" }, { "c": "149.1435", "h": "149.1615", "l": "149.1395", "o": "149.1455", "t": "Nov 21, 2017 8:44:00 AM" }, { "c": "149.1605", "h": "149.162", "l": "149.1405", "o": "149.1445", "t": "Nov 21, 2017 8:45:00 AM" }, { "c": "149.1515", "h": "149.1605", "l": "149.1495", "o": "149.1605", "t": "Nov 21, 2017 8:46:00 AM" }, { "c": "149.1515", "h": "149.152", "l": "149.144", "o": "149.151", "t": "Nov 21, 2017 8:47:00 AM" }, { "c": "149.1655", "h": "149.1735", "l": "149.1495", "o": "149.151", "t": "Nov 21, 2017 8:48:00 AM" }, { "c": "149.1675", "h": "149.177", "l": "149.1565", "o": "149.166", "t": "Nov 21, 2017 8:49:00 AM" }, { "c": "149.175", "h": "149.185", "l": "149.1655", "o": "149.1675", "t": "Nov 21, 2017 8:50:00 AM" }, { "c": "149.1655", "h": "149.1825", "l": "149.159", "o": "149.174", "t": "Nov 21, 2017 8:51:00 AM" }, { "c": "149.184", "h": "149.1845", "l": "149.1585", "o": "149.1655", "t": "Nov 21, 2017 8:52:00 AM" }, { "c": "149.1815", "h": "149.1845", "l": "149.164", "o": "149.1835", "t": "Nov 21, 2017 8:53:00 AM" }, { "c": "149.1575", "h": "149.2005", "l": "149.1425", "o": "149.182", "t": "Nov 21, 2017 8:54:00 AM" }, { "c": "149.197", "h": "149.198", "l": "149.1585", "o": "149.1585", "t": "Nov 21, 2017 8:55:00 AM" }, { "c": "149.189", "h": "149.198", "l": "149.185", "o": "149.1945", "t": "Nov 21, 2017 8:56:00 AM" }, { "c": "149.18", "h": "149.1895", "l": "149.1745", "o": "149.1895", "t": "Nov 21, 2017 8:57:00 AM" }, { "c": "149.158", "h": "149.1785", "l": "149.1505", "o": "149.1785", "t": "Nov 21, 2017 8:58:00 AM" }, { "c": "149.139", "h": "149.1575", "l": "149.128", "o": "149.157", "t": "Nov 21, 2017 8:59:00 AM" }, { "c": "149.1095", "h": "149.1385", "l": "149.108", "o": "149.1375", "t": "Nov 21, 2017 9:00:00 AM" }, { "c": "149.1035", "h": "149.1095", "l": "149.098", "o": "149.1095", "t": "Nov 21, 2017 9:01:00 AM" }, { "c": "149.113", "h": "149.113", "l": "149.0845", "o": "149.1035", "t": "Nov 21, 2017 9:02:00 AM" }, { "c": "149.1145", "h": "149.1225", "l": "149.1075", "o": "149.1125", "t": "Nov 21, 2017 9:03:00 AM" }, { "c": "149.1225", "h": "149.1375", "l": "149.114", "o": "149.1145", "t": "Nov 21, 2017 9:04:00 AM" }, { "c": "149.134", "h": "149.1365", "l": "149.118", "o": "149.1235", "t": "Nov 21, 2017 9:05:00 AM" }, { "c": "149.104", "h": "149.1345", "l": "149.0975", "o": "149.1345", "t": "Nov 21, 2017 9:06:00 AM" }, { "c": "149.104", "h": "149.11", "l": "149.1015", "o": "149.103", "t": "Nov 21, 2017 9:07:00 AM" }, { "c": "149.093", "h": "149.1045", "l": "149.084", "o": "149.1045", "t": "Nov 21, 2017 9:08:00 AM" }, { "c": "149.092", "h": "149.0985", "l": "149.088", "o": "149.093", "t": "Nov 21, 2017 9:09:00 AM" }, { "c": "149.071", "h": "149.0975", "l": "149.0615", "o": "149.0915", "t": "Nov 21, 2017 9:10:00 AM" }, { "c": "149.0905", "h": "149.0955", "l": "149.064", "o": "149.0715", "t": "Nov 21, 2017 9:11:00 AM" }, { "c": "149.0905", "h": "149.098", "l": "149.0655", "o": "149.0905", "t": "Nov 21, 2017 9:12:00 AM" }, { "c": "149.1175", "h": "149.122", "l": "149.0895", "o": "149.0915", "t": "Nov 21, 2017 9:13:00 AM" }, { "c": "149.133", "h": "149.135", "l": "149.1165", "o": "149.1165", "t": "Nov 21, 2017 9:14:00 AM" }, { "c": "149.0975", "h": "149.1325", "l": "149.0975", "o": "149.1325", "t": "Nov 21, 2017 9:15:00 AM" }, { "c": "149.098", "h": "149.111", "l": "149.091", "o": "149.097", "t": "Nov 21, 2017 9:16:00 AM" }, { "c": "149.091", "h": "149.106", "l": "149.078", "o": "149.0985", "t": "Nov 21, 2017 9:17:00 AM" }, { "c": "149.085", "h": "149.0955", "l": "149.081", "o": "149.0905", "t": "Nov 21, 2017 9:18:00 AM" }, { "c": "149.0885", "h": "149.09", "l": "149.081", "o": "149.085", "t": "Nov 21, 2017 9:19:00 AM" }, { "c": "149.0805", "h": "149.091", "l": "149.08", "o": "149.0885", "t": "Nov 21, 2017 9:20:00 AM" }, { "c": "149.094", "h": "149.0995", "l": "149.0755", "o": "149.081", "t": "Nov 21, 2017 9:21:00 AM" }, { "c": "149.079", "h": "149.0955", "l": "149.0785", "o": "149.0945", "t": "Nov 21, 2017 9:22:00 AM" }, { "c": "149.086", "h": "149.092", "l": "149.075", "o": "149.08", "t": "Nov 21, 2017 9:23:00 AM" }, { "c": "149.0825", "h": "149.0935", "l": "149.074", "o": "149.0855", "t": "Nov 21, 2017 9:24:00 AM" }, { "c": "149.0745", "h": "149.082", "l": "149.057", "o": "149.082", "t": "Nov 21, 2017 9:25:00 AM" }, { "c": "149.0395", "h": "149.0745", "l": "149.0395", "o": "149.074", "t": "Nov 21, 2017 9:26:00 AM" }, { "c": "149.0145", "h": "149.041", "l": "149.012", "o": "149.04", "t": "Nov 21, 2017 9:27:00 AM" }, { "c": "149.0085", "h": "149.0235", "l": "149.0065", "o": "149.014", "t": "Nov 21, 2017 9:28:00 AM" }, { "c": "149.0095", "h": "149.0205", "l": "149.005", "o": "149.0095", "t": "Nov 21, 2017 9:29:00 AM" }, { "c": "149.024", "h": "149.05", "l": "149.008", "o": "149.008", "t": "Nov 21, 2017 9:30:00 AM" }, { "c": "149.0105", "h": "149.0235", "l": "148.9925", "o": "149.0235", "t": "Nov 21, 2017 9:31:00 AM" }, { "c": "149.0435", "h": "149.045", "l": "149.01", "o": "149.01", "t": "Nov 21, 2017 9:32:00 AM" }, { "c": "149.042", "h": "149.045", "l": "149.0295", "o": "149.045", "t": "Nov 21, 2017 9:33:00 AM" }, { "c": "149.048", "h": "149.0515", "l": "149.03", "o": "149.0415", "t": "Nov 21, 2017 9:34:00 AM" }, { "c": "149.05", "h": "149.053", "l": "149.038", "o": "149.049", "t": "Nov 21, 2017 9:35:00 AM" }, { "c": "149.0495", "h": "149.056", "l": "149.0465", "o": "149.0505", "t": "Nov 21, 2017 9:36:00 AM" }, { "c": "149.051", "h": "149.054", "l": "149.0415", "o": "149.05", "t": "Nov 21, 2017 9:37:00 AM" }, { "c": "149.0525", "h": "149.071", "l": "149.045", "o": "149.051", "t": "Nov 21, 2017 9:38:00 AM" }, { "c": "149.064", "h": "149.066", "l": "149.051", "o": "149.0515", "t": "Nov 21, 2017 9:39:00 AM" }, { "c": "149.066", "h": "149.0695", "l": "149.056", "o": "149.065", "t": "Nov 21, 2017 9:40:00 AM" }, { "c": "149.0595", "h": "149.0815", "l": "149.0595", "o": "149.0675", "t": "Nov 21, 2017 9:41:00 AM" }, { "c": "149.0805", "h": "149.0825", "l": "149.059", "o": "149.059", "t": "Nov 21, 2017 9:42:00 AM" }, { "c": "149.1075", "h": "149.11", "l": "149.0805", "o": "149.0815", "t": "Nov 21, 2017 9:43:00 AM" }, { "c": "149.1035", "h": "149.112", "l": "149.0945", "o": "149.108", "t": "Nov 21, 2017 9:44:00 AM" }, { "c": "149.109", "h": "149.1125", "l": "149.0985", "o": "149.103", "t": "Nov 21, 2017 9:45:00 AM" }, { "c": "149.12", "h": "149.121", "l": "149.1065", "o": "149.1105", "t": "Nov 21, 2017 9:46:00 AM" }, { "c": "149.1445", "h": "149.1485", "l": "149.1185", "o": "149.12", "t": "Nov 21, 2017 9:47:00 AM" }, { "c": "149.1455", "h": "149.158", "l": "149.1425", "o": "149.1465", "t": "Nov 21, 2017 9:48:00 AM" }, { "c": "149.147", "h": "149.157", "l": "149.138", "o": "149.145", "t": "Nov 21, 2017 9:49:00 AM" }, { "c": "149.1275", "h": "149.152", "l": "149.1275", "o": "149.147", "t": "Nov 21, 2017 9:50:00 AM" }, { "c": "149.119", "h": "149.1325", "l": "149.1155", "o": "149.1275", "t": "Nov 21, 2017 9:51:00 AM" }, { "c": "149.102", "h": "149.1315", "l": "149.101", "o": "149.1175", "t": "Nov 21, 2017 9:52:00 AM" }, { "c": "149.1175", "h": "149.1175", "l": "149.097", "o": "149.102", "t": "Nov 21, 2017 9:53:00 AM" }, { "c": "149.1145", "h": "149.1175", "l": "149.108", "o": "149.117", "t": "Nov 21, 2017 9:54:00 AM" }, { "c": "149.13", "h": "149.136", "l": "149.1065", "o": "149.1155", "t": "Nov 21, 2017 9:55:00 AM" }, { "c": "149.1335", "h": "149.134", "l": "149.121", "o": "149.13", "t": "Nov 21, 2017 9:56:00 AM" }, { "c": "149.1305", "h": "149.1345", "l": "149.128", "o": "149.1345", "t": "Nov 21, 2017 9:57:00 AM" }, { "c": "149.1275", "h": "149.1325", "l": "149.1275", "o": "149.13", "t": "Nov 21, 2017 9:58:00 AM" }, { "c": "149.1255", "h": "149.1345", "l": "149.1205", "o": "149.128", "t": "Nov 21, 2017 9:59:00 AM" }, { "c": "149.1285", "h": "149.1285", "l": "149.115", "o": "149.124", "t": "Nov 21, 2017 10:00:00 AM" }, { "c": "149.121", "h": "149.13", "l": "149.1205", "o": "149.1285", "t": "Nov 21, 2017 10:01:00 AM" }, { "c": "149.135", "h": "149.136", "l": "149.1195", "o": "149.121", "t": "Nov 21, 2017 10:02:00 AM" }, { "c": "149.1355", "h": "149.1415", "l": "149.1315", "o": "149.135", "t": "Nov 21, 2017 10:03:00 AM" }, { "c": "149.1435", "h": "149.156", "l": "149.136", "o": "149.136", "t": "Nov 21, 2017 10:04:00 AM" }, { "c": "149.1585", "h": "149.17", "l": "149.1365", "o": "149.144", "t": "Nov 21, 2017 10:05:00 AM" }, { "c": "149.2005", "h": "149.2005", "l": "149.155", "o": "149.1585", "t": "Nov 21, 2017 10:06:00 AM" }, { "c": "149.187", "h": "149.202", "l": "149.1865", "o": "149.2005", "t": "Nov 21, 2017 10:07:00 AM" }, { "c": "149.163", "h": "149.188", "l": "149.1605", "o": "149.188", "t": "Nov 21, 2017 10:08:00 AM" }, { "c": "149.152", "h": "149.175", "l": "149.147", "o": "149.1635", "t": "Nov 21, 2017 10:09:00 AM" }, { "c": "149.1585", "h": "149.163", "l": "149.1445", "o": "149.1515", "t": "Nov 21, 2017 10:10:00 AM" }, { "c": "149.1665", "h": "149.1715", "l": "149.148", "o": "149.158", "t": "Nov 21, 2017 10:11:00 AM" }, { "c": "149.182", "h": "149.1885", "l": "149.1645", "o": "149.1655", "t": "Nov 21, 2017 10:12:00 AM" }, { "c": "149.1855", "h": "149.187", "l": "149.178", "o": "149.1825", "t": "Nov 21, 2017 10:13:00 AM" }, { "c": "149.1825", "h": "149.1915", "l": "149.18", "o": "149.1855", "t": "Nov 21, 2017 10:14:00 AM" }, { "c": "149.1685", "h": "149.184", "l": "149.1635", "o": "149.1835", "t": "Nov 21, 2017 10:15:00 AM" }, { "c": "149.1655", "h": "149.174", "l": "149.159", "o": "149.167", "t": "Nov 21, 2017 10:16:00 AM" }, { "c": "149.167", "h": "149.176", "l": "149.1645", "o": "149.166", "t": "Nov 21, 2017 10:17:00 AM" }, { "c": "149.1755", "h": "149.1775", "l": "149.1665", "o": "149.167", "t": "Nov 21, 2017 10:18:00 AM" }, { "c": "149.1895", "h": "149.202", "l": "149.1745", "o": "149.176", "t": "Nov 21, 2017 10:19:00 AM" }, { "c": "149.206", "h": "149.208", "l": "149.188", "o": "149.1895", "t": "Nov 21, 2017 10:20:00 AM" }, { "c": "149.198", "h": "149.214", "l": "149.1975", "o": "149.2065", "t": "Nov 21, 2017 10:21:00 AM" }, { "c": "149.1635", "h": "149.1985", "l": "149.1615", "o": "149.1975", "t": "Nov 21, 2017 10:22:00 AM" }, { "c": "149.1685", "h": "149.1725", "l": "149.1595", "o": "149.1625", "t": "Nov 21, 2017 10:23:00 AM" }, { "c": "149.1665", "h": "149.174", "l": "149.163", "o": "149.168", "t": "Nov 21, 2017 10:24:00 AM" }, { "c": "149.161", "h": "149.1725", "l": "149.155", "o": "149.1665", "t": "Nov 21, 2017 10:25:00 AM" }, { "c": "149.1495", "h": "149.1655", "l": "149.146", "o": "149.1615", "t": "Nov 21, 2017 10:26:00 AM" }, { "c": "149.139", "h": "149.1645", "l": "149.139", "o": "149.1495", "t": "Nov 21, 2017 10:27:00 AM" }, { "c": "149.099", "h": "149.139", "l": "149.088", "o": "149.138", "t": "Nov 21, 2017 10:28:00 AM" }, { "c": "149.09", "h": "149.101", "l": "149.089", "o": "149.0995", "t": "Nov 21, 2017 10:29:00 AM" }, { "c": "149.0805", "h": "149.097", "l": "149.0775", "o": "149.09", "t": "Nov 21, 2017 10:30:00 AM" }, { "c": "149.0995", "h": "149.1055", "l": "149.0775", "o": "149.0775", "t": "Nov 21, 2017 10:31:00 AM" }, { "c": "149.0865", "h": "149.1035", "l": "149.086", "o": "149.0985", "t": "Nov 21, 2017 10:32:00 AM" }, { "c": "149.0845", "h": "149.091", "l": "149.0745", "o": "149.0865", "t": "Nov 21, 2017 10:33:00 AM" }, { "c": "149.048", "h": "149.089", "l": "149.048", "o": "149.0845", "t": "Nov 21, 2017 10:34:00 AM" }, { "c": "149.0495", "h": "149.0685", "l": "149.0365", "o": "149.0485", "t": "Nov 21, 2017 10:35:00 AM" }, { "c": "149.068", "h": "149.068", "l": "149.0425", "o": "149.05", "t": "Nov 21, 2017 10:36:00 AM" }, { "c": "149.0545", "h": "149.0765", "l": "149.0505", "o": "149.0675", "t": "Nov 21, 2017 10:37:00 AM" }, { "c": "149.081", "h": "149.0835", "l": "149.0535", "o": "149.0535", "t": "Nov 21, 2017 10:38:00 AM" }, { "c": "149.0715", "h": "149.084", "l": "149.0685", "o": "149.078", "t": "Nov 21, 2017 10:39:00 AM" }, { "c": "149.091", "h": "149.091", "l": "149.0695", "o": "149.072", "t": "Nov 21, 2017 10:40:00 AM" }, { "c": "149.0805", "h": "149.0915", "l": "149.0775", "o": "149.091", "t": "Nov 21, 2017 10:41:00 AM" }, { "c": "149.095", "h": "149.095", "l": "149.077", "o": "149.0805", "t": "Nov 21, 2017 10:42:00 AM" }, { "c": "149.0835", "h": "149.096", "l": "149.0825", "o": "149.096", "t": "Nov 21, 2017 10:43:00 AM" }, { "c": "149.08", "h": "149.091", "l": "149.077", "o": "149.082", "t": "Nov 21, 2017 10:44:00 AM" }, { "c": "149.082", "h": "149.089", "l": "149.076", "o": "149.078", "t": "Nov 21, 2017 10:45:00 AM" }, { "c": "149.101", "h": "149.104", "l": "149.083", "o": "149.084", "t": "Nov 21, 2017 10:46:00 AM" }, { "c": "149.085", "h": "149.104", "l": "149.083", "o": "149.1", "t": "Nov 21, 2017 10:47:00 AM" }, { "c": "149.087", "h": "149.092", "l": "149.081", "o": "149.086", "t": "Nov 21, 2017 10:48:00 AM" }, { "c": "149.084", "h": "149.092", "l": "149.08", "o": "149.087", "t": "Nov 21, 2017 10:49:00 AM" }, { "c": "149.079", "h": "149.088", "l": "149.077", "o": "149.082", "t": "Nov 21, 2017 10:50:00 AM" }, { "c": "149.103", "h": "149.108", "l": "149.077", "o": "149.079", "t": "Nov 21, 2017 10:51:00 AM" }, { "c": "149.095", "h": "149.111", "l": "149.089", "o": "149.102", "t": "Nov 21, 2017 10:52:00 AM" }, { "c": "149.115", "h": "149.115", "l": "149.093", "o": "149.094", "t": "Nov 21, 2017 10:53:00 AM" }, { "c": "149.093", "h": "149.117", "l": "149.093", "o": "149.114", "t": "Nov 21, 2017 10:54:00 AM" }, { "c": "149.084", "h": "149.093", "l": "149.08", "o": "149.092", "t": "Nov 21, 2017 10:55:00 AM" }, { "c": "149.073", "h": "149.088", "l": "149.064", "o": "149.086", "t": "Nov 21, 2017 10:56:00 AM" }, { "c": "149.086", "h": "149.087", "l": "149.072", "o": "149.072", "t": "Nov 21, 2017 10:57:00 AM" }, { "c": "149.087", "h": "149.1", "l": "149.082", "o": "149.087", "t": "Nov 21, 2017 10:58:00 AM" }, { "c": "149.084", "h": "149.086", "l": "149.075", "o": "149.086", "t": "Nov 21, 2017 10:59:00 AM" }, { "c": "149.074", "h": "149.085", "l": "149.07", "o": "149.083", "t": "Nov 21, 2017 11:00:00 AM" }, { "c": "149.082", "h": "149.085", "l": "149.073", "o": "149.075", "t": "Nov 21, 2017 11:01:00 AM" }, { "c": "149.095", "h": "149.097", "l": "149.081", "o": "149.081", "t": "Nov 21, 2017 11:02:00 AM" }, { "c": "149.08", "h": "149.104", "l": "149.08", "o": "149.095", "t": "Nov 21, 2017 11:03:00 AM" }, { "c": "149.081", "h": "149.081", "l": "149.079", "o": "149.079", "t": "Nov 21, 2017 11:04:00 AM" }, { "c": "149.079", "h": "149.081", "l": "149.079", "o": "149.079", "t": "Nov 21, 2017 11:04:00 AM" }, { "c": "149.079", "h": "149.081", "l": "149.079", "o": "149.079", "t": "Nov 21, 2017 11:04:00 AM" }, { "c": "149.079", "h": "149.081", "l": "149.079", "o": "149.079", "t": "Nov 21, 2017 11:04:00 AM" } ] ================================================ FILE: app/src/main/assets/timesharing3.json ================================================ [ { "c": "148.942", "h": "148.9445", "l": "148.9245", "o": "148.926", "t": "Nov 21, 2017 2:45:00 AM" }, { "c": "148.9105", "h": "148.9445", "l": "148.9075", "o": "148.942", "t": "Nov 21, 2017 2:46:00 AM" }, { "c": "148.9175", "h": "148.9175", "l": "148.878", "o": "148.906", "t": "Nov 21, 2017 2:47:00 AM" }, { "c": "148.9155", "h": "148.933", "l": "148.905", "o": "148.9175", "t": "Nov 21, 2017 2:48:00 AM" }, { "c": "148.9035", "h": "148.9195", "l": "148.8955", "o": "148.916", "t": "Nov 21, 2017 2:49:00 AM" }, { "c": "148.9045", "h": "148.9075", "l": "148.8975", "o": "148.9035", "t": "Nov 21, 2017 2:50:00 AM" }, { "c": "148.9", "h": "148.9045", "l": "148.9", "o": "148.9045", "t": "Nov 21, 2017 2:51:00 AM" }, { "c": "148.9025", "h": "148.908", "l": "148.8915", "o": "148.9005", "t": "Nov 21, 2017 2:52:00 AM" }, { "c": "148.926", "h": "148.926", "l": "148.9015", "o": "148.9015", "t": "Nov 21, 2017 2:53:00 AM" }, { "c": "148.9105", "h": "148.926", "l": "148.91", "o": "148.926", "t": "Nov 21, 2017 2:54:00 AM" }, { "c": "148.9265", "h": "148.941", "l": "148.91", "o": "148.91", "t": "Nov 21, 2017 2:55:00 AM" }, { "c": "148.933", "h": "148.9455", "l": "148.9255", "o": "148.9265", "t": "Nov 21, 2017 2:56:00 AM" }, { "c": "148.94", "h": "148.952", "l": "148.932", "o": "148.9325", "t": "Nov 21, 2017 2:57:00 AM" }, { "c": "148.9325", "h": "148.9465", "l": "148.928", "o": "148.94", "t": "Nov 21, 2017 2:58:00 AM" }, { "c": "148.937", "h": "148.9395", "l": "148.913", "o": "148.932", "t": "Nov 21, 2017 2:59:00 AM" }, { "c": "148.9635", "h": "148.9655", "l": "148.937", "o": "148.937", "t": "Nov 21, 2017 3:00:00 AM" }, { "c": "148.973", "h": "148.978", "l": "148.962", "o": "148.962", "t": "Nov 21, 2017 3:01:00 AM" }, { "c": "148.9725", "h": "148.976", "l": "148.966", "o": "148.9725", "t": "Nov 21, 2017 3:02:00 AM" }, { "c": "148.975", "h": "148.975", "l": "148.965", "o": "148.9725", "t": "Nov 21, 2017 3:03:00 AM" }, { "c": "149.0235", "h": "149.03", "l": "148.9635", "o": "148.976", "t": "Nov 21, 2017 3:04:00 AM" }, { "c": "148.972", "h": "149.093", "l": "148.9695", "o": "149.024", "t": "Nov 21, 2017 3:05:00 AM" }, { "c": "148.981", "h": "148.981", "l": "148.9615", "o": "148.973", "t": "Nov 21, 2017 3:06:00 AM" }, { "c": "148.9825", "h": "148.9885", "l": "148.9755", "o": "148.981", "t": "Nov 21, 2017 3:07:00 AM" }, { "c": "148.9695", "h": "148.994", "l": "148.9665", "o": "148.982", "t": "Nov 21, 2017 3:08:00 AM" }, { "c": "148.9675", "h": "148.9815", "l": "148.9635", "o": "148.97", "t": "Nov 21, 2017 3:09:00 AM" }, { "c": "149.0195", "h": "149.0215", "l": "148.963", "o": "148.9675", "t": "Nov 21, 2017 3:10:00 AM" }, { "c": "149.0355", "h": "149.0355", "l": "149.005", "o": "149.0185", "t": "Nov 21, 2017 3:11:00 AM" }, { "c": "149.03", "h": "149.0585", "l": "149.0285", "o": "149.036", "t": "Nov 21, 2017 3:12:00 AM" }, { "c": "149.02", "h": "149.0315", "l": "149.016", "o": "149.0295", "t": "Nov 21, 2017 3:13:00 AM" }, { "c": "149.0495", "h": "149.071", "l": "149.0195", "o": "149.0215", "t": "Nov 21, 2017 3:14:00 AM" }, { "c": "149.0655", "h": "149.0785", "l": "149.032", "o": "149.0505", "t": "Nov 21, 2017 3:15:00 AM" }, { "c": "149.065", "h": "149.0795", "l": "149.059", "o": "149.0655", "t": "Nov 21, 2017 3:16:00 AM" }, { "c": "149.0715", "h": "149.09", "l": "149.062", "o": "149.0645", "t": "Nov 21, 2017 3:17:00 AM" }, { "c": "149.078", "h": "149.0785", "l": "149.06", "o": "149.0715", "t": "Nov 21, 2017 3:18:00 AM" }, { "c": "149.0855", "h": "149.086", "l": "149.0755", "o": "149.0775", "t": "Nov 21, 2017 3:19:00 AM" }, { "c": "149.1735", "h": "149.1755", "l": "149.085", "o": "149.0855", "t": "Nov 21, 2017 3:20:00 AM" }, { "c": "149.147", "h": "149.178", "l": "149.103", "o": "149.1735", "t": "Nov 21, 2017 3:21:00 AM" }, { "c": "149.1395", "h": "149.149", "l": "149.1255", "o": "149.1465", "t": "Nov 21, 2017 3:22:00 AM" }, { "c": "149.1585", "h": "149.1775", "l": "149.1375", "o": "149.1385", "t": "Nov 21, 2017 3:23:00 AM" }, { "c": "149.157", "h": "149.1615", "l": "149.1475", "o": "149.1595", "t": "Nov 21, 2017 3:24:00 AM" }, { "c": "149.147", "h": "149.158", "l": "149.131", "o": "149.158", "t": "Nov 21, 2017 3:25:00 AM" }, { "c": "149.1485", "h": "149.157", "l": "149.145", "o": "149.147", "t": "Nov 21, 2017 3:26:00 AM" }, { "c": "149.165", "h": "149.171", "l": "149.1475", "o": "149.1485", "t": "Nov 21, 2017 3:27:00 AM" }, { "c": "149.178", "h": "149.1805", "l": "149.1635", "o": "149.1635", "t": "Nov 21, 2017 3:28:00 AM" }, { "c": "149.19", "h": "149.19", "l": "149.1745", "o": "149.178", "t": "Nov 21, 2017 3:29:00 AM" }, { "c": "149.1835", "h": "149.198", "l": "149.177", "o": "149.191", "t": "Nov 21, 2017 3:30:00 AM" }, { "c": "149.177", "h": "149.187", "l": "149.167", "o": "149.1835", "t": "Nov 21, 2017 3:31:00 AM" }, { "c": "149.1725", "h": "149.1855", "l": "149.1685", "o": "149.1775", "t": "Nov 21, 2017 3:32:00 AM" }, { "c": "149.193", "h": "149.195", "l": "149.168", "o": "149.1725", "t": "Nov 21, 2017 3:33:00 AM" }, { "c": "149.191", "h": "149.204", "l": "149.1825", "o": "149.1935", "t": "Nov 21, 2017 3:34:00 AM" }, { "c": "149.195", "h": "149.198", "l": "149.1825", "o": "149.1905", "t": "Nov 21, 2017 3:35:00 AM" }, { "c": "149.197", "h": "149.2395", "l": "149.193", "o": "149.196", "t": "Nov 21, 2017 3:36:00 AM" }, { "c": "149.2235", "h": "149.232", "l": "149.193", "o": "149.197", "t": "Nov 21, 2017 3:37:00 AM" }, { "c": "149.2065", "h": "149.2355", "l": "149.2065", "o": "149.224", "t": "Nov 21, 2017 3:38:00 AM" }, { "c": "149.2145", "h": "149.2185", "l": "149.2075", "o": "149.2075", "t": "Nov 21, 2017 3:39:00 AM" }, { "c": "149.2075", "h": "149.2145", "l": "149.2045", "o": "149.2145", "t": "Nov 21, 2017 3:40:00 AM" }, { "c": "149.1765", "h": "149.2125", "l": "149.1765", "o": "149.2085", "t": "Nov 21, 2017 3:41:00 AM" }, { "c": "149.171", "h": "149.189", "l": "149.1655", "o": "149.1775", "t": "Nov 21, 2017 3:42:00 AM" }, { "c": "149.183", "h": "149.188", "l": "149.165", "o": "149.171", "t": "Nov 21, 2017 3:43:00 AM" }, { "c": "149.181", "h": "149.1925", "l": "149.1685", "o": "149.183", "t": "Nov 21, 2017 3:44:00 AM" }, { "c": "149.1775", "h": "149.192", "l": "149.172", "o": "149.179", "t": "Nov 21, 2017 3:45:00 AM" }, { "c": "149.174", "h": "149.1805", "l": "149.1635", "o": "149.1765", "t": "Nov 21, 2017 3:46:00 AM" }, { "c": "149.17", "h": "149.1885", "l": "149.17", "o": "149.1745", "t": "Nov 21, 2017 3:47:00 AM" }, { "c": "149.1735", "h": "149.1805", "l": "149.166", "o": "149.1705", "t": "Nov 21, 2017 3:48:00 AM" }, { "c": "149.1815", "h": "149.1875", "l": "149.1735", "o": "149.1735", "t": "Nov 21, 2017 3:49:00 AM" }, { "c": "149.1585", "h": "149.181", "l": "149.1495", "o": "149.1805", "t": "Nov 21, 2017 3:50:00 AM" }, { "c": "149.1465", "h": "149.162", "l": "149.1455", "o": "149.158", "t": "Nov 21, 2017 3:51:00 AM" }, { "c": "149.1545", "h": "149.1625", "l": "149.141", "o": "149.147", "t": "Nov 21, 2017 3:52:00 AM" }, { "c": "149.1405", "h": "149.163", "l": "149.137", "o": "149.1545", "t": "Nov 21, 2017 3:53:00 AM" }, { "c": "149.148", "h": "149.1505", "l": "149.137", "o": "149.1405", "t": "Nov 21, 2017 3:54:00 AM" }, { "c": "149.153", "h": "149.156", "l": "149.129", "o": "149.148", "t": "Nov 21, 2017 3:55:00 AM" }, { "c": "149.1375", "h": "149.154", "l": "149.1375", "o": "149.1535", "t": "Nov 21, 2017 3:56:00 AM" }, { "c": "149.163", "h": "149.163", "l": "149.1275", "o": "149.138", "t": "Nov 21, 2017 3:57:00 AM" }, { "c": "149.166", "h": "149.174", "l": "149.1495", "o": "149.163", "t": "Nov 21, 2017 3:58:00 AM" }, { "c": "149.1485", "h": "149.1775", "l": "149.1435", "o": "149.1655", "t": "Nov 21, 2017 3:59:00 AM" }, { "c": "149.1245", "h": "149.1515", "l": "149.1245", "o": "149.147", "t": "Nov 21, 2017 4:00:00 AM" }, { "c": "149.115", "h": "149.1295", "l": "149.115", "o": "149.1245", "t": "Nov 21, 2017 4:01:00 AM" }, { "c": "149.119", "h": "149.125", "l": "149.1145", "o": "149.116", "t": "Nov 21, 2017 4:02:00 AM" }, { "c": "149.1325", "h": "149.1325", "l": "149.11", "o": "149.1185", "t": "Nov 21, 2017 4:03:00 AM" }, { "c": "149.152", "h": "149.163", "l": "149.1325", "o": "149.1325", "t": "Nov 21, 2017 4:04:00 AM" }, { "c": "149.161", "h": "149.164", "l": "149.152", "o": "149.152", "t": "Nov 21, 2017 4:05:00 AM" }, { "c": "149.1595", "h": "149.169", "l": "149.1585", "o": "149.1615", "t": "Nov 21, 2017 4:06:00 AM" }, { "c": "149.1475", "h": "149.166", "l": "149.144", "o": "149.1595", "t": "Nov 21, 2017 4:07:00 AM" }, { "c": "149.1455", "h": "149.152", "l": "149.137", "o": "149.148", "t": "Nov 21, 2017 4:08:00 AM" }, { "c": "149.1375", "h": "149.1485", "l": "149.1345", "o": "149.147", "t": "Nov 21, 2017 4:09:00 AM" }, { "c": "149.1375", "h": "149.144", "l": "149.1265", "o": "149.137", "t": "Nov 21, 2017 4:10:00 AM" }, { "c": "149.1485", "h": "149.152", "l": "149.1365", "o": "149.138", "t": "Nov 21, 2017 4:11:00 AM" }, { "c": "149.1355", "h": "149.1475", "l": "149.133", "o": "149.1475", "t": "Nov 21, 2017 4:12:00 AM" }, { "c": "149.116", "h": "149.138", "l": "149.1155", "o": "149.1355", "t": "Nov 21, 2017 4:13:00 AM" }, { "c": "149.13", "h": "149.1315", "l": "149.1155", "o": "149.1165", "t": "Nov 21, 2017 4:14:00 AM" }, { "c": "149.124", "h": "149.13", "l": "149.1195", "o": "149.1295", "t": "Nov 21, 2017 4:15:00 AM" }, { "c": "149.1265", "h": "149.1285", "l": "149.1245", "o": "149.1245", "t": "Nov 21, 2017 4:16:00 AM" }, { "c": "149.123", "h": "149.1315", "l": "149.112", "o": "149.128", "t": "Nov 21, 2017 4:17:00 AM" }, { "c": "149.115", "h": "149.126", "l": "149.109", "o": "149.1225", "t": "Nov 21, 2017 4:18:00 AM" }, { "c": "149.1125", "h": "149.123", "l": "149.11", "o": "149.1145", "t": "Nov 21, 2017 4:19:00 AM" }, { "c": "149.1145", "h": "149.117", "l": "149.1065", "o": "149.112", "t": "Nov 21, 2017 4:20:00 AM" }, { "c": "149.106", "h": "149.115", "l": "149.1045", "o": "149.114", "t": "Nov 21, 2017 4:21:00 AM" }, { "c": "149.0965", "h": "149.105", "l": "149.094", "o": "149.1045", "t": "Nov 21, 2017 4:22:00 AM" }, { "c": "149.1195", "h": "149.1195", "l": "149.095", "o": "149.0965", "t": "Nov 21, 2017 4:23:00 AM" }, { "c": "149.123", "h": "149.1305", "l": "149.115", "o": "149.119", "t": "Nov 21, 2017 4:24:00 AM" }, { "c": "149.134", "h": "149.1355", "l": "149.1215", "o": "149.122", "t": "Nov 21, 2017 4:25:00 AM" }, { "c": "149.1215", "h": "149.137", "l": "149.12", "o": "149.134", "t": "Nov 21, 2017 4:26:00 AM" }, { "c": "149.1335", "h": "149.137", "l": "149.118", "o": "149.1205", "t": "Nov 21, 2017 4:27:00 AM" }, { "c": "149.144", "h": "149.1525", "l": "149.134", "o": "149.134", "t": "Nov 21, 2017 4:28:00 AM" }, { "c": "149.1435", "h": "149.1585", "l": "149.1425", "o": "149.1445", "t": "Nov 21, 2017 4:29:00 AM" }, { "c": "149.1455", "h": "149.151", "l": "149.136", "o": "149.1435", "t": "Nov 21, 2017 4:30:00 AM" }, { "c": "149.114", "h": "149.147", "l": "149.114", "o": "149.146", "t": "Nov 21, 2017 4:31:00 AM" }, { "c": "149.103", "h": "149.1155", "l": "149.1025", "o": "149.114", "t": "Nov 21, 2017 4:32:00 AM" }, { "c": "149.0985", "h": "149.1115", "l": "149.096", "o": "149.1035", "t": "Nov 21, 2017 4:33:00 AM" }, { "c": "149.0995", "h": "149.1005", "l": "149.0875", "o": "149.0975", "t": "Nov 21, 2017 4:34:00 AM" }, { "c": "149.088", "h": "149.0985", "l": "149.0845", "o": "149.0985", "t": "Nov 21, 2017 4:35:00 AM" }, { "c": "149.089", "h": "149.089", "l": "149.082", "o": "149.0875", "t": "Nov 21, 2017 4:36:00 AM" }, { "c": "149.085", "h": "149.095", "l": "149.0815", "o": "149.088", "t": "Nov 21, 2017 4:37:00 AM" }, { "c": "149.09", "h": "149.091", "l": "149.0745", "o": "149.0855", "t": "Nov 21, 2017 4:38:00 AM" }, { "c": "149.0945", "h": "149.0985", "l": "149.0875", "o": "149.09", "t": "Nov 21, 2017 4:39:00 AM" }, { "c": "149.098", "h": "149.099", "l": "149.0835", "o": "149.0945", "t": "Nov 21, 2017 4:40:00 AM" }, { "c": "149.0815", "h": "149.0995", "l": "149.0795", "o": "149.098", "t": "Nov 21, 2017 4:41:00 AM" }, { "c": "149.0875", "h": "149.092", "l": "149.08", "o": "149.0815", "t": "Nov 21, 2017 4:42:00 AM" }, { "c": "149.091", "h": "149.0965", "l": "149.0875", "o": "149.0875", "t": "Nov 21, 2017 4:43:00 AM" }, { "c": "149.0805", "h": "149.0925", "l": "149.079", "o": "149.0915", "t": "Nov 21, 2017 4:44:00 AM" }, { "c": "149.0745", "h": "149.081", "l": "149.0675", "o": "149.0795", "t": "Nov 21, 2017 4:45:00 AM" }, { "c": "149.0775", "h": "149.0785", "l": "149.0715", "o": "149.075", "t": "Nov 21, 2017 4:46:00 AM" }, { "c": "149.077", "h": "149.079", "l": "149.0765", "o": "149.078", "t": "Nov 21, 2017 4:47:00 AM" }, { "c": "149.0835", "h": "149.0835", "l": "149.077", "o": "149.0775", "t": "Nov 21, 2017 4:48:00 AM" }, { "c": "149.0765", "h": "149.083", "l": "149.073", "o": "149.083", "t": "Nov 21, 2017 4:49:00 AM" }, { "c": "149.069", "h": "149.078", "l": "149.0665", "o": "149.076", "t": "Nov 21, 2017 4:50:00 AM" }, { "c": "149.0715", "h": "149.076", "l": "149.0675", "o": "149.07", "t": "Nov 21, 2017 4:51:00 AM" }, { "c": "149.0735", "h": "149.076", "l": "149.064", "o": "149.0725", "t": "Nov 21, 2017 4:52:00 AM" }, { "c": "149.0675", "h": "149.0735", "l": "149.063", "o": "149.0715", "t": "Nov 21, 2017 4:53:00 AM" }, { "c": "149.0775", "h": "149.083", "l": "149.0655", "o": "149.067", "t": "Nov 21, 2017 4:54:00 AM" }, { "c": "149.079", "h": "149.081", "l": "149.0645", "o": "149.0775", "t": "Nov 21, 2017 4:55:00 AM" }, { "c": "149.066", "h": "149.0795", "l": "149.061", "o": "149.0785", "t": "Nov 21, 2017 4:56:00 AM" }, { "c": "149.048", "h": "149.0655", "l": "149.0445", "o": "149.065", "t": "Nov 21, 2017 4:57:00 AM" }, { "c": "149.0435", "h": "149.0615", "l": "149.0365", "o": "149.0485", "t": "Nov 21, 2017 4:58:00 AM" }, { "c": "149.031", "h": "149.0545", "l": "149.025", "o": "149.043", "t": "Nov 21, 2017 4:59:00 AM" }, { "c": "149.0095", "h": "149.0455", "l": "149.002", "o": "149.0305", "t": "Nov 21, 2017 5:00:00 AM" }, { "c": "149.007", "h": "149.015", "l": "149.0", "o": "149.01", "t": "Nov 21, 2017 5:01:00 AM" }, { "c": "149.0045", "h": "149.0095", "l": "149.0", "o": "149.008", "t": "Nov 21, 2017 5:02:00 AM" }, { "c": "148.997", "h": "149.0035", "l": "148.9915", "o": "149.0035", "t": "Nov 21, 2017 5:03:00 AM" }, { "c": "148.989", "h": "148.998", "l": "148.985", "o": "148.997", "t": "Nov 21, 2017 5:04:00 AM" }, { "c": "148.9855", "h": "149.0", "l": "148.9825", "o": "148.99", "t": "Nov 21, 2017 5:05:00 AM" }, { "c": "148.977", "h": "148.9935", "l": "148.974", "o": "148.986", "t": "Nov 21, 2017 5:06:00 AM" }, { "c": "148.97", "h": "148.9815", "l": "148.961", "o": "148.9765", "t": "Nov 21, 2017 5:07:00 AM" }, { "c": "148.9865", "h": "148.988", "l": "148.9675", "o": "148.9695", "t": "Nov 21, 2017 5:08:00 AM" }, { "c": "149.002", "h": "149.002", "l": "148.9855", "o": "148.9865", "t": "Nov 21, 2017 5:09:00 AM" }, { "c": "149.0085", "h": "149.014", "l": "148.9905", "o": "149.0025", "t": "Nov 21, 2017 5:10:00 AM" }, { "c": "149.007", "h": "149.0085", "l": "148.9965", "o": "149.0075", "t": "Nov 21, 2017 5:11:00 AM" }, { "c": "149.0185", "h": "149.0185", "l": "149.007", "o": "149.007", "t": "Nov 21, 2017 5:12:00 AM" }, { "c": "149.0165", "h": "149.0215", "l": "149.0135", "o": "149.0185", "t": "Nov 21, 2017 5:13:00 AM" }, { "c": "149.0305", "h": "149.033", "l": "149.0145", "o": "149.0175", "t": "Nov 21, 2017 5:14:00 AM" }, { "c": "149.0365", "h": "149.0375", "l": "149.0285", "o": "149.03", "t": "Nov 21, 2017 5:15:00 AM" }, { "c": "149.0395", "h": "149.04", "l": "149.033", "o": "149.0375", "t": "Nov 21, 2017 5:16:00 AM" }, { "c": "149.0405", "h": "149.047", "l": "149.0375", "o": "149.039", "t": "Nov 21, 2017 5:17:00 AM" }, { "c": "149.0455", "h": "149.051", "l": "149.038", "o": "149.0405", "t": "Nov 21, 2017 5:18:00 AM" }, { "c": "149.0535", "h": "149.0585", "l": "149.0455", "o": "149.0455", "t": "Nov 21, 2017 5:19:00 AM" }, { "c": "149.055", "h": "149.059", "l": "149.0445", "o": "149.0535", "t": "Nov 21, 2017 5:20:00 AM" }, { "c": "149.0625", "h": "149.0625", "l": "149.0455", "o": "149.055", "t": "Nov 21, 2017 5:21:00 AM" }, { "c": "149.051", "h": "149.064", "l": "149.0495", "o": "149.0635", "t": "Nov 21, 2017 5:22:00 AM" }, { "c": "149.064", "h": "149.064", "l": "149.0505", "o": "149.051", "t": "Nov 21, 2017 5:23:00 AM" }, { "c": "149.056", "h": "149.0645", "l": "149.046", "o": "149.0645", "t": "Nov 21, 2017 5:24:00 AM" }, { "c": "149.0645", "h": "149.0645", "l": "149.0535", "o": "149.056", "t": "Nov 21, 2017 5:25:00 AM" }, { "c": "149.076", "h": "149.077", "l": "149.063", "o": "149.063", "t": "Nov 21, 2017 5:26:00 AM" }, { "c": "149.0805", "h": "149.0805", "l": "149.0725", "o": "149.0755", "t": "Nov 21, 2017 5:27:00 AM" }, { "c": "149.085", "h": "149.087", "l": "149.08", "o": "149.081", "t": "Nov 21, 2017 5:28:00 AM" }, { "c": "149.087", "h": "149.091", "l": "149.0825", "o": "149.084", "t": "Nov 21, 2017 5:29:00 AM" }, { "c": "149.091", "h": "149.093", "l": "149.0805", "o": "149.086", "t": "Nov 21, 2017 5:30:00 AM" }, { "c": "149.0975", "h": "149.0975", "l": "149.087", "o": "149.0915", "t": "Nov 21, 2017 5:31:00 AM" }, { "c": "149.084", "h": "149.1015", "l": "149.0795", "o": "149.097", "t": "Nov 21, 2017 5:32:00 AM" }, { "c": "149.107", "h": "149.1095", "l": "149.0825", "o": "149.0835", "t": "Nov 21, 2017 5:33:00 AM" }, { "c": "149.1025", "h": "149.113", "l": "149.095", "o": "149.1055", "t": "Nov 21, 2017 5:34:00 AM" }, { "c": "149.096", "h": "149.1035", "l": "149.0935", "o": "149.103", "t": "Nov 21, 2017 5:35:00 AM" }, { "c": "149.0915", "h": "149.097", "l": "149.091", "o": "149.096", "t": "Nov 21, 2017 5:36:00 AM" }, { "c": "149.0855", "h": "149.093", "l": "149.0835", "o": "149.0925", "t": "Nov 21, 2017 5:37:00 AM" }, { "c": "149.0755", "h": "149.087", "l": "149.0675", "o": "149.0865", "t": "Nov 21, 2017 5:38:00 AM" }, { "c": "149.05", "h": "149.078", "l": "149.0495", "o": "149.0765", "t": "Nov 21, 2017 5:39:00 AM" }, { "c": "149.018", "h": "149.051", "l": "149.0155", "o": "149.0485", "t": "Nov 21, 2017 5:40:00 AM" }, { "c": "149.0365", "h": "149.037", "l": "149.0175", "o": "149.018", "t": "Nov 21, 2017 5:41:00 AM" }, { "c": "149.0525", "h": "149.0535", "l": "149.0375", "o": "149.0375", "t": "Nov 21, 2017 5:42:00 AM" }, { "c": "149.057", "h": "149.07", "l": "149.0535", "o": "149.0535", "t": "Nov 21, 2017 5:43:00 AM" }, { "c": "149.064", "h": "149.064", "l": "149.0535", "o": "149.0575", "t": "Nov 21, 2017 5:44:00 AM" }, { "c": "149.074", "h": "149.074", "l": "149.0655", "o": "149.0655", "t": "Nov 21, 2017 5:45:00 AM" }, { "c": "149.0775", "h": "149.084", "l": "149.0725", "o": "149.0735", "t": "Nov 21, 2017 5:46:00 AM" }, { "c": "149.0745", "h": "149.08", "l": "149.0745", "o": "149.0775", "t": "Nov 21, 2017 5:47:00 AM" }, { "c": "149.0685", "h": "149.0775", "l": "149.068", "o": "149.076", "t": "Nov 21, 2017 5:48:00 AM" }, { "c": "149.067", "h": "149.0685", "l": "149.066", "o": "149.067", "t": "Nov 21, 2017 5:49:00 AM" }, { "c": "149.045", "h": "149.073", "l": "149.0445", "o": "149.066", "t": "Nov 21, 2017 5:50:00 AM" }, { "c": "149.0235", "h": "149.046", "l": "149.0225", "o": "149.045", "t": "Nov 21, 2017 5:51:00 AM" }, { "c": "149.004", "h": "149.023", "l": "149.004", "o": "149.023", "t": "Nov 21, 2017 5:52:00 AM" }, { "c": "149.0175", "h": "149.022", "l": "149.0045", "o": "149.0045", "t": "Nov 21, 2017 5:53:00 AM" }, { "c": "149.011", "h": "149.0195", "l": "149.008", "o": "149.0175", "t": "Nov 21, 2017 5:54:00 AM" }, { "c": "149.009", "h": "149.0115", "l": "149.001", "o": "149.0115", "t": "Nov 21, 2017 5:55:00 AM" }, { "c": "149.001", "h": "149.0155", "l": "148.9975", "o": "149.007", "t": "Nov 21, 2017 5:56:00 AM" }, { "c": "149.0025", "h": "149.005", "l": "148.998", "o": "149.0025", "t": "Nov 21, 2017 5:57:00 AM" }, { "c": "149.041", "h": "149.0555", "l": "149.0025", "o": "149.0025", "t": "Nov 21, 2017 5:58:00 AM" }, { "c": "149.064", "h": "149.069", "l": "149.033", "o": "149.042", "t": "Nov 21, 2017 5:59:00 AM" }, { "c": "149.0405", "h": "149.0805", "l": "149.0405", "o": "149.0805", "t": "Nov 21, 2017 6:00:00 AM" }, { "c": "149.0395", "h": "149.0395", "l": "149.039", "o": "149.039", "t": "Nov 21, 2017 6:01:00 AM" }, { "c": "149.0415", "h": "149.0415", "l": "149.0355", "o": "149.04", "t": "Nov 21, 2017 6:02:00 AM" }, { "c": "149.0635", "h": "149.0635", "l": "149.0415", "o": "149.0415", "t": "Nov 21, 2017 6:03:00 AM" }, { "c": "149.104", "h": "149.1045", "l": "149.064", "o": "149.064", "t": "Nov 21, 2017 6:04:00 AM" }, { "c": "149.0915", "h": "149.105", "l": "149.0915", "o": "149.102", "t": "Nov 21, 2017 6:05:00 AM" }, { "c": "149.0815", "h": "149.0925", "l": "149.08", "o": "149.0925", "t": "Nov 21, 2017 6:06:00 AM" }, { "c": "149.0875", "h": "149.0885", "l": "149.082", "o": "149.082", "t": "Nov 21, 2017 6:07:00 AM" }, { "c": "149.0925", "h": "149.0925", "l": "149.0865", "o": "149.088", "t": "Nov 21, 2017 6:08:00 AM" }, { "c": "149.0915", "h": "149.093", "l": "149.0865", "o": "149.0915", "t": "Nov 21, 2017 6:09:00 AM" }, { "c": "149.0885", "h": "149.0945", "l": "149.087", "o": "149.0935", "t": "Nov 21, 2017 6:10:00 AM" }, { "c": "149.0965", "h": "149.0965", "l": "149.088", "o": "149.088", "t": "Nov 21, 2017 6:11:00 AM" }, { "c": "149.097", "h": "149.0975", "l": "149.0945", "o": "149.0975", "t": "Nov 21, 2017 6:12:00 AM" }, { "c": "149.0965", "h": "149.098", "l": "149.0965", "o": "149.097", "t": "Nov 21, 2017 6:13:00 AM" }, { "c": "149.0965", "h": "149.097", "l": "149.0965", "o": "149.097", "t": "Nov 21, 2017 6:14:00 AM" }, { "c": "149.096", "h": "149.0965", "l": "149.092", "o": "149.095", "t": "Nov 21, 2017 6:15:00 AM" }, { "c": "149.096", "h": "149.099", "l": "149.094", "o": "149.097", "t": "Nov 21, 2017 6:16:00 AM" }, { "c": "149.0915", "h": "149.0965", "l": "149.0875", "o": "149.0965", "t": "Nov 21, 2017 6:17:00 AM" }, { "c": "149.1015", "h": "149.102", "l": "149.0885", "o": "149.091", "t": "Nov 21, 2017 6:18:00 AM" }, { "c": "149.0955", "h": "149.107", "l": "149.0905", "o": "149.1005", "t": "Nov 21, 2017 6:19:00 AM" }, { "c": "149.0935", "h": "149.105", "l": "149.0905", "o": "149.0965", "t": "Nov 21, 2017 6:20:00 AM" }, { "c": "149.096", "h": "149.0975", "l": "149.094", "o": "149.0945", "t": "Nov 21, 2017 6:21:00 AM" }, { "c": "149.0925", "h": "149.096", "l": "149.0925", "o": "149.096", "t": "Nov 21, 2017 6:22:00 AM" }, { "c": "149.09", "h": "149.0915", "l": "149.0855", "o": "149.0915", "t": "Nov 21, 2017 6:23:00 AM" }, { "c": "149.0885", "h": "149.09", "l": "149.0865", "o": "149.0895", "t": "Nov 21, 2017 6:24:00 AM" }, { "c": "149.088", "h": "149.0925", "l": "149.087", "o": "149.0895", "t": "Nov 21, 2017 6:25:00 AM" }, { "c": "149.085", "h": "149.0875", "l": "149.084", "o": "149.0875", "t": "Nov 21, 2017 6:26:00 AM" }, { "c": "149.0775", "h": "149.0825", "l": "149.0635", "o": "149.0825", "t": "Nov 21, 2017 6:27:00 AM" }, { "c": "149.0845", "h": "149.0865", "l": "149.078", "o": "149.0795", "t": "Nov 21, 2017 6:28:00 AM" }, { "c": "149.065", "h": "149.0885", "l": "149.062", "o": "149.085", "t": "Nov 21, 2017 6:29:00 AM" }, { "c": "149.0625", "h": "149.065", "l": "149.052", "o": "149.065", "t": "Nov 21, 2017 6:30:00 AM" }, { "c": "149.0905", "h": "149.094", "l": "149.061", "o": "149.0625", "t": "Nov 21, 2017 6:31:00 AM" }, { "c": "149.086", "h": "149.0915", "l": "149.0805", "o": "149.0915", "t": "Nov 21, 2017 6:32:00 AM" }, { "c": "149.087", "h": "149.088", "l": "149.0845", "o": "149.086", "t": "Nov 21, 2017 6:33:00 AM" }, { "c": "149.089", "h": "149.0925", "l": "149.0875", "o": "149.088", "t": "Nov 21, 2017 6:34:00 AM" }, { "c": "149.0865", "h": "149.095", "l": "149.0845", "o": "149.0895", "t": "Nov 21, 2017 6:35:00 AM" }, { "c": "149.097", "h": "149.0975", "l": "149.0865", "o": "149.0865", "t": "Nov 21, 2017 6:36:00 AM" }, { "c": "149.091", "h": "149.098", "l": "149.0875", "o": "149.0975", "t": "Nov 21, 2017 6:37:00 AM" }, { "c": "149.0745", "h": "149.095", "l": "149.067", "o": "149.092", "t": "Nov 21, 2017 6:38:00 AM" }, { "c": "149.08", "h": "149.0815", "l": "149.074", "o": "149.074", "t": "Nov 21, 2017 6:39:00 AM" }, { "c": "149.0775", "h": "149.0835", "l": "149.0775", "o": "149.08", "t": "Nov 21, 2017 6:40:00 AM" }, { "c": "149.0785", "h": "149.08", "l": "149.0765", "o": "149.077", "t": "Nov 21, 2017 6:41:00 AM" }, { "c": "149.077", "h": "149.081", "l": "149.0765", "o": "149.08", "t": "Nov 21, 2017 6:42:00 AM" }, { "c": "149.0765", "h": "149.0785", "l": "149.076", "o": "149.0775", "t": "Nov 21, 2017 6:43:00 AM" }, { "c": "149.075", "h": "149.0765", "l": "149.0745", "o": "149.076", "t": "Nov 21, 2017 6:44:00 AM" }, { "c": "149.056", "h": "149.0745", "l": "149.053", "o": "149.0745", "t": "Nov 21, 2017 6:45:00 AM" }, { "c": "149.0375", "h": "149.0585", "l": "149.0355", "o": "149.0555", "t": "Nov 21, 2017 6:46:00 AM" }, { "c": "149.0415", "h": "149.0425", "l": "149.0385", "o": "149.0395", "t": "Nov 21, 2017 6:47:00 AM" }, { "c": "149.0445", "h": "149.045", "l": "149.04", "o": "149.04", "t": "Nov 21, 2017 6:48:00 AM" }, { "c": "149.059", "h": "149.06", "l": "149.045", "o": "149.0455", "t": "Nov 21, 2017 6:49:00 AM" }, { "c": "149.051", "h": "149.059", "l": "149.049", "o": "149.059", "t": "Nov 21, 2017 6:50:00 AM" }, { "c": "149.0525", "h": "149.054", "l": "149.05", "o": "149.0515", "t": "Nov 21, 2017 6:51:00 AM" }, { "c": "149.0395", "h": "149.052", "l": "149.0385", "o": "149.052", "t": "Nov 21, 2017 6:52:00 AM" }, { "c": "149.039", "h": "149.0475", "l": "149.0365", "o": "149.04", "t": "Nov 21, 2017 6:53:00 AM" }, { "c": "149.039", "h": "149.04", "l": "149.0385", "o": "149.039", "t": "Nov 21, 2017 6:54:00 AM" }, { "c": "149.0345", "h": "149.04", "l": "149.034", "o": "149.0385", "t": "Nov 21, 2017 6:55:00 AM" }, { "c": "149.0405", "h": "149.045", "l": "149.034", "o": "149.0345", "t": "Nov 21, 2017 6:56:00 AM" }, { "c": "149.0245", "h": "149.0425", "l": "149.022", "o": "149.0415", "t": "Nov 21, 2017 6:57:00 AM" }, { "c": "149.03", "h": "149.037", "l": "149.019", "o": "149.0235", "t": "Nov 21, 2017 6:58:00 AM" }, { "c": "149.0235", "h": "149.0285", "l": "149.015", "o": "149.0285", "t": "Nov 21, 2017 6:59:00 AM" }, { "c": "149.032", "h": "149.033", "l": "149.019", "o": "149.0235", "t": "Nov 21, 2017 7:00:00 AM" }, { "c": "149.025", "h": "149.035", "l": "149.022", "o": "149.031", "t": "Nov 21, 2017 7:01:00 AM" }, { "c": "149.0245", "h": "149.029", "l": "149.011", "o": "149.0245", "t": "Nov 21, 2017 7:02:00 AM" }, { "c": "149.019", "h": "149.029", "l": "149.0135", "o": "149.026", "t": "Nov 21, 2017 7:03:00 AM" }, { "c": "149.011", "h": "149.02", "l": "149.011", "o": "149.02", "t": "Nov 21, 2017 7:04:00 AM" }, { "c": "149.0035", "h": "149.0165", "l": "148.9985", "o": "149.012", "t": "Nov 21, 2017 7:05:00 AM" }, { "c": "149.012", "h": "149.012", "l": "148.9965", "o": "149.0045", "t": "Nov 21, 2017 7:06:00 AM" }, { "c": "148.989", "h": "149.014", "l": "148.987", "o": "149.0115", "t": "Nov 21, 2017 7:07:00 AM" }, { "c": "149.0215", "h": "149.0225", "l": "148.991", "o": "148.991", "t": "Nov 21, 2017 7:08:00 AM" }, { "c": "149.0195", "h": "149.024", "l": "149.019", "o": "149.019", "t": "Nov 21, 2017 7:09:00 AM" }, { "c": "149.024", "h": "149.0255", "l": "149.017", "o": "149.018", "t": "Nov 21, 2017 7:10:00 AM" }, { "c": "149.052", "h": "149.0535", "l": "149.02", "o": "149.0225", "t": "Nov 21, 2017 7:11:00 AM" }, { "c": "149.0485", "h": "149.0545", "l": "149.048", "o": "149.052", "t": "Nov 21, 2017 7:12:00 AM" }, { "c": "149.042", "h": "149.048", "l": "149.041", "o": "149.0445", "t": "Nov 21, 2017 7:13:00 AM" }, { "c": "149.039", "h": "149.043", "l": "149.0385", "o": "149.043", "t": "Nov 21, 2017 7:14:00 AM" }, { "c": "149.0335", "h": "149.0395", "l": "149.0305", "o": "149.039", "t": "Nov 21, 2017 7:15:00 AM" }, { "c": "149.0285", "h": "149.0335", "l": "149.027", "o": "149.0325", "t": "Nov 21, 2017 7:16:00 AM" }, { "c": "149.027", "h": "149.03", "l": "149.0225", "o": "149.0285", "t": "Nov 21, 2017 7:17:00 AM" }, { "c": "149.0295", "h": "149.03", "l": "149.019", "o": "149.0265", "t": "Nov 21, 2017 7:18:00 AM" }, { "c": "149.031", "h": "149.031", "l": "149.027", "o": "149.0295", "t": "Nov 21, 2017 7:19:00 AM" }, { "c": "149.028", "h": "149.031", "l": "149.028", "o": "149.029", "t": "Nov 21, 2017 7:20:00 AM" }, { "c": "149.0355", "h": "149.0375", "l": "149.0265", "o": "149.027", "t": "Nov 21, 2017 7:21:00 AM" }, { "c": "149.0355", "h": "149.043", "l": "149.0325", "o": "149.0345", "t": "Nov 21, 2017 7:22:00 AM" }, { "c": "149.0355", "h": "149.037", "l": "149.0285", "o": "149.037", "t": "Nov 21, 2017 7:23:00 AM" }, { "c": "149.033", "h": "149.0395", "l": "149.033", "o": "149.033", "t": "Nov 21, 2017 7:24:00 AM" }, { "c": "149.033", "h": "149.0335", "l": "149.03", "o": "149.033", "t": "Nov 21, 2017 7:25:00 AM" }, { "c": "149.033", "h": "149.0345", "l": "149.033", "o": "149.0345", "t": "Nov 21, 2017 7:26:00 AM" }, { "c": "149.0435", "h": "149.0435", "l": "149.032", "o": "149.0325", "t": "Nov 21, 2017 7:27:00 AM" }, { "c": "149.0465", "h": "149.05", "l": "149.0425", "o": "149.0445", "t": "Nov 21, 2017 7:28:00 AM" }, { "c": "149.0475", "h": "149.0485", "l": "149.0465", "o": "149.047", "t": "Nov 21, 2017 7:29:00 AM" }, { "c": "149.056", "h": "149.0595", "l": "149.048", "o": "149.048", "t": "Nov 21, 2017 7:30:00 AM" }, { "c": "149.0595", "h": "149.06", "l": "149.057", "o": "149.057", "t": "Nov 21, 2017 7:31:00 AM" }, { "c": "149.0605", "h": "149.0615", "l": "149.056", "o": "149.058", "t": "Nov 21, 2017 7:32:00 AM" }, { "c": "149.067", "h": "149.07", "l": "149.059", "o": "149.062", "t": "Nov 21, 2017 7:33:00 AM" }, { "c": "149.063", "h": "149.075", "l": "149.063", "o": "149.0675", "t": "Nov 21, 2017 7:34:00 AM" }, { "c": "149.062", "h": "149.065", "l": "149.0615", "o": "149.0635", "t": "Nov 21, 2017 7:35:00 AM" }, { "c": "149.0625", "h": "149.063", "l": "149.061", "o": "149.061", "t": "Nov 21, 2017 7:36:00 AM" }, { "c": "149.06", "h": "149.0625", "l": "149.056", "o": "149.062", "t": "Nov 21, 2017 7:37:00 AM" }, { "c": "149.085", "h": "149.085", "l": "149.059", "o": "149.059", "t": "Nov 21, 2017 7:38:00 AM" }, { "c": "149.0745", "h": "149.085", "l": "149.0745", "o": "149.085", "t": "Nov 21, 2017 7:39:00 AM" }, { "c": "149.0705", "h": "149.0735", "l": "149.0685", "o": "149.073", "t": "Nov 21, 2017 7:40:00 AM" }, { "c": "149.066", "h": "149.074", "l": "149.0635", "o": "149.07", "t": "Nov 21, 2017 7:41:00 AM" }, { "c": "149.077", "h": "149.077", "l": "149.058", "o": "149.0665", "t": "Nov 21, 2017 7:42:00 AM" }, { "c": "149.0705", "h": "149.0835", "l": "149.066", "o": "149.077", "t": "Nov 21, 2017 7:43:00 AM" }, { "c": "149.059", "h": "149.0775", "l": "149.058", "o": "149.071", "t": "Nov 21, 2017 7:44:00 AM" }, { "c": "149.077", "h": "149.08", "l": "149.052", "o": "149.0595", "t": "Nov 21, 2017 7:45:00 AM" }, { "c": "149.0605", "h": "149.077", "l": "149.0605", "o": "149.0765", "t": "Nov 21, 2017 7:46:00 AM" }, { "c": "149.044", "h": "149.0605", "l": "149.038", "o": "149.06", "t": "Nov 21, 2017 7:47:00 AM" }, { "c": "149.051", "h": "149.063", "l": "149.0445", "o": "149.0445", "t": "Nov 21, 2017 7:48:00 AM" }, { "c": "149.06", "h": "149.06", "l": "149.048", "o": "149.0505", "t": "Nov 21, 2017 7:49:00 AM" }, { "c": "149.058", "h": "149.0625", "l": "149.0565", "o": "149.059", "t": "Nov 21, 2017 7:50:00 AM" }, { "c": "149.0555", "h": "149.0615", "l": "149.0555", "o": "149.058", "t": "Nov 21, 2017 7:51:00 AM" }, { "c": "149.0125", "h": "149.056", "l": "149.0125", "o": "149.054", "t": "Nov 21, 2017 7:52:00 AM" }, { "c": "149.0165", "h": "149.02", "l": "149.0015", "o": "149.0135", "t": "Nov 21, 2017 7:53:00 AM" }, { "c": "149.026", "h": "149.0335", "l": "149.007", "o": "149.0145", "t": "Nov 21, 2017 7:54:00 AM" }, { "c": "149.03", "h": "149.0355", "l": "149.0235", "o": "149.0255", "t": "Nov 21, 2017 7:55:00 AM" }, { "c": "149.036", "h": "149.0495", "l": "149.0305", "o": "149.0305", "t": "Nov 21, 2017 7:56:00 AM" }, { "c": "149.041", "h": "149.042", "l": "149.036", "o": "149.0375", "t": "Nov 21, 2017 7:57:00 AM" }, { "c": "149.0435", "h": "149.0535", "l": "149.0405", "o": "149.042", "t": "Nov 21, 2017 7:58:00 AM" }, { "c": "149.048", "h": "149.052", "l": "149.043", "o": "149.045", "t": "Nov 21, 2017 7:59:00 AM" }, { "c": "149.042", "h": "149.0565", "l": "149.032", "o": "149.047", "t": "Nov 21, 2017 8:00:00 AM" }, { "c": "149.0855", "h": "149.096", "l": "149.036", "o": "149.0425", "t": "Nov 21, 2017 8:01:00 AM" }, { "c": "149.103", "h": "149.104", "l": "149.0795", "o": "149.086", "t": "Nov 21, 2017 8:02:00 AM" }, { "c": "149.1095", "h": "149.1155", "l": "149.083", "o": "149.104", "t": "Nov 21, 2017 8:03:00 AM" }, { "c": "149.126", "h": "149.1395", "l": "149.109", "o": "149.11", "t": "Nov 21, 2017 8:04:00 AM" }, { "c": "149.127", "h": "149.141", "l": "149.123", "o": "149.1255", "t": "Nov 21, 2017 8:05:00 AM" }, { "c": "149.1145", "h": "149.138", "l": "149.112", "o": "149.126", "t": "Nov 21, 2017 8:06:00 AM" }, { "c": "149.0845", "h": "149.1185", "l": "149.078", "o": "149.114", "t": "Nov 21, 2017 8:07:00 AM" }, { "c": "149.0825", "h": "149.0875", "l": "149.0775", "o": "149.083", "t": "Nov 21, 2017 8:08:00 AM" }, { "c": "149.074", "h": "149.0825", "l": "149.0665", "o": "149.0815", "t": "Nov 21, 2017 8:09:00 AM" }, { "c": "149.0545", "h": "149.076", "l": "149.0505", "o": "149.0745", "t": "Nov 21, 2017 8:10:00 AM" }, { "c": "149.0685", "h": "149.0695", "l": "149.0525", "o": "149.053", "t": "Nov 21, 2017 8:11:00 AM" }, { "c": "149.093", "h": "149.1025", "l": "149.063", "o": "149.068", "t": "Nov 21, 2017 8:12:00 AM" }, { "c": "149.116", "h": "149.1195", "l": "149.0935", "o": "149.0935", "t": "Nov 21, 2017 8:13:00 AM" }, { "c": "149.103", "h": "149.1155", "l": "149.103", "o": "149.1155", "t": "Nov 21, 2017 8:14:00 AM" }, { "c": "149.1065", "h": "149.124", "l": "149.099", "o": "149.1025", "t": "Nov 21, 2017 8:15:00 AM" }, { "c": "149.1125", "h": "149.1135", "l": "149.1005", "o": "149.1075", "t": "Nov 21, 2017 8:16:00 AM" }, { "c": "149.1295", "h": "149.136", "l": "149.1125", "o": "149.1125", "t": "Nov 21, 2017 8:17:00 AM" }, { "c": "149.135", "h": "149.1375", "l": "149.1225", "o": "149.1285", "t": "Nov 21, 2017 8:18:00 AM" }, { "c": "149.1375", "h": "149.1395", "l": "149.1325", "o": "149.135", "t": "Nov 21, 2017 8:19:00 AM" }, { "c": "149.1615", "h": "149.17", "l": "149.1375", "o": "149.1375", "t": "Nov 21, 2017 8:20:00 AM" }, { "c": "149.1415", "h": "149.173", "l": "149.141", "o": "149.162", "t": "Nov 21, 2017 8:21:00 AM" }, { "c": "149.147", "h": "149.153", "l": "149.137", "o": "149.1425", "t": "Nov 21, 2017 8:22:00 AM" }, { "c": "149.131", "h": "149.1465", "l": "149.126", "o": "149.1465", "t": "Nov 21, 2017 8:23:00 AM" }, { "c": "149.1325", "h": "149.1365", "l": "149.1245", "o": "149.13", "t": "Nov 21, 2017 8:24:00 AM" }, { "c": "149.1565", "h": "149.157", "l": "149.1335", "o": "149.1335", "t": "Nov 21, 2017 8:25:00 AM" }, { "c": "149.208", "h": "149.21", "l": "149.155", "o": "149.1555", "t": "Nov 21, 2017 8:26:00 AM" }, { "c": "149.198", "h": "149.218", "l": "149.1915", "o": "149.207", "t": "Nov 21, 2017 8:27:00 AM" }, { "c": "149.202", "h": "149.207", "l": "149.195", "o": "149.196", "t": "Nov 21, 2017 8:28:00 AM" }, { "c": "149.216", "h": "149.2235", "l": "149.191", "o": "149.2035", "t": "Nov 21, 2017 8:29:00 AM" }, { "c": "149.193", "h": "149.216", "l": "149.185", "o": "149.2145", "t": "Nov 21, 2017 8:30:00 AM" }, { "c": "149.1835", "h": "149.197", "l": "149.1835", "o": "149.193", "t": "Nov 21, 2017 8:31:00 AM" }, { "c": "149.1735", "h": "149.1905", "l": "149.1735", "o": "149.182", "t": "Nov 21, 2017 8:32:00 AM" }, { "c": "149.1755", "h": "149.1835", "l": "149.1705", "o": "149.174", "t": "Nov 21, 2017 8:33:00 AM" }, { "c": "149.1795", "h": "149.187", "l": "149.1715", "o": "149.1755", "t": "Nov 21, 2017 8:34:00 AM" }, { "c": "149.2055", "h": "149.209", "l": "149.1805", "o": "149.1805", "t": "Nov 21, 2017 8:35:00 AM" }, { "c": "149.194", "h": "149.2095", "l": "149.1925", "o": "149.2055", "t": "Nov 21, 2017 8:36:00 AM" }, { "c": "149.1955", "h": "149.2", "l": "149.1845", "o": "149.1935", "t": "Nov 21, 2017 8:37:00 AM" }, { "c": "149.1995", "h": "149.211", "l": "149.184", "o": "149.194", "t": "Nov 21, 2017 8:38:00 AM" }, { "c": "149.202", "h": "149.206", "l": "149.1905", "o": "149.199", "t": "Nov 21, 2017 8:39:00 AM" }, { "c": "149.184", "h": "149.2025", "l": "149.17", "o": "149.202", "t": "Nov 21, 2017 8:40:00 AM" }, { "c": "149.187", "h": "149.1945", "l": "149.174", "o": "149.1835", "t": "Nov 21, 2017 8:41:00 AM" }, { "c": "149.1755", "h": "149.1935", "l": "149.1755", "o": "149.1865", "t": "Nov 21, 2017 8:42:00 AM" }, { "c": "149.146", "h": "149.177", "l": "149.146", "o": "149.176", "t": "Nov 21, 2017 8:43:00 AM" }, { "c": "149.1435", "h": "149.1615", "l": "149.1395", "o": "149.1455", "t": "Nov 21, 2017 8:44:00 AM" }, { "c": "149.1605", "h": "149.162", "l": "149.1405", "o": "149.1445", "t": "Nov 21, 2017 8:45:00 AM" }, { "c": "149.1515", "h": "149.1605", "l": "149.1495", "o": "149.1605", "t": "Nov 21, 2017 8:46:00 AM" }, { "c": "149.1515", "h": "149.152", "l": "149.144", "o": "149.151", "t": "Nov 21, 2017 8:47:00 AM" }, { "c": "149.1655", "h": "149.1735", "l": "149.1495", "o": "149.151", "t": "Nov 21, 2017 8:48:00 AM" }, { "c": "149.1675", "h": "149.177", "l": "149.1565", "o": "149.166", "t": "Nov 21, 2017 8:49:00 AM" }, { "c": "149.175", "h": "149.185", "l": "149.1655", "o": "149.1675", "t": "Nov 21, 2017 8:50:00 AM" }, { "c": "149.1655", "h": "149.1825", "l": "149.159", "o": "149.174", "t": "Nov 21, 2017 8:51:00 AM" }, { "c": "149.184", "h": "149.1845", "l": "149.1585", "o": "149.1655", "t": "Nov 21, 2017 8:52:00 AM" }, { "c": "149.1815", "h": "149.1845", "l": "149.164", "o": "149.1835", "t": "Nov 21, 2017 8:53:00 AM" }, { "c": "149.1575", "h": "149.2005", "l": "149.1425", "o": "149.182", "t": "Nov 21, 2017 8:54:00 AM" }, { "c": "149.197", "h": "149.198", "l": "149.1585", "o": "149.1585", "t": "Nov 21, 2017 8:55:00 AM" }, { "c": "149.189", "h": "149.198", "l": "149.185", "o": "149.1945", "t": "Nov 21, 2017 8:56:00 AM" }, { "c": "149.18", "h": "149.1895", "l": "149.1745", "o": "149.1895", "t": "Nov 21, 2017 8:57:00 AM" }, { "c": "149.158", "h": "149.1785", "l": "149.1505", "o": "149.1785", "t": "Nov 21, 2017 8:58:00 AM" }, { "c": "149.139", "h": "149.1575", "l": "149.128", "o": "149.157", "t": "Nov 21, 2017 8:59:00 AM" }, { "c": "149.1095", "h": "149.1385", "l": "149.108", "o": "149.1375", "t": "Nov 21, 2017 9:00:00 AM" }, { "c": "149.1035", "h": "149.1095", "l": "149.098", "o": "149.1095", "t": "Nov 21, 2017 9:01:00 AM" }, { "c": "149.113", "h": "149.113", "l": "149.0845", "o": "149.1035", "t": "Nov 21, 2017 9:02:00 AM" }, { "c": "149.1145", "h": "149.1225", "l": "149.1075", "o": "149.1125", "t": "Nov 21, 2017 9:03:00 AM" }, { "c": "149.1225", "h": "149.1375", "l": "149.114", "o": "149.1145", "t": "Nov 21, 2017 9:04:00 AM" }, { "c": "149.134", "h": "149.1365", "l": "149.118", "o": "149.1235", "t": "Nov 21, 2017 9:05:00 AM" }, { "c": "149.104", "h": "149.1345", "l": "149.0975", "o": "149.1345", "t": "Nov 21, 2017 9:06:00 AM" }, { "c": "149.104", "h": "149.11", "l": "149.1015", "o": "149.103", "t": "Nov 21, 2017 9:07:00 AM" }, { "c": "149.093", "h": "149.1045", "l": "149.084", "o": "149.1045", "t": "Nov 21, 2017 9:08:00 AM" }, { "c": "149.092", "h": "149.0985", "l": "149.088", "o": "149.093", "t": "Nov 21, 2017 9:09:00 AM" }, { "c": "149.071", "h": "149.0975", "l": "149.0615", "o": "149.0915", "t": "Nov 21, 2017 9:10:00 AM" }, { "c": "149.0905", "h": "149.0955", "l": "149.064", "o": "149.0715", "t": "Nov 21, 2017 9:11:00 AM" }, { "c": "149.0905", "h": "149.098", "l": "149.0655", "o": "149.0905", "t": "Nov 21, 2017 9:12:00 AM" }, { "c": "149.1175", "h": "149.122", "l": "149.0895", "o": "149.0915", "t": "Nov 21, 2017 9:13:00 AM" }, { "c": "149.133", "h": "149.135", "l": "149.1165", "o": "149.1165", "t": "Nov 21, 2017 9:14:00 AM" }, { "c": "149.0975", "h": "149.1325", "l": "149.0975", "o": "149.1325", "t": "Nov 21, 2017 9:15:00 AM" }, { "c": "149.098", "h": "149.111", "l": "149.091", "o": "149.097", "t": "Nov 21, 2017 9:16:00 AM" }, { "c": "149.091", "h": "149.106", "l": "149.078", "o": "149.0985", "t": "Nov 21, 2017 9:17:00 AM" }, { "c": "149.085", "h": "149.0955", "l": "149.081", "o": "149.0905", "t": "Nov 21, 2017 9:18:00 AM" }, { "c": "149.0885", "h": "149.09", "l": "149.081", "o": "149.085", "t": "Nov 21, 2017 9:19:00 AM" }, { "c": "149.0805", "h": "149.091", "l": "149.08", "o": "149.0885", "t": "Nov 21, 2017 9:20:00 AM" }, { "c": "149.094", "h": "149.0995", "l": "149.0755", "o": "149.081", "t": "Nov 21, 2017 9:21:00 AM" }, { "c": "149.079", "h": "149.0955", "l": "149.0785", "o": "149.0945", "t": "Nov 21, 2017 9:22:00 AM" }, { "c": "149.086", "h": "149.092", "l": "149.075", "o": "149.08", "t": "Nov 21, 2017 9:23:00 AM" }, { "c": "149.0825", "h": "149.0935", "l": "149.074", "o": "149.0855", "t": "Nov 21, 2017 9:24:00 AM" }, { "c": "149.0745", "h": "149.082", "l": "149.057", "o": "149.082", "t": "Nov 21, 2017 9:25:00 AM" }, { "c": "149.0395", "h": "149.0745", "l": "149.0395", "o": "149.074", "t": "Nov 21, 2017 9:26:00 AM" }, { "c": "149.0145", "h": "149.041", "l": "149.012", "o": "149.04", "t": "Nov 21, 2017 9:27:00 AM" }, { "c": "149.0085", "h": "149.0235", "l": "149.0065", "o": "149.014", "t": "Nov 21, 2017 9:28:00 AM" }, { "c": "149.0095", "h": "149.0205", "l": "149.005", "o": "149.0095", "t": "Nov 21, 2017 9:29:00 AM" }, { "c": "149.024", "h": "149.05", "l": "149.008", "o": "149.008", "t": "Nov 21, 2017 9:30:00 AM" }, { "c": "149.0105", "h": "149.0235", "l": "148.9925", "o": "149.0235", "t": "Nov 21, 2017 9:31:00 AM" }, { "c": "149.0435", "h": "149.045", "l": "149.01", "o": "149.01", "t": "Nov 21, 2017 9:32:00 AM" }, { "c": "149.042", "h": "149.045", "l": "149.0295", "o": "149.045", "t": "Nov 21, 2017 9:33:00 AM" }, { "c": "149.048", "h": "149.0515", "l": "149.03", "o": "149.0415", "t": "Nov 21, 2017 9:34:00 AM" }, { "c": "149.05", "h": "149.053", "l": "149.038", "o": "149.049", "t": "Nov 21, 2017 9:35:00 AM" }, { "c": "149.0495", "h": "149.056", "l": "149.0465", "o": "149.0505", "t": "Nov 21, 2017 9:36:00 AM" }, { "c": "149.051", "h": "149.054", "l": "149.0415", "o": "149.05", "t": "Nov 21, 2017 9:37:00 AM" }, { "c": "149.0525", "h": "149.071", "l": "149.045", "o": "149.051", "t": "Nov 21, 2017 9:38:00 AM" }, { "c": "149.064", "h": "149.066", "l": "149.051", "o": "149.0515", "t": "Nov 21, 2017 9:39:00 AM" }, { "c": "149.066", "h": "149.0695", "l": "149.056", "o": "149.065", "t": "Nov 21, 2017 9:40:00 AM" }, { "c": "149.0595", "h": "149.0815", "l": "149.0595", "o": "149.0675", "t": "Nov 21, 2017 9:41:00 AM" }, { "c": "149.0805", "h": "149.0825", "l": "149.059", "o": "149.059", "t": "Nov 21, 2017 9:42:00 AM" }, { "c": "149.1075", "h": "149.11", "l": "149.0805", "o": "149.0815", "t": "Nov 21, 2017 9:43:00 AM" }, { "c": "149.1035", "h": "149.112", "l": "149.0945", "o": "149.108", "t": "Nov 21, 2017 9:44:00 AM" }, { "c": "149.109", "h": "149.1125", "l": "149.0985", "o": "149.103", "t": "Nov 21, 2017 9:45:00 AM" }, { "c": "149.12", "h": "149.121", "l": "149.1065", "o": "149.1105", "t": "Nov 21, 2017 9:46:00 AM" }, { "c": "149.1445", "h": "149.1485", "l": "149.1185", "o": "149.12", "t": "Nov 21, 2017 9:47:00 AM" }, { "c": "149.1455", "h": "149.158", "l": "149.1425", "o": "149.1465", "t": "Nov 21, 2017 9:48:00 AM" }, { "c": "149.147", "h": "149.157", "l": "149.138", "o": "149.145", "t": "Nov 21, 2017 9:49:00 AM" }, { "c": "149.1275", "h": "149.152", "l": "149.1275", "o": "149.147", "t": "Nov 21, 2017 9:50:00 AM" }, { "c": "149.119", "h": "149.1325", "l": "149.1155", "o": "149.1275", "t": "Nov 21, 2017 9:51:00 AM" }, { "c": "149.102", "h": "149.1315", "l": "149.101", "o": "149.1175", "t": "Nov 21, 2017 9:52:00 AM" }, { "c": "149.1175", "h": "149.1175", "l": "149.097", "o": "149.102", "t": "Nov 21, 2017 9:53:00 AM" }, { "c": "149.1145", "h": "149.1175", "l": "149.108", "o": "149.117", "t": "Nov 21, 2017 9:54:00 AM" }, { "c": "149.13", "h": "149.136", "l": "149.1065", "o": "149.1155", "t": "Nov 21, 2017 9:55:00 AM" }, { "c": "149.1335", "h": "149.134", "l": "149.121", "o": "149.13", "t": "Nov 21, 2017 9:56:00 AM" }, { "c": "149.1305", "h": "149.1345", "l": "149.128", "o": "149.1345", "t": "Nov 21, 2017 9:57:00 AM" }, { "c": "149.1275", "h": "149.1325", "l": "149.1275", "o": "149.13", "t": "Nov 21, 2017 9:58:00 AM" }, { "c": "149.1255", "h": "149.1345", "l": "149.1205", "o": "149.128", "t": "Nov 21, 2017 9:59:00 AM" }, { "c": "149.1285", "h": "149.1285", "l": "149.115", "o": "149.124", "t": "Nov 21, 2017 10:00:00 AM" }, { "c": "149.121", "h": "149.13", "l": "149.1205", "o": "149.1285", "t": "Nov 21, 2017 10:01:00 AM" }, { "c": "149.135", "h": "149.136", "l": "149.1195", "o": "149.121", "t": "Nov 21, 2017 10:02:00 AM" }, { "c": "149.1355", "h": "149.1415", "l": "149.1315", "o": "149.135", "t": "Nov 21, 2017 10:03:00 AM" }, { "c": "149.1435", "h": "149.156", "l": "149.136", "o": "149.136", "t": "Nov 21, 2017 10:04:00 AM" }, { "c": "149.1585", "h": "149.17", "l": "149.1365", "o": "149.144", "t": "Nov 21, 2017 10:05:00 AM" }, { "c": "149.2005", "h": "149.2005", "l": "149.155", "o": "149.1585", "t": "Nov 21, 2017 10:06:00 AM" }, { "c": "149.187", "h": "149.202", "l": "149.1865", "o": "149.2005", "t": "Nov 21, 2017 10:07:00 AM" }, { "c": "149.163", "h": "149.188", "l": "149.1605", "o": "149.188", "t": "Nov 21, 2017 10:08:00 AM" }, { "c": "149.152", "h": "149.175", "l": "149.147", "o": "149.1635", "t": "Nov 21, 2017 10:09:00 AM" }, { "c": "149.1585", "h": "149.163", "l": "149.1445", "o": "149.1515", "t": "Nov 21, 2017 10:10:00 AM" }, { "c": "149.1665", "h": "149.1715", "l": "149.148", "o": "149.158", "t": "Nov 21, 2017 10:11:00 AM" }, { "c": "149.182", "h": "149.1885", "l": "149.1645", "o": "149.1655", "t": "Nov 21, 2017 10:12:00 AM" }, { "c": "149.1855", "h": "149.187", "l": "149.178", "o": "149.1825", "t": "Nov 21, 2017 10:13:00 AM" }, { "c": "149.1825", "h": "149.1915", "l": "149.18", "o": "149.1855", "t": "Nov 21, 2017 10:14:00 AM" }, { "c": "149.1685", "h": "149.184", "l": "149.1635", "o": "149.1835", "t": "Nov 21, 2017 10:15:00 AM" }, { "c": "149.1655", "h": "149.174", "l": "149.159", "o": "149.167", "t": "Nov 21, 2017 10:16:00 AM" }, { "c": "149.167", "h": "149.176", "l": "149.1645", "o": "149.166", "t": "Nov 21, 2017 10:17:00 AM" }, { "c": "149.1755", "h": "149.1775", "l": "149.1665", "o": "149.167", "t": "Nov 21, 2017 10:18:00 AM" }, { "c": "149.1895", "h": "149.202", "l": "149.1745", "o": "149.176", "t": "Nov 21, 2017 10:19:00 AM" }, { "c": "149.206", "h": "149.208", "l": "149.188", "o": "149.1895", "t": "Nov 21, 2017 10:20:00 AM" }, { "c": "149.198", "h": "149.214", "l": "149.1975", "o": "149.2065", "t": "Nov 21, 2017 10:21:00 AM" }, { "c": "149.1635", "h": "149.1985", "l": "149.1615", "o": "149.1975", "t": "Nov 21, 2017 10:22:00 AM" }, { "c": "149.1685", "h": "149.1725", "l": "149.1595", "o": "149.1625", "t": "Nov 21, 2017 10:23:00 AM" }, { "c": "149.1665", "h": "149.174", "l": "149.163", "o": "149.168", "t": "Nov 21, 2017 10:24:00 AM" }, { "c": "149.161", "h": "149.1725", "l": "149.155", "o": "149.1665", "t": "Nov 21, 2017 10:25:00 AM" }, { "c": "149.1495", "h": "149.1655", "l": "149.146", "o": "149.1615", "t": "Nov 21, 2017 10:26:00 AM" }, { "c": "149.139", "h": "149.1645", "l": "149.139", "o": "149.1495", "t": "Nov 21, 2017 10:27:00 AM" }, { "c": "149.099", "h": "149.139", "l": "149.088", "o": "149.138", "t": "Nov 21, 2017 10:28:00 AM" }, { "c": "149.09", "h": "149.101", "l": "149.089", "o": "149.0995", "t": "Nov 21, 2017 10:29:00 AM" }, { "c": "149.0805", "h": "149.097", "l": "149.0775", "o": "149.09", "t": "Nov 21, 2017 10:30:00 AM" }, { "c": "149.0995", "h": "149.1055", "l": "149.0775", "o": "149.0775", "t": "Nov 21, 2017 10:31:00 AM" }, { "c": "149.0865", "h": "149.1035", "l": "149.086", "o": "149.0985", "t": "Nov 21, 2017 10:32:00 AM" }, { "c": "149.0845", "h": "149.091", "l": "149.0745", "o": "149.0865", "t": "Nov 21, 2017 10:33:00 AM" }, { "c": "149.048", "h": "149.089", "l": "149.048", "o": "149.0845", "t": "Nov 21, 2017 10:34:00 AM" }, { "c": "149.0495", "h": "149.0685", "l": "149.0365", "o": "149.0485", "t": "Nov 21, 2017 10:35:00 AM" }, { "c": "149.068", "h": "149.068", "l": "149.0425", "o": "149.05", "t": "Nov 21, 2017 10:36:00 AM" }, { "c": "149.0545", "h": "149.0765", "l": "149.0505", "o": "149.0675", "t": "Nov 21, 2017 10:37:00 AM" }, { "c": "149.081", "h": "149.0835", "l": "149.0535", "o": "149.0535", "t": "Nov 21, 2017 10:38:00 AM" }, { "c": "149.0715", "h": "149.084", "l": "149.0685", "o": "149.078", "t": "Nov 21, 2017 10:39:00 AM" }, { "c": "149.091", "h": "149.091", "l": "149.0695", "o": "149.072", "t": "Nov 21, 2017 10:40:00 AM" }, { "c": "149.0805", "h": "149.0915", "l": "149.0775", "o": "149.091", "t": "Nov 21, 2017 10:41:00 AM" }, { "c": "149.095", "h": "149.095", "l": "149.077", "o": "149.0805", "t": "Nov 21, 2017 10:42:00 AM" }, { "c": "149.0835", "h": "149.096", "l": "149.0825", "o": "149.096", "t": "Nov 21, 2017 10:43:00 AM" }, { "c": "149.08", "h": "149.091", "l": "149.077", "o": "149.082", "t": "Nov 21, 2017 10:44:00 AM" }, { "c": "149.082", "h": "149.089", "l": "149.076", "o": "149.078", "t": "Nov 21, 2017 10:45:00 AM" }, { "c": "149.101", "h": "149.104", "l": "149.083", "o": "149.084", "t": "Nov 21, 2017 10:46:00 AM" }, { "c": "149.085", "h": "149.104", "l": "149.083", "o": "149.1", "t": "Nov 21, 2017 10:47:00 AM" }, { "c": "149.087", "h": "149.092", "l": "149.081", "o": "149.086", "t": "Nov 21, 2017 10:48:00 AM" }, { "c": "149.084", "h": "149.092", "l": "149.08", "o": "149.087", "t": "Nov 21, 2017 10:49:00 AM" }, { "c": "149.079", "h": "149.088", "l": "149.077", "o": "149.082", "t": "Nov 21, 2017 10:50:00 AM" }, { "c": "149.103", "h": "149.108", "l": "149.077", "o": "149.079", "t": "Nov 21, 2017 10:51:00 AM" }, { "c": "149.095", "h": "149.111", "l": "149.089", "o": "149.102", "t": "Nov 21, 2017 10:52:00 AM" }, { "c": "149.115", "h": "149.115", "l": "149.093", "o": "149.094", "t": "Nov 21, 2017 10:53:00 AM" }, { "c": "149.093", "h": "149.117", "l": "149.093", "o": "149.114", "t": "Nov 21, 2017 10:54:00 AM" }, { "c": "149.084", "h": "149.093", "l": "149.08", "o": "149.092", "t": "Nov 21, 2017 10:55:00 AM" }, { "c": "149.073", "h": "149.088", "l": "149.064", "o": "149.086", "t": "Nov 21, 2017 10:56:00 AM" }, { "c": "149.086", "h": "149.087", "l": "149.072", "o": "149.072", "t": "Nov 21, 2017 10:57:00 AM" }, { "c": "149.087", "h": "149.1", "l": "149.082", "o": "149.087", "t": "Nov 21, 2017 10:58:00 AM" }, { "c": "149.084", "h": "149.086", "l": "149.075", "o": "149.086", "t": "Nov 21, 2017 10:59:00 AM" }, { "c": "149.074", "h": "149.085", "l": "149.07", "o": "149.083", "t": "Nov 21, 2017 11:00:00 AM" }, { "c": "149.082", "h": "149.085", "l": "149.073", "o": "149.075", "t": "Nov 21, 2017 11:01:00 AM" }, { "c": "149.095", "h": "149.097", "l": "149.081", "o": "149.081", "t": "Nov 21, 2017 11:02:00 AM" }, { "c": "149.08", "h": "149.104", "l": "149.08", "o": "149.095", "t": "Nov 21, 2017 11:03:00 AM" }, { "c": "149.081", "h": "149.081", "l": "149.079", "o": "149.079", "t": "Nov 21, 2017 11:04:00 AM" } ] ================================================ FILE: app/src/main/assets/timesharing_backup.json ================================================ [ { "c": "148.942", "h": "148.9445", "l": "148.9245", "o": "148.926", "t": "Nov 21, 2017 2:45:00 AM" }, { "c": "148.9105", "h": "148.9445", "l": "148.9075", "o": "148.942", "t": "Nov 21, 2017 2:46:00 AM" }, { "c": "148.9175", "h": "148.9175", "l": "148.878", "o": "148.906", "t": "Nov 21, 2017 2:47:00 AM" }, { "c": "148.9155", "h": "148.933", "l": "148.905", "o": "148.9175", "t": "Nov 21, 2017 2:48:00 AM" }, { "c": "148.9035", "h": "148.9195", "l": "148.8955", "o": "148.916", "t": "Nov 21, 2017 2:49:00 AM" }, { "c": "148.9045", "h": "148.9075", "l": "148.8975", "o": "148.9035", "t": "Nov 21, 2017 2:50:00 AM" }, { "c": "148.9", "h": "148.9045", "l": "148.9", "o": "148.9045", "t": "Nov 21, 2017 2:51:00 AM" }, { "c": "148.9025", "h": "148.908", "l": "148.8915", "o": "148.9005", "t": "Nov 21, 2017 2:52:00 AM" }, { "c": "148.926", "h": "148.926", "l": "148.9015", "o": "148.9015", "t": "Nov 21, 2017 2:53:00 AM" }, { "c": "148.9105", "h": "148.926", "l": "148.91", "o": "148.926", "t": "Nov 21, 2017 2:54:00 AM" }, { "c": "148.9265", "h": "148.941", "l": "148.91", "o": "148.91", "t": "Nov 21, 2017 2:55:00 AM" }, { "c": "148.933", "h": "148.9455", "l": "148.9255", "o": "148.9265", "t": "Nov 21, 2017 2:56:00 AM" }, { "c": "148.94", "h": "148.952", "l": "148.932", "o": "148.9325", "t": "Nov 21, 2017 2:57:00 AM" }, { "c": "148.9325", "h": "148.9465", "l": "148.928", "o": "148.94", "t": "Nov 21, 2017 2:58:00 AM" }, { "c": "148.937", "h": "148.9395", "l": "148.913", "o": "148.932", "t": "Nov 21, 2017 2:59:00 AM" }, { "c": "148.9635", "h": "148.9655", "l": "148.937", "o": "148.937", "t": "Nov 21, 2017 3:00:00 AM" }, { "c": "148.973", "h": "148.978", "l": "148.962", "o": "148.962", "t": "Nov 21, 2017 3:01:00 AM" }, { "c": "148.9725", "h": "148.976", "l": "148.966", "o": "148.9725", "t": "Nov 21, 2017 3:02:00 AM" }, { "c": "148.975", "h": "148.975", "l": "148.965", "o": "148.9725", "t": "Nov 21, 2017 3:03:00 AM" }, { "c": "149.0235", "h": "149.03", "l": "148.9635", "o": "148.976", "t": "Nov 21, 2017 3:04:00 AM" }, { "c": "148.972", "h": "149.093", "l": "148.9695", "o": "149.024", "t": "Nov 21, 2017 3:05:00 AM" }, { "c": "148.981", "h": "148.981", "l": "148.9615", "o": "148.973", "t": "Nov 21, 2017 3:06:00 AM" }, { "c": "148.9825", "h": "148.9885", "l": "148.9755", "o": "148.981", "t": "Nov 21, 2017 3:07:00 AM" }, { "c": "148.9695", "h": "148.994", "l": "148.9665", "o": "148.982", "t": "Nov 21, 2017 3:08:00 AM" }, { "c": "148.9675", "h": "148.9815", "l": "148.9635", "o": "148.97", "t": "Nov 21, 2017 3:09:00 AM" }, { "c": "149.0195", "h": "149.0215", "l": "148.963", "o": "148.9675", "t": "Nov 21, 2017 3:10:00 AM" }, { "c": "149.0355", "h": "149.0355", "l": "149.005", "o": "149.0185", "t": "Nov 21, 2017 3:11:00 AM" }, { "c": "149.03", "h": "149.0585", "l": "149.0285", "o": "149.036", "t": "Nov 21, 2017 3:12:00 AM" }, { "c": "149.02", "h": "149.0315", "l": "149.016", "o": "149.0295", "t": "Nov 21, 2017 3:13:00 AM" }, { "c": "149.0495", "h": "149.071", "l": "149.0195", "o": "149.0215", "t": "Nov 21, 2017 3:14:00 AM" }, { "c": "149.0655", "h": "149.0785", "l": "149.032", "o": "149.0505", "t": "Nov 21, 2017 3:15:00 AM" }, { "c": "149.065", "h": "149.0795", "l": "149.059", "o": "149.0655", "t": "Nov 21, 2017 3:16:00 AM" }, { "c": "149.0715", "h": "149.09", "l": "149.062", "o": "149.0645", "t": "Nov 21, 2017 3:17:00 AM" }, { "c": "149.078", "h": "149.0785", "l": "149.06", "o": "149.0715", "t": "Nov 21, 2017 3:18:00 AM" }, { "c": "149.0855", "h": "149.086", "l": "149.0755", "o": "149.0775", "t": "Nov 21, 2017 3:19:00 AM" }, { "c": "149.1735", "h": "149.1755", "l": "149.085", "o": "149.0855", "t": "Nov 21, 2017 3:20:00 AM" }, { "c": "149.147", "h": "149.178", "l": "149.103", "o": "149.1735", "t": "Nov 21, 2017 3:21:00 AM" }, { "c": "149.1395", "h": "149.149", "l": "149.1255", "o": "149.1465", "t": "Nov 21, 2017 3:22:00 AM" }, { "c": "149.1585", "h": "149.1775", "l": "149.1375", "o": "149.1385", "t": "Nov 21, 2017 3:23:00 AM" }, { "c": "149.157", "h": "149.1615", "l": "149.1475", "o": "149.1595", "t": "Nov 21, 2017 3:24:00 AM" }, { "c": "149.147", "h": "149.158", "l": "149.131", "o": "149.158", "t": "Nov 21, 2017 3:25:00 AM" }, { "c": "149.1485", "h": "149.157", "l": "149.145", "o": "149.147", "t": "Nov 21, 2017 3:26:00 AM" }, { "c": "149.165", "h": "149.171", "l": "149.1475", "o": "149.1485", "t": "Nov 21, 2017 3:27:00 AM" }, { "c": "149.178", "h": "149.1805", "l": "149.1635", "o": "149.1635", "t": "Nov 21, 2017 3:28:00 AM" }, { "c": "149.19", "h": "149.19", "l": "149.1745", "o": "149.178", "t": "Nov 21, 2017 3:29:00 AM" }, { "c": "149.1835", "h": "149.198", "l": "149.177", "o": "149.191", "t": "Nov 21, 2017 3:30:00 AM" }, { "c": "149.177", "h": "149.187", "l": "149.167", "o": "149.1835", "t": "Nov 21, 2017 3:31:00 AM" }, { "c": "149.1725", "h": "149.1855", "l": "149.1685", "o": "149.1775", "t": "Nov 21, 2017 3:32:00 AM" }, { "c": "149.193", "h": "149.195", "l": "149.168", "o": "149.1725", "t": "Nov 21, 2017 3:33:00 AM" }, { "c": "149.191", "h": "149.204", "l": "149.1825", "o": "149.1935", "t": "Nov 21, 2017 3:34:00 AM" }, { "c": "149.195", "h": "149.198", "l": "149.1825", "o": "149.1905", "t": "Nov 21, 2017 3:35:00 AM" }, { "c": "149.197", "h": "149.2395", "l": "149.193", "o": "149.196", "t": "Nov 21, 2017 3:36:00 AM" }, { "c": "149.2235", "h": "149.232", "l": "149.193", "o": "149.197", "t": "Nov 21, 2017 3:37:00 AM" }, { "c": "149.2065", "h": "149.2355", "l": "149.2065", "o": "149.224", "t": "Nov 21, 2017 3:38:00 AM" }, { "c": "149.2145", "h": "149.2185", "l": "149.2075", "o": "149.2075", "t": "Nov 21, 2017 3:39:00 AM" }, { "c": "149.2075", "h": "149.2145", "l": "149.2045", "o": "149.2145", "t": "Nov 21, 2017 3:40:00 AM" }, { "c": "149.1765", "h": "149.2125", "l": "149.1765", "o": "149.2085", "t": "Nov 21, 2017 3:41:00 AM" }, { "c": "149.171", "h": "149.189", "l": "149.1655", "o": "149.1775", "t": "Nov 21, 2017 3:42:00 AM" }, { "c": "149.183", "h": "149.188", "l": "149.165", "o": "149.171", "t": "Nov 21, 2017 3:43:00 AM" }, { "c": "149.181", "h": "149.1925", "l": "149.1685", "o": "149.183", "t": "Nov 21, 2017 3:44:00 AM" }, { "c": "149.1775", "h": "149.192", "l": "149.172", "o": "149.179", "t": "Nov 21, 2017 3:45:00 AM" }, { "c": "149.174", "h": "149.1805", "l": "149.1635", "o": "149.1765", "t": "Nov 21, 2017 3:46:00 AM" }, { "c": "149.17", "h": "149.1885", "l": "149.17", "o": "149.1745", "t": "Nov 21, 2017 3:47:00 AM" }, { "c": "149.1735", "h": "149.1805", "l": "149.166", "o": "149.1705", "t": "Nov 21, 2017 3:48:00 AM" }, { "c": "149.1815", "h": "149.1875", "l": "149.1735", "o": "149.1735", "t": "Nov 21, 2017 3:49:00 AM" }, { "c": "149.1585", "h": "149.181", "l": "149.1495", "o": "149.1805", "t": "Nov 21, 2017 3:50:00 AM" }, { "c": "149.1465", "h": "149.162", "l": "149.1455", "o": "149.158", "t": "Nov 21, 2017 3:51:00 AM" }, { "c": "149.1545", "h": "149.1625", "l": "149.141", "o": "149.147", "t": "Nov 21, 2017 3:52:00 AM" }, { "c": "149.1405", "h": "149.163", "l": "149.137", "o": "149.1545", "t": "Nov 21, 2017 3:53:00 AM" }, { "c": "149.148", "h": "149.1505", "l": "149.137", "o": "149.1405", "t": "Nov 21, 2017 3:54:00 AM" }, { "c": "149.153", "h": "149.156", "l": "149.129", "o": "149.148", "t": "Nov 21, 2017 3:55:00 AM" }, { "c": "149.1375", "h": "149.154", "l": "149.1375", "o": "149.1535", "t": "Nov 21, 2017 3:56:00 AM" }, { "c": "149.163", "h": "149.163", "l": "149.1275", "o": "149.138", "t": "Nov 21, 2017 3:57:00 AM" }, { "c": "149.166", "h": "149.174", "l": "149.1495", "o": "149.163", "t": "Nov 21, 2017 3:58:00 AM" }, { "c": "149.1485", "h": "149.1775", "l": "149.1435", "o": "149.1655", "t": "Nov 21, 2017 3:59:00 AM" }, { "c": "149.1245", "h": "149.1515", "l": "149.1245", "o": "149.147", "t": "Nov 21, 2017 4:00:00 AM" }, { "c": "149.115", "h": "149.1295", "l": "149.115", "o": "149.1245", "t": "Nov 21, 2017 4:01:00 AM" }, { "c": "149.119", "h": "149.125", "l": "149.1145", "o": "149.116", "t": "Nov 21, 2017 4:02:00 AM" }, { "c": "149.1325", "h": "149.1325", "l": "149.11", "o": "149.1185", "t": "Nov 21, 2017 4:03:00 AM" }, { "c": "149.152", "h": "149.163", "l": "149.1325", "o": "149.1325", "t": "Nov 21, 2017 4:04:00 AM" }, { "c": "149.161", "h": "149.164", "l": "149.152", "o": "149.152", "t": "Nov 21, 2017 4:05:00 AM" }, { "c": "149.1595", "h": "149.169", "l": "149.1585", "o": "149.1615", "t": "Nov 21, 2017 4:06:00 AM" }, { "c": "149.1475", "h": "149.166", "l": "149.144", "o": "149.1595", "t": "Nov 21, 2017 4:07:00 AM" }, { "c": "149.1455", "h": "149.152", "l": "149.137", "o": "149.148", "t": "Nov 21, 2017 4:08:00 AM" }, { "c": "149.1375", "h": "149.1485", "l": "149.1345", "o": "149.147", "t": "Nov 21, 2017 4:09:00 AM" }, { "c": "149.1375", "h": "149.144", "l": "149.1265", "o": "149.137", "t": "Nov 21, 2017 4:10:00 AM" }, { "c": "149.1485", "h": "149.152", "l": "149.1365", "o": "149.138", "t": "Nov 21, 2017 4:11:00 AM" }, { "c": "149.1355", "h": "149.1475", "l": "149.133", "o": "149.1475", "t": "Nov 21, 2017 4:12:00 AM" }, { "c": "149.116", "h": "149.138", "l": "149.1155", "o": "149.1355", "t": "Nov 21, 2017 4:13:00 AM" }, { "c": "149.13", "h": "149.1315", "l": "149.1155", "o": "149.1165", "t": "Nov 21, 2017 4:14:00 AM" }, { "c": "149.124", "h": "149.13", "l": "149.1195", "o": "149.1295", "t": "Nov 21, 2017 4:15:00 AM" }, { "c": "149.1265", "h": "149.1285", "l": "149.1245", "o": "149.1245", "t": "Nov 21, 2017 4:16:00 AM" }, { "c": "149.123", "h": "149.1315", "l": "149.112", "o": "149.128", "t": "Nov 21, 2017 4:17:00 AM" }, { "c": "149.115", "h": "149.126", "l": "149.109", "o": "149.1225", "t": "Nov 21, 2017 4:18:00 AM" }, { "c": "149.1125", "h": "149.123", "l": "149.11", "o": "149.1145", "t": "Nov 21, 2017 4:19:00 AM" }, { "c": "149.1145", "h": "149.117", "l": "149.1065", "o": "149.112", "t": "Nov 21, 2017 4:20:00 AM" }, { "c": "149.106", "h": "149.115", "l": "149.1045", "o": "149.114", "t": "Nov 21, 2017 4:21:00 AM" }, { "c": "149.0965", "h": "149.105", "l": "149.094", "o": "149.1045", "t": "Nov 21, 2017 4:22:00 AM" }, { "c": "149.1195", "h": "149.1195", "l": "149.095", "o": "149.0965", "t": "Nov 21, 2017 4:23:00 AM" }, { "c": "149.123", "h": "149.1305", "l": "149.115", "o": "149.119", "t": "Nov 21, 2017 4:24:00 AM" }, { "c": "149.134", "h": "149.1355", "l": "149.1215", "o": "149.122", "t": "Nov 21, 2017 4:25:00 AM" }, { "c": "149.1215", "h": "149.137", "l": "149.12", "o": "149.134", "t": "Nov 21, 2017 4:26:00 AM" }, { "c": "149.1335", "h": "149.137", "l": "149.118", "o": "149.1205", "t": "Nov 21, 2017 4:27:00 AM" }, { "c": "149.144", "h": "149.1525", "l": "149.134", "o": "149.134", "t": "Nov 21, 2017 4:28:00 AM" }, { "c": "149.1435", "h": "149.1585", "l": "149.1425", "o": "149.1445", "t": "Nov 21, 2017 4:29:00 AM" }, { "c": "149.1455", "h": "149.151", "l": "149.136", "o": "149.1435", "t": "Nov 21, 2017 4:30:00 AM" }, { "c": "149.114", "h": "149.147", "l": "149.114", "o": "149.146", "t": "Nov 21, 2017 4:31:00 AM" }, { "c": "149.103", "h": "149.1155", "l": "149.1025", "o": "149.114", "t": "Nov 21, 2017 4:32:00 AM" }, { "c": "149.0985", "h": "149.1115", "l": "149.096", "o": "149.1035", "t": "Nov 21, 2017 4:33:00 AM" }, { "c": "149.0995", "h": "149.1005", "l": "149.0875", "o": "149.0975", "t": "Nov 21, 2017 4:34:00 AM" }, { "c": "149.088", "h": "149.0985", "l": "149.0845", "o": "149.0985", "t": "Nov 21, 2017 4:35:00 AM" }, { "c": "149.089", "h": "149.089", "l": "149.082", "o": "149.0875", "t": "Nov 21, 2017 4:36:00 AM" }, { "c": "149.085", "h": "149.095", "l": "149.0815", "o": "149.088", "t": "Nov 21, 2017 4:37:00 AM" }, { "c": "149.09", "h": "149.091", "l": "149.0745", "o": "149.0855", "t": "Nov 21, 2017 4:38:00 AM" }, { "c": "149.0945", "h": "149.0985", "l": "149.0875", "o": "149.09", "t": "Nov 21, 2017 4:39:00 AM" }, { "c": "149.098", "h": "149.099", "l": "149.0835", "o": "149.0945", "t": "Nov 21, 2017 4:40:00 AM" }, { "c": "149.0815", "h": "149.0995", "l": "149.0795", "o": "149.098", "t": "Nov 21, 2017 4:41:00 AM" }, { "c": "149.0875", "h": "149.092", "l": "149.08", "o": "149.0815", "t": "Nov 21, 2017 4:42:00 AM" }, { "c": "149.091", "h": "149.0965", "l": "149.0875", "o": "149.0875", "t": "Nov 21, 2017 4:43:00 AM" }, { "c": "149.0805", "h": "149.0925", "l": "149.079", "o": "149.0915", "t": "Nov 21, 2017 4:44:00 AM" }, { "c": "149.0745", "h": "149.081", "l": "149.0675", "o": "149.0795", "t": "Nov 21, 2017 4:45:00 AM" }, { "c": "149.0775", "h": "149.0785", "l": "149.0715", "o": "149.075", "t": "Nov 21, 2017 4:46:00 AM" }, { "c": "149.077", "h": "149.079", "l": "149.0765", "o": "149.078", "t": "Nov 21, 2017 4:47:00 AM" }, { "c": "149.0835", "h": "149.0835", "l": "149.077", "o": "149.0775", "t": "Nov 21, 2017 4:48:00 AM" }, { "c": "149.0765", "h": "149.083", "l": "149.073", "o": "149.083", "t": "Nov 21, 2017 4:49:00 AM" }, { "c": "149.069", "h": "149.078", "l": "149.0665", "o": "149.076", "t": "Nov 21, 2017 4:50:00 AM" }, { "c": "149.0715", "h": "149.076", "l": "149.0675", "o": "149.07", "t": "Nov 21, 2017 4:51:00 AM" }, { "c": "149.0735", "h": "149.076", "l": "149.064", "o": "149.0725", "t": "Nov 21, 2017 4:52:00 AM" }, { "c": "149.0675", "h": "149.0735", "l": "149.063", "o": "149.0715", "t": "Nov 21, 2017 4:53:00 AM" }, { "c": "149.0775", "h": "149.083", "l": "149.0655", "o": "149.067", "t": "Nov 21, 2017 4:54:00 AM" }, { "c": "149.079", "h": "149.081", "l": "149.0645", "o": "149.0775", "t": "Nov 21, 2017 4:55:00 AM" }, { "c": "149.066", "h": "149.0795", "l": "149.061", "o": "149.0785", "t": "Nov 21, 2017 4:56:00 AM" }, { "c": "149.048", "h": "149.0655", "l": "149.0445", "o": "149.065", "t": "Nov 21, 2017 4:57:00 AM" }, { "c": "149.0435", "h": "149.0615", "l": "149.0365", "o": "149.0485", "t": "Nov 21, 2017 4:58:00 AM" }, { "c": "149.031", "h": "149.0545", "l": "149.025", "o": "149.043", "t": "Nov 21, 2017 4:59:00 AM" }, { "c": "149.0095", "h": "149.0455", "l": "149.002", "o": "149.0305", "t": "Nov 21, 2017 5:00:00 AM" }, { "c": "149.007", "h": "149.015", "l": "149.0", "o": "149.01", "t": "Nov 21, 2017 5:01:00 AM" }, { "c": "149.0045", "h": "149.0095", "l": "149.0", "o": "149.008", "t": "Nov 21, 2017 5:02:00 AM" }, { "c": "148.997", "h": "149.0035", "l": "148.9915", "o": "149.0035", "t": "Nov 21, 2017 5:03:00 AM" }, { "c": "148.989", "h": "148.998", "l": "148.985", "o": "148.997", "t": "Nov 21, 2017 5:04:00 AM" }, { "c": "148.9855", "h": "149.0", "l": "148.9825", "o": "148.99", "t": "Nov 21, 2017 5:05:00 AM" }, { "c": "148.977", "h": "148.9935", "l": "148.974", "o": "148.986", "t": "Nov 21, 2017 5:06:00 AM" }, { "c": "148.97", "h": "148.9815", "l": "148.961", "o": "148.9765", "t": "Nov 21, 2017 5:07:00 AM" }, { "c": "148.9865", "h": "148.988", "l": "148.9675", "o": "148.9695", "t": "Nov 21, 2017 5:08:00 AM" }, { "c": "149.002", "h": "149.002", "l": "148.9855", "o": "148.9865", "t": "Nov 21, 2017 5:09:00 AM" }, { "c": "149.0085", "h": "149.014", "l": "148.9905", "o": "149.0025", "t": "Nov 21, 2017 5:10:00 AM" }, { "c": "149.007", "h": "149.0085", "l": "148.9965", "o": "149.0075", "t": "Nov 21, 2017 5:11:00 AM" }, { "c": "149.0185", "h": "149.0185", "l": "149.007", "o": "149.007", "t": "Nov 21, 2017 5:12:00 AM" }, { "c": "149.0165", "h": "149.0215", "l": "149.0135", "o": "149.0185", "t": "Nov 21, 2017 5:13:00 AM" }, { "c": "149.0305", "h": "149.033", "l": "149.0145", "o": "149.0175", "t": "Nov 21, 2017 5:14:00 AM" }, { "c": "149.0365", "h": "149.0375", "l": "149.0285", "o": "149.03", "t": "Nov 21, 2017 5:15:00 AM" }, { "c": "149.0395", "h": "149.04", "l": "149.033", "o": "149.0375", "t": "Nov 21, 2017 5:16:00 AM" }, { "c": "149.0405", "h": "149.047", "l": "149.0375", "o": "149.039", "t": "Nov 21, 2017 5:17:00 AM" }, { "c": "149.0455", "h": "149.051", "l": "149.038", "o": "149.0405", "t": "Nov 21, 2017 5:18:00 AM" }, { "c": "149.0535", "h": "149.0585", "l": "149.0455", "o": "149.0455", "t": "Nov 21, 2017 5:19:00 AM" }, { "c": "149.055", "h": "149.059", "l": "149.0445", "o": "149.0535", "t": "Nov 21, 2017 5:20:00 AM" }, { "c": "149.0625", "h": "149.0625", "l": "149.0455", "o": "149.055", "t": "Nov 21, 2017 5:21:00 AM" }, { "c": "149.051", "h": "149.064", "l": "149.0495", "o": "149.0635", "t": "Nov 21, 2017 5:22:00 AM" }, { "c": "149.064", "h": "149.064", "l": "149.0505", "o": "149.051", "t": "Nov 21, 2017 5:23:00 AM" }, { "c": "149.056", "h": "149.0645", "l": "149.046", "o": "149.0645", "t": "Nov 21, 2017 5:24:00 AM" }, { "c": "149.0645", "h": "149.0645", "l": "149.0535", "o": "149.056", "t": "Nov 21, 2017 5:25:00 AM" }, { "c": "149.076", "h": "149.077", "l": "149.063", "o": "149.063", "t": "Nov 21, 2017 5:26:00 AM" }, { "c": "149.0805", "h": "149.0805", "l": "149.0725", "o": "149.0755", "t": "Nov 21, 2017 5:27:00 AM" }, { "c": "149.085", "h": "149.087", "l": "149.08", "o": "149.081", "t": "Nov 21, 2017 5:28:00 AM" }, { "c": "149.087", "h": "149.091", "l": "149.0825", "o": "149.084", "t": "Nov 21, 2017 5:29:00 AM" }, { "c": "149.091", "h": "149.093", "l": "149.0805", "o": "149.086", "t": "Nov 21, 2017 5:30:00 AM" }, { "c": "149.0975", "h": "149.0975", "l": "149.087", "o": "149.0915", "t": "Nov 21, 2017 5:31:00 AM" }, { "c": "149.084", "h": "149.1015", "l": "149.0795", "o": "149.097", "t": "Nov 21, 2017 5:32:00 AM" }, { "c": "149.107", "h": "149.1095", "l": "149.0825", "o": "149.0835", "t": "Nov 21, 2017 5:33:00 AM" }, { "c": "149.1025", "h": "149.113", "l": "149.095", "o": "149.1055", "t": "Nov 21, 2017 5:34:00 AM" }, { "c": "149.096", "h": "149.1035", "l": "149.0935", "o": "149.103", "t": "Nov 21, 2017 5:35:00 AM" }, { "c": "149.0915", "h": "149.097", "l": "149.091", "o": "149.096", "t": "Nov 21, 2017 5:36:00 AM" }, { "c": "149.0855", "h": "149.093", "l": "149.0835", "o": "149.0925", "t": "Nov 21, 2017 5:37:00 AM" }, { "c": "149.0755", "h": "149.087", "l": "149.0675", "o": "149.0865", "t": "Nov 21, 2017 5:38:00 AM" }, { "c": "149.05", "h": "149.078", "l": "149.0495", "o": "149.0765", "t": "Nov 21, 2017 5:39:00 AM" }, { "c": "149.018", "h": "149.051", "l": "149.0155", "o": "149.0485", "t": "Nov 21, 2017 5:40:00 AM" }, { "c": "149.0365", "h": "149.037", "l": "149.0175", "o": "149.018", "t": "Nov 21, 2017 5:41:00 AM" }, { "c": "149.0525", "h": "149.0535", "l": "149.0375", "o": "149.0375", "t": "Nov 21, 2017 5:42:00 AM" }, { "c": "149.057", "h": "149.07", "l": "149.0535", "o": "149.0535", "t": "Nov 21, 2017 5:43:00 AM" }, { "c": "149.064", "h": "149.064", "l": "149.0535", "o": "149.0575", "t": "Nov 21, 2017 5:44:00 AM" }, { "c": "149.074", "h": "149.074", "l": "149.0655", "o": "149.0655", "t": "Nov 21, 2017 5:45:00 AM" }, { "c": "149.0775", "h": "149.084", "l": "149.0725", "o": "149.0735", "t": "Nov 21, 2017 5:46:00 AM" }, { "c": "149.0745", "h": "149.08", "l": "149.0745", "o": "149.0775", "t": "Nov 21, 2017 5:47:00 AM" }, { "c": "149.0685", "h": "149.0775", "l": "149.068", "o": "149.076", "t": "Nov 21, 2017 5:48:00 AM" }, { "c": "149.067", "h": "149.0685", "l": "149.066", "o": "149.067", "t": "Nov 21, 2017 5:49:00 AM" }, { "c": "149.045", "h": "149.073", "l": "149.0445", "o": "149.066", "t": "Nov 21, 2017 5:50:00 AM" }, { "c": "149.0235", "h": "149.046", "l": "149.0225", "o": "149.045", "t": "Nov 21, 2017 5:51:00 AM" }, { "c": "149.004", "h": "149.023", "l": "149.004", "o": "149.023", "t": "Nov 21, 2017 5:52:00 AM" }, { "c": "149.0175", "h": "149.022", "l": "149.0045", "o": "149.0045", "t": "Nov 21, 2017 5:53:00 AM" }, { "c": "149.011", "h": "149.0195", "l": "149.008", "o": "149.0175", "t": "Nov 21, 2017 5:54:00 AM" }, { "c": "149.009", "h": "149.0115", "l": "149.001", "o": "149.0115", "t": "Nov 21, 2017 5:55:00 AM" }, { "c": "149.001", "h": "149.0155", "l": "148.9975", "o": "149.007", "t": "Nov 21, 2017 5:56:00 AM" }, { "c": "149.0025", "h": "149.005", "l": "148.998", "o": "149.0025", "t": "Nov 21, 2017 5:57:00 AM" }, { "c": "149.041", "h": "149.0555", "l": "149.0025", "o": "149.0025", "t": "Nov 21, 2017 5:58:00 AM" }, { "c": "149.064", "h": "149.069", "l": "149.033", "o": "149.042", "t": "Nov 21, 2017 5:59:00 AM" }, { "c": "149.0405", "h": "149.0805", "l": "149.0405", "o": "149.0805", "t": "Nov 21, 2017 6:00:00 AM" }, { "c": "149.0395", "h": "149.0395", "l": "149.039", "o": "149.039", "t": "Nov 21, 2017 6:01:00 AM" }, { "c": "149.0415", "h": "149.0415", "l": "149.0355", "o": "149.04", "t": "Nov 21, 2017 6:02:00 AM" }, { "c": "149.0635", "h": "149.0635", "l": "149.0415", "o": "149.0415", "t": "Nov 21, 2017 6:03:00 AM" }, { "c": "149.104", "h": "149.1045", "l": "149.064", "o": "149.064", "t": "Nov 21, 2017 6:04:00 AM" }, { "c": "149.0915", "h": "149.105", "l": "149.0915", "o": "149.102", "t": "Nov 21, 2017 6:05:00 AM" }, { "c": "149.0815", "h": "149.0925", "l": "149.08", "o": "149.0925", "t": "Nov 21, 2017 6:06:00 AM" }, { "c": "149.0875", "h": "149.0885", "l": "149.082", "o": "149.082", "t": "Nov 21, 2017 6:07:00 AM" }, { "c": "149.0925", "h": "149.0925", "l": "149.0865", "o": "149.088", "t": "Nov 21, 2017 6:08:00 AM" }, { "c": "149.0915", "h": "149.093", "l": "149.0865", "o": "149.0915", "t": "Nov 21, 2017 6:09:00 AM" }, { "c": "149.0885", "h": "149.0945", "l": "149.087", "o": "149.0935", "t": "Nov 21, 2017 6:10:00 AM" }, { "c": "149.0965", "h": "149.0965", "l": "149.088", "o": "149.088", "t": "Nov 21, 2017 6:11:00 AM" }, { "c": "149.097", "h": "149.0975", "l": "149.0945", "o": "149.0975", "t": "Nov 21, 2017 6:12:00 AM" }, { "c": "149.0965", "h": "149.098", "l": "149.0965", "o": "149.097", "t": "Nov 21, 2017 6:13:00 AM" }, { "c": "149.0965", "h": "149.097", "l": "149.0965", "o": "149.097", "t": "Nov 21, 2017 6:14:00 AM" }, { "c": "149.096", "h": "149.0965", "l": "149.092", "o": "149.095", "t": "Nov 21, 2017 6:15:00 AM" }, { "c": "149.096", "h": "149.099", "l": "149.094", "o": "149.097", "t": "Nov 21, 2017 6:16:00 AM" }, { "c": "149.0915", "h": "149.0965", "l": "149.0875", "o": "149.0965", "t": "Nov 21, 2017 6:17:00 AM" }, { "c": "149.1015", "h": "149.102", "l": "149.0885", "o": "149.091", "t": "Nov 21, 2017 6:18:00 AM" }, { "c": "149.0955", "h": "149.107", "l": "149.0905", "o": "149.1005", "t": "Nov 21, 2017 6:19:00 AM" }, { "c": "149.0935", "h": "149.105", "l": "149.0905", "o": "149.0965", "t": "Nov 21, 2017 6:20:00 AM" }, { "c": "149.096", "h": "149.0975", "l": "149.094", "o": "149.0945", "t": "Nov 21, 2017 6:21:00 AM" }, { "c": "149.0925", "h": "149.096", "l": "149.0925", "o": "149.096", "t": "Nov 21, 2017 6:22:00 AM" }, { "c": "149.09", "h": "149.0915", "l": "149.0855", "o": "149.0915", "t": "Nov 21, 2017 6:23:00 AM" }, { "c": "149.0885", "h": "149.09", "l": "149.0865", "o": "149.0895", "t": "Nov 21, 2017 6:24:00 AM" }, { "c": "149.088", "h": "149.0925", "l": "149.087", "o": "149.0895", "t": "Nov 21, 2017 6:25:00 AM" }, { "c": "149.085", "h": "149.0875", "l": "149.084", "o": "149.0875", "t": "Nov 21, 2017 6:26:00 AM" }, { "c": "149.0775", "h": "149.0825", "l": "149.0635", "o": "149.0825", "t": "Nov 21, 2017 6:27:00 AM" }, { "c": "149.0845", "h": "149.0865", "l": "149.078", "o": "149.0795", "t": "Nov 21, 2017 6:28:00 AM" }, { "c": "149.065", "h": "149.0885", "l": "149.062", "o": "149.085", "t": "Nov 21, 2017 6:29:00 AM" }, { "c": "149.0625", "h": "149.065", "l": "149.052", "o": "149.065", "t": "Nov 21, 2017 6:30:00 AM" }, { "c": "149.0905", "h": "149.094", "l": "149.061", "o": "149.0625", "t": "Nov 21, 2017 6:31:00 AM" }, { "c": "149.086", "h": "149.0915", "l": "149.0805", "o": "149.0915", "t": "Nov 21, 2017 6:32:00 AM" }, { "c": "149.087", "h": "149.088", "l": "149.0845", "o": "149.086", "t": "Nov 21, 2017 6:33:00 AM" }, { "c": "149.089", "h": "149.0925", "l": "149.0875", "o": "149.088", "t": "Nov 21, 2017 6:34:00 AM" }, { "c": "149.0865", "h": "149.095", "l": "149.0845", "o": "149.0895", "t": "Nov 21, 2017 6:35:00 AM" }, { "c": "149.097", "h": "149.0975", "l": "149.0865", "o": "149.0865", "t": "Nov 21, 2017 6:36:00 AM" }, { "c": "149.091", "h": "149.098", "l": "149.0875", "o": "149.0975", "t": "Nov 21, 2017 6:37:00 AM" }, { "c": "149.0745", "h": "149.095", "l": "149.067", "o": "149.092", "t": "Nov 21, 2017 6:38:00 AM" }, { "c": "149.08", "h": "149.0815", "l": "149.074", "o": "149.074", "t": "Nov 21, 2017 6:39:00 AM" }, { "c": "149.0775", "h": "149.0835", "l": "149.0775", "o": "149.08", "t": "Nov 21, 2017 6:40:00 AM" }, { "c": "149.0785", "h": "149.08", "l": "149.0765", "o": "149.077", "t": "Nov 21, 2017 6:41:00 AM" }, { "c": "149.077", "h": "149.081", "l": "149.0765", "o": "149.08", "t": "Nov 21, 2017 6:42:00 AM" }, { "c": "149.0765", "h": "149.0785", "l": "149.076", "o": "149.0775", "t": "Nov 21, 2017 6:43:00 AM" }, { "c": "149.075", "h": "149.0765", "l": "149.0745", "o": "149.076", "t": "Nov 21, 2017 6:44:00 AM" }, { "c": "149.056", "h": "149.0745", "l": "149.053", "o": "149.0745", "t": "Nov 21, 2017 6:45:00 AM" }, { "c": "149.0375", "h": "149.0585", "l": "149.0355", "o": "149.0555", "t": "Nov 21, 2017 6:46:00 AM" }, { "c": "149.0415", "h": "149.0425", "l": "149.0385", "o": "149.0395", "t": "Nov 21, 2017 6:47:00 AM" }, { "c": "149.0445", "h": "149.045", "l": "149.04", "o": "149.04", "t": "Nov 21, 2017 6:48:00 AM" }, { "c": "149.059", "h": "149.06", "l": "149.045", "o": "149.0455", "t": "Nov 21, 2017 6:49:00 AM" }, { "c": "149.051", "h": "149.059", "l": "149.049", "o": "149.059", "t": "Nov 21, 2017 6:50:00 AM" }, { "c": "149.0525", "h": "149.054", "l": "149.05", "o": "149.0515", "t": "Nov 21, 2017 6:51:00 AM" }, { "c": "149.0395", "h": "149.052", "l": "149.0385", "o": "149.052", "t": "Nov 21, 2017 6:52:00 AM" }, { "c": "149.039", "h": "149.0475", "l": "149.0365", "o": "149.04", "t": "Nov 21, 2017 6:53:00 AM" }, { "c": "149.039", "h": "149.04", "l": "149.0385", "o": "149.039", "t": "Nov 21, 2017 6:54:00 AM" }, { "c": "149.0345", "h": "149.04", "l": "149.034", "o": "149.0385", "t": "Nov 21, 2017 6:55:00 AM" }, { "c": "149.0405", "h": "149.045", "l": "149.034", "o": "149.0345", "t": "Nov 21, 2017 6:56:00 AM" }, { "c": "149.0245", "h": "149.0425", "l": "149.022", "o": "149.0415", "t": "Nov 21, 2017 6:57:00 AM" }, { "c": "149.03", "h": "149.037", "l": "149.019", "o": "149.0235", "t": "Nov 21, 2017 6:58:00 AM" }, { "c": "149.0235", "h": "149.0285", "l": "149.015", "o": "149.0285", "t": "Nov 21, 2017 6:59:00 AM" }, { "c": "149.032", "h": "149.033", "l": "149.019", "o": "149.0235", "t": "Nov 21, 2017 7:00:00 AM" }, { "c": "149.025", "h": "149.035", "l": "149.022", "o": "149.031", "t": "Nov 21, 2017 7:01:00 AM" }, { "c": "149.0245", "h": "149.029", "l": "149.011", "o": "149.0245", "t": "Nov 21, 2017 7:02:00 AM" }, { "c": "149.019", "h": "149.029", "l": "149.0135", "o": "149.026", "t": "Nov 21, 2017 7:03:00 AM" }, { "c": "149.011", "h": "149.02", "l": "149.011", "o": "149.02", "t": "Nov 21, 2017 7:04:00 AM" }, { "c": "149.0035", "h": "149.0165", "l": "148.9985", "o": "149.012", "t": "Nov 21, 2017 7:05:00 AM" }, { "c": "149.012", "h": "149.012", "l": "148.9965", "o": "149.0045", "t": "Nov 21, 2017 7:06:00 AM" }, { "c": "148.989", "h": "149.014", "l": "148.987", "o": "149.0115", "t": "Nov 21, 2017 7:07:00 AM" }, { "c": "149.0215", "h": "149.0225", "l": "148.991", "o": "148.991", "t": "Nov 21, 2017 7:08:00 AM" }, { "c": "149.0195", "h": "149.024", "l": "149.019", "o": "149.019", "t": "Nov 21, 2017 7:09:00 AM" }, { "c": "149.024", "h": "149.0255", "l": "149.017", "o": "149.018", "t": "Nov 21, 2017 7:10:00 AM" }, { "c": "149.052", "h": "149.0535", "l": "149.02", "o": "149.0225", "t": "Nov 21, 2017 7:11:00 AM" }, { "c": "149.0485", "h": "149.0545", "l": "149.048", "o": "149.052", "t": "Nov 21, 2017 7:12:00 AM" }, { "c": "149.042", "h": "149.048", "l": "149.041", "o": "149.0445", "t": "Nov 21, 2017 7:13:00 AM" }, { "c": "149.039", "h": "149.043", "l": "149.0385", "o": "149.043", "t": "Nov 21, 2017 7:14:00 AM" }, { "c": "149.0335", "h": "149.0395", "l": "149.0305", "o": "149.039", "t": "Nov 21, 2017 7:15:00 AM" }, { "c": "149.0285", "h": "149.0335", "l": "149.027", "o": "149.0325", "t": "Nov 21, 2017 7:16:00 AM" }, { "c": "149.027", "h": "149.03", "l": "149.0225", "o": "149.0285", "t": "Nov 21, 2017 7:17:00 AM" }, { "c": "149.0295", "h": "149.03", "l": "149.019", "o": "149.0265", "t": "Nov 21, 2017 7:18:00 AM" }, { "c": "149.031", "h": "149.031", "l": "149.027", "o": "149.0295", "t": "Nov 21, 2017 7:19:00 AM" }, { "c": "149.028", "h": "149.031", "l": "149.028", "o": "149.029", "t": "Nov 21, 2017 7:20:00 AM" }, { "c": "149.0355", "h": "149.0375", "l": "149.0265", "o": "149.027", "t": "Nov 21, 2017 7:21:00 AM" }, { "c": "149.0355", "h": "149.043", "l": "149.0325", "o": "149.0345", "t": "Nov 21, 2017 7:22:00 AM" }, { "c": "149.0355", "h": "149.037", "l": "149.0285", "o": "149.037", "t": "Nov 21, 2017 7:23:00 AM" }, { "c": "149.033", "h": "149.0395", "l": "149.033", "o": "149.033", "t": "Nov 21, 2017 7:24:00 AM" }, { "c": "149.033", "h": "149.0335", "l": "149.03", "o": "149.033", "t": "Nov 21, 2017 7:25:00 AM" }, { "c": "149.033", "h": "149.0345", "l": "149.033", "o": "149.0345", "t": "Nov 21, 2017 7:26:00 AM" }, { "c": "149.0435", "h": "149.0435", "l": "149.032", "o": "149.0325", "t": "Nov 21, 2017 7:27:00 AM" }, { "c": "149.0465", "h": "149.05", "l": "149.0425", "o": "149.0445", "t": "Nov 21, 2017 7:28:00 AM" }, { "c": "149.0475", "h": "149.0485", "l": "149.0465", "o": "149.047", "t": "Nov 21, 2017 7:29:00 AM" }, { "c": "149.056", "h": "149.0595", "l": "149.048", "o": "149.048", "t": "Nov 21, 2017 7:30:00 AM" }, { "c": "149.0595", "h": "149.06", "l": "149.057", "o": "149.057", "t": "Nov 21, 2017 7:31:00 AM" }, { "c": "149.0605", "h": "149.0615", "l": "149.056", "o": "149.058", "t": "Nov 21, 2017 7:32:00 AM" }, { "c": "149.067", "h": "149.07", "l": "149.059", "o": "149.062", "t": "Nov 21, 2017 7:33:00 AM" }, { "c": "149.063", "h": "149.075", "l": "149.063", "o": "149.0675", "t": "Nov 21, 2017 7:34:00 AM" }, { "c": "149.062", "h": "149.065", "l": "149.0615", "o": "149.0635", "t": "Nov 21, 2017 7:35:00 AM" }, { "c": "149.0625", "h": "149.063", "l": "149.061", "o": "149.061", "t": "Nov 21, 2017 7:36:00 AM" }, { "c": "149.06", "h": "149.0625", "l": "149.056", "o": "149.062", "t": "Nov 21, 2017 7:37:00 AM" }, { "c": "149.085", "h": "149.085", "l": "149.059", "o": "149.059", "t": "Nov 21, 2017 7:38:00 AM" }, { "c": "149.0745", "h": "149.085", "l": "149.0745", "o": "149.085", "t": "Nov 21, 2017 7:39:00 AM" }, { "c": "149.0705", "h": "149.0735", "l": "149.0685", "o": "149.073", "t": "Nov 21, 2017 7:40:00 AM" }, { "c": "149.066", "h": "149.074", "l": "149.0635", "o": "149.07", "t": "Nov 21, 2017 7:41:00 AM" }, { "c": "149.077", "h": "149.077", "l": "149.058", "o": "149.0665", "t": "Nov 21, 2017 7:42:00 AM" }, { "c": "149.0705", "h": "149.0835", "l": "149.066", "o": "149.077", "t": "Nov 21, 2017 7:43:00 AM" }, { "c": "149.059", "h": "149.0775", "l": "149.058", "o": "149.071", "t": "Nov 21, 2017 7:44:00 AM" }, { "c": "149.077", "h": "149.08", "l": "149.052", "o": "149.0595", "t": "Nov 21, 2017 7:45:00 AM" }, { "c": "149.0605", "h": "149.077", "l": "149.0605", "o": "149.0765", "t": "Nov 21, 2017 7:46:00 AM" }, { "c": "149.044", "h": "149.0605", "l": "149.038", "o": "149.06", "t": "Nov 21, 2017 7:47:00 AM" }, { "c": "149.051", "h": "149.063", "l": "149.0445", "o": "149.0445", "t": "Nov 21, 2017 7:48:00 AM" }, { "c": "149.06", "h": "149.06", "l": "149.048", "o": "149.0505", "t": "Nov 21, 2017 7:49:00 AM" }, { "c": "149.058", "h": "149.0625", "l": "149.0565", "o": "149.059", "t": "Nov 21, 2017 7:50:00 AM" }, { "c": "149.0555", "h": "149.0615", "l": "149.0555", "o": "149.058", "t": "Nov 21, 2017 7:51:00 AM" }, { "c": "149.0125", "h": "149.056", "l": "149.0125", "o": "149.054", "t": "Nov 21, 2017 7:52:00 AM" }, { "c": "149.0165", "h": "149.02", "l": "149.0015", "o": "149.0135", "t": "Nov 21, 2017 7:53:00 AM" }, { "c": "149.026", "h": "149.0335", "l": "149.007", "o": "149.0145", "t": "Nov 21, 2017 7:54:00 AM" }, { "c": "149.03", "h": "149.0355", "l": "149.0235", "o": "149.0255", "t": "Nov 21, 2017 7:55:00 AM" }, { "c": "149.036", "h": "149.0495", "l": "149.0305", "o": "149.0305", "t": "Nov 21, 2017 7:56:00 AM" }, { "c": "149.041", "h": "149.042", "l": "149.036", "o": "149.0375", "t": "Nov 21, 2017 7:57:00 AM" }, { "c": "149.0435", "h": "149.0535", "l": "149.0405", "o": "149.042", "t": "Nov 21, 2017 7:58:00 AM" }, { "c": "149.048", "h": "149.052", "l": "149.043", "o": "149.045", "t": "Nov 21, 2017 7:59:00 AM" }, { "c": "149.042", "h": "149.0565", "l": "149.032", "o": "149.047", "t": "Nov 21, 2017 8:00:00 AM" }, { "c": "149.0855", "h": "149.096", "l": "149.036", "o": "149.0425", "t": "Nov 21, 2017 8:01:00 AM" }, { "c": "149.103", "h": "149.104", "l": "149.0795", "o": "149.086", "t": "Nov 21, 2017 8:02:00 AM" }, { "c": "149.1095", "h": "149.1155", "l": "149.083", "o": "149.104", "t": "Nov 21, 2017 8:03:00 AM" }, { "c": "149.126", "h": "149.1395", "l": "149.109", "o": "149.11", "t": "Nov 21, 2017 8:04:00 AM" }, { "c": "149.127", "h": "149.141", "l": "149.123", "o": "149.1255", "t": "Nov 21, 2017 8:05:00 AM" }, { "c": "149.1145", "h": "149.138", "l": "149.112", "o": "149.126", "t": "Nov 21, 2017 8:06:00 AM" }, { "c": "149.0845", "h": "149.1185", "l": "149.078", "o": "149.114", "t": "Nov 21, 2017 8:07:00 AM" }, { "c": "149.0825", "h": "149.0875", "l": "149.0775", "o": "149.083", "t": "Nov 21, 2017 8:08:00 AM" }, { "c": "149.074", "h": "149.0825", "l": "149.0665", "o": "149.0815", "t": "Nov 21, 2017 8:09:00 AM" }, { "c": "149.0545", "h": "149.076", "l": "149.0505", "o": "149.0745", "t": "Nov 21, 2017 8:10:00 AM" }, { "c": "149.0685", "h": "149.0695", "l": "149.0525", "o": "149.053", "t": "Nov 21, 2017 8:11:00 AM" }, { "c": "149.093", "h": "149.1025", "l": "149.063", "o": "149.068", "t": "Nov 21, 2017 8:12:00 AM" }, { "c": "149.116", "h": "149.1195", "l": "149.0935", "o": "149.0935", "t": "Nov 21, 2017 8:13:00 AM" }, { "c": "149.103", "h": "149.1155", "l": "149.103", "o": "149.1155", "t": "Nov 21, 2017 8:14:00 AM" }, { "c": "149.1065", "h": "149.124", "l": "149.099", "o": "149.1025", "t": "Nov 21, 2017 8:15:00 AM" }, { "c": "149.1125", "h": "149.1135", "l": "149.1005", "o": "149.1075", "t": "Nov 21, 2017 8:16:00 AM" }, { "c": "149.1295", "h": "149.136", "l": "149.1125", "o": "149.1125", "t": "Nov 21, 2017 8:17:00 AM" }, { "c": "149.135", "h": "149.1375", "l": "149.1225", "o": "149.1285", "t": "Nov 21, 2017 8:18:00 AM" }, { "c": "149.1375", "h": "149.1395", "l": "149.1325", "o": "149.135", "t": "Nov 21, 2017 8:19:00 AM" }, { "c": "149.1615", "h": "149.17", "l": "149.1375", "o": "149.1375", "t": "Nov 21, 2017 8:20:00 AM" }, { "c": "149.1415", "h": "149.173", "l": "149.141", "o": "149.162", "t": "Nov 21, 2017 8:21:00 AM" }, { "c": "149.147", "h": "149.153", "l": "149.137", "o": "149.1425", "t": "Nov 21, 2017 8:22:00 AM" }, { "c": "149.131", "h": "149.1465", "l": "149.126", "o": "149.1465", "t": "Nov 21, 2017 8:23:00 AM" }, { "c": "149.1325", "h": "149.1365", "l": "149.1245", "o": "149.13", "t": "Nov 21, 2017 8:24:00 AM" }, { "c": "149.1565", "h": "149.157", "l": "149.1335", "o": "149.1335", "t": "Nov 21, 2017 8:25:00 AM" }, { "c": "149.208", "h": "149.21", "l": "149.155", "o": "149.1555", "t": "Nov 21, 2017 8:26:00 AM" }, { "c": "149.198", "h": "149.218", "l": "149.1915", "o": "149.207", "t": "Nov 21, 2017 8:27:00 AM" }, { "c": "149.202", "h": "149.207", "l": "149.195", "o": "149.196", "t": "Nov 21, 2017 8:28:00 AM" }, { "c": "149.216", "h": "149.2235", "l": "149.191", "o": "149.2035", "t": "Nov 21, 2017 8:29:00 AM" }, { "c": "149.193", "h": "149.216", "l": "149.185", "o": "149.2145", "t": "Nov 21, 2017 8:30:00 AM" }, { "c": "149.1835", "h": "149.197", "l": "149.1835", "o": "149.193", "t": "Nov 21, 2017 8:31:00 AM" }, { "c": "149.1735", "h": "149.1905", "l": "149.1735", "o": "149.182", "t": "Nov 21, 2017 8:32:00 AM" }, { "c": "149.1755", "h": "149.1835", "l": "149.1705", "o": "149.174", "t": "Nov 21, 2017 8:33:00 AM" }, { "c": "149.1795", "h": "149.187", "l": "149.1715", "o": "149.1755", "t": "Nov 21, 2017 8:34:00 AM" }, { "c": "149.2055", "h": "149.209", "l": "149.1805", "o": "149.1805", "t": "Nov 21, 2017 8:35:00 AM" }, { "c": "149.194", "h": "149.2095", "l": "149.1925", "o": "149.2055", "t": "Nov 21, 2017 8:36:00 AM" }, { "c": "149.1955", "h": "149.2", "l": "149.1845", "o": "149.1935", "t": "Nov 21, 2017 8:37:00 AM" }, { "c": "149.1995", "h": "149.211", "l": "149.184", "o": "149.194", "t": "Nov 21, 2017 8:38:00 AM" }, { "c": "149.202", "h": "149.206", "l": "149.1905", "o": "149.199", "t": "Nov 21, 2017 8:39:00 AM" }, { "c": "149.184", "h": "149.2025", "l": "149.17", "o": "149.202", "t": "Nov 21, 2017 8:40:00 AM" }, { "c": "149.187", "h": "149.1945", "l": "149.174", "o": "149.1835", "t": "Nov 21, 2017 8:41:00 AM" }, { "c": "149.1755", "h": "149.1935", "l": "149.1755", "o": "149.1865", "t": "Nov 21, 2017 8:42:00 AM" }, { "c": "149.146", "h": "149.177", "l": "149.146", "o": "149.176", "t": "Nov 21, 2017 8:43:00 AM" }, { "c": "149.1435", "h": "149.1615", "l": "149.1395", "o": "149.1455", "t": "Nov 21, 2017 8:44:00 AM" }, { "c": "149.1605", "h": "149.162", "l": "149.1405", "o": "149.1445", "t": "Nov 21, 2017 8:45:00 AM" }, { "c": "149.1515", "h": "149.1605", "l": "149.1495", "o": "149.1605", "t": "Nov 21, 2017 8:46:00 AM" }, { "c": "149.1515", "h": "149.152", "l": "149.144", "o": "149.151", "t": "Nov 21, 2017 8:47:00 AM" }, { "c": "149.1655", "h": "149.1735", "l": "149.1495", "o": "149.151", "t": "Nov 21, 2017 8:48:00 AM" }, { "c": "149.1675", "h": "149.177", "l": "149.1565", "o": "149.166", "t": "Nov 21, 2017 8:49:00 AM" }, { "c": "149.175", "h": "149.185", "l": "149.1655", "o": "149.1675", "t": "Nov 21, 2017 8:50:00 AM" }, { "c": "149.1655", "h": "149.1825", "l": "149.159", "o": "149.174", "t": "Nov 21, 2017 8:51:00 AM" }, { "c": "149.184", "h": "149.1845", "l": "149.1585", "o": "149.1655", "t": "Nov 21, 2017 8:52:00 AM" }, { "c": "149.1815", "h": "149.1845", "l": "149.164", "o": "149.1835", "t": "Nov 21, 2017 8:53:00 AM" }, { "c": "149.1575", "h": "149.2005", "l": "149.1425", "o": "149.182", "t": "Nov 21, 2017 8:54:00 AM" }, { "c": "149.197", "h": "149.198", "l": "149.1585", "o": "149.1585", "t": "Nov 21, 2017 8:55:00 AM" }, { "c": "149.189", "h": "149.198", "l": "149.185", "o": "149.1945", "t": "Nov 21, 2017 8:56:00 AM" }, { "c": "149.18", "h": "149.1895", "l": "149.1745", "o": "149.1895", "t": "Nov 21, 2017 8:57:00 AM" }, { "c": "149.158", "h": "149.1785", "l": "149.1505", "o": "149.1785", "t": "Nov 21, 2017 8:58:00 AM" }, { "c": "149.139", "h": "149.1575", "l": "149.128", "o": "149.157", "t": "Nov 21, 2017 8:59:00 AM" }, { "c": "149.1095", "h": "149.1385", "l": "149.108", "o": "149.1375", "t": "Nov 21, 2017 9:00:00 AM" }, { "c": "149.1035", "h": "149.1095", "l": "149.098", "o": "149.1095", "t": "Nov 21, 2017 9:01:00 AM" }, { "c": "149.113", "h": "149.113", "l": "149.0845", "o": "149.1035", "t": "Nov 21, 2017 9:02:00 AM" }, { "c": "149.1145", "h": "149.1225", "l": "149.1075", "o": "149.1125", "t": "Nov 21, 2017 9:03:00 AM" }, { "c": "149.1225", "h": "149.1375", "l": "149.114", "o": "149.1145", "t": "Nov 21, 2017 9:04:00 AM" }, { "c": "149.134", "h": "149.1365", "l": "149.118", "o": "149.1235", "t": "Nov 21, 2017 9:05:00 AM" }, { "c": "149.104", "h": "149.1345", "l": "149.0975", "o": "149.1345", "t": "Nov 21, 2017 9:06:00 AM" }, { "c": "149.104", "h": "149.11", "l": "149.1015", "o": "149.103", "t": "Nov 21, 2017 9:07:00 AM" }, { "c": "149.093", "h": "149.1045", "l": "149.084", "o": "149.1045", "t": "Nov 21, 2017 9:08:00 AM" }, { "c": "149.092", "h": "149.0985", "l": "149.088", "o": "149.093", "t": "Nov 21, 2017 9:09:00 AM" }, { "c": "149.071", "h": "149.0975", "l": "149.0615", "o": "149.0915", "t": "Nov 21, 2017 9:10:00 AM" }, { "c": "149.0905", "h": "149.0955", "l": "149.064", "o": "149.0715", "t": "Nov 21, 2017 9:11:00 AM" }, { "c": "149.0905", "h": "149.098", "l": "149.0655", "o": "149.0905", "t": "Nov 21, 2017 9:12:00 AM" }, { "c": "149.1175", "h": "149.122", "l": "149.0895", "o": "149.0915", "t": "Nov 21, 2017 9:13:00 AM" }, { "c": "149.133", "h": "149.135", "l": "149.1165", "o": "149.1165", "t": "Nov 21, 2017 9:14:00 AM" }, { "c": "149.0975", "h": "149.1325", "l": "149.0975", "o": "149.1325", "t": "Nov 21, 2017 9:15:00 AM" }, { "c": "149.098", "h": "149.111", "l": "149.091", "o": "149.097", "t": "Nov 21, 2017 9:16:00 AM" }, { "c": "149.091", "h": "149.106", "l": "149.078", "o": "149.0985", "t": "Nov 21, 2017 9:17:00 AM" }, { "c": "149.085", "h": "149.0955", "l": "149.081", "o": "149.0905", "t": "Nov 21, 2017 9:18:00 AM" }, { "c": "149.0885", "h": "149.09", "l": "149.081", "o": "149.085", "t": "Nov 21, 2017 9:19:00 AM" }, { "c": "149.0805", "h": "149.091", "l": "149.08", "o": "149.0885", "t": "Nov 21, 2017 9:20:00 AM" }, { "c": "149.094", "h": "149.0995", "l": "149.0755", "o": "149.081", "t": "Nov 21, 2017 9:21:00 AM" }, { "c": "149.079", "h": "149.0955", "l": "149.0785", "o": "149.0945", "t": "Nov 21, 2017 9:22:00 AM" }, { "c": "149.086", "h": "149.092", "l": "149.075", "o": "149.08", "t": "Nov 21, 2017 9:23:00 AM" }, { "c": "149.0825", "h": "149.0935", "l": "149.074", "o": "149.0855", "t": "Nov 21, 2017 9:24:00 AM" }, { "c": "149.0745", "h": "149.082", "l": "149.057", "o": "149.082", "t": "Nov 21, 2017 9:25:00 AM" }, { "c": "149.0395", "h": "149.0745", "l": "149.0395", "o": "149.074", "t": "Nov 21, 2017 9:26:00 AM" }, { "c": "149.0145", "h": "149.041", "l": "149.012", "o": "149.04", "t": "Nov 21, 2017 9:27:00 AM" }, { "c": "149.0085", "h": "149.0235", "l": "149.0065", "o": "149.014", "t": "Nov 21, 2017 9:28:00 AM" }, { "c": "149.0095", "h": "149.0205", "l": "149.005", "o": "149.0095", "t": "Nov 21, 2017 9:29:00 AM" }, { "c": "149.024", "h": "149.05", "l": "149.008", "o": "149.008", "t": "Nov 21, 2017 9:30:00 AM" }, { "c": "149.0105", "h": "149.0235", "l": "148.9925", "o": "149.0235", "t": "Nov 21, 2017 9:31:00 AM" }, { "c": "149.0435", "h": "149.045", "l": "149.01", "o": "149.01", "t": "Nov 21, 2017 9:32:00 AM" }, { "c": "149.042", "h": "149.045", "l": "149.0295", "o": "149.045", "t": "Nov 21, 2017 9:33:00 AM" }, { "c": "149.048", "h": "149.0515", "l": "149.03", "o": "149.0415", "t": "Nov 21, 2017 9:34:00 AM" }, { "c": "149.05", "h": "149.053", "l": "149.038", "o": "149.049", "t": "Nov 21, 2017 9:35:00 AM" }, { "c": "149.0495", "h": "149.056", "l": "149.0465", "o": "149.0505", "t": "Nov 21, 2017 9:36:00 AM" }, { "c": "149.051", "h": "149.054", "l": "149.0415", "o": "149.05", "t": "Nov 21, 2017 9:37:00 AM" }, { "c": "149.0525", "h": "149.071", "l": "149.045", "o": "149.051", "t": "Nov 21, 2017 9:38:00 AM" }, { "c": "149.064", "h": "149.066", "l": "149.051", "o": "149.0515", "t": "Nov 21, 2017 9:39:00 AM" }, { "c": "149.066", "h": "149.0695", "l": "149.056", "o": "149.065", "t": "Nov 21, 2017 9:40:00 AM" }, { "c": "149.0595", "h": "149.0815", "l": "149.0595", "o": "149.0675", "t": "Nov 21, 2017 9:41:00 AM" }, { "c": "149.0805", "h": "149.0825", "l": "149.059", "o": "149.059", "t": "Nov 21, 2017 9:42:00 AM" }, { "c": "149.1075", "h": "149.11", "l": "149.0805", "o": "149.0815", "t": "Nov 21, 2017 9:43:00 AM" }, { "c": "149.1035", "h": "149.112", "l": "149.0945", "o": "149.108", "t": "Nov 21, 2017 9:44:00 AM" }, { "c": "149.109", "h": "149.1125", "l": "149.0985", "o": "149.103", "t": "Nov 21, 2017 9:45:00 AM" }, { "c": "149.12", "h": "149.121", "l": "149.1065", "o": "149.1105", "t": "Nov 21, 2017 9:46:00 AM" }, { "c": "149.1445", "h": "149.1485", "l": "149.1185", "o": "149.12", "t": "Nov 21, 2017 9:47:00 AM" }, { "c": "149.1455", "h": "149.158", "l": "149.1425", "o": "149.1465", "t": "Nov 21, 2017 9:48:00 AM" }, { "c": "149.147", "h": "149.157", "l": "149.138", "o": "149.145", "t": "Nov 21, 2017 9:49:00 AM" }, { "c": "149.1275", "h": "149.152", "l": "149.1275", "o": "149.147", "t": "Nov 21, 2017 9:50:00 AM" }, { "c": "149.119", "h": "149.1325", "l": "149.1155", "o": "149.1275", "t": "Nov 21, 2017 9:51:00 AM" }, { "c": "149.102", "h": "149.1315", "l": "149.101", "o": "149.1175", "t": "Nov 21, 2017 9:52:00 AM" }, { "c": "149.1175", "h": "149.1175", "l": "149.097", "o": "149.102", "t": "Nov 21, 2017 9:53:00 AM" }, { "c": "149.1145", "h": "149.1175", "l": "149.108", "o": "149.117", "t": "Nov 21, 2017 9:54:00 AM" }, { "c": "149.13", "h": "149.136", "l": "149.1065", "o": "149.1155", "t": "Nov 21, 2017 9:55:00 AM" }, { "c": "149.1335", "h": "149.134", "l": "149.121", "o": "149.13", "t": "Nov 21, 2017 9:56:00 AM" }, { "c": "149.1305", "h": "149.1345", "l": "149.128", "o": "149.1345", "t": "Nov 21, 2017 9:57:00 AM" }, { "c": "149.1275", "h": "149.1325", "l": "149.1275", "o": "149.13", "t": "Nov 21, 2017 9:58:00 AM" }, { "c": "149.1255", "h": "149.1345", "l": "149.1205", "o": "149.128", "t": "Nov 21, 2017 9:59:00 AM" }, { "c": "149.1285", "h": "149.1285", "l": "149.115", "o": "149.124", "t": "Nov 21, 2017 10:00:00 AM" }, { "c": "149.121", "h": "149.13", "l": "149.1205", "o": "149.1285", "t": "Nov 21, 2017 10:01:00 AM" }, { "c": "149.135", "h": "149.136", "l": "149.1195", "o": "149.121", "t": "Nov 21, 2017 10:02:00 AM" }, { "c": "149.1355", "h": "149.1415", "l": "149.1315", "o": "149.135", "t": "Nov 21, 2017 10:03:00 AM" }, { "c": "149.1435", "h": "149.156", "l": "149.136", "o": "149.136", "t": "Nov 21, 2017 10:04:00 AM" }, { "c": "149.1585", "h": "149.17", "l": "149.1365", "o": "149.144", "t": "Nov 21, 2017 10:05:00 AM" }, { "c": "149.2005", "h": "149.2005", "l": "149.155", "o": "149.1585", "t": "Nov 21, 2017 10:06:00 AM" }, { "c": "149.187", "h": "149.202", "l": "149.1865", "o": "149.2005", "t": "Nov 21, 2017 10:07:00 AM" }, { "c": "149.163", "h": "149.188", "l": "149.1605", "o": "149.188", "t": "Nov 21, 2017 10:08:00 AM" }, { "c": "149.152", "h": "149.175", "l": "149.147", "o": "149.1635", "t": "Nov 21, 2017 10:09:00 AM" }, { "c": "149.1585", "h": "149.163", "l": "149.1445", "o": "149.1515", "t": "Nov 21, 2017 10:10:00 AM" }, { "c": "149.1665", "h": "149.1715", "l": "149.148", "o": "149.158", "t": "Nov 21, 2017 10:11:00 AM" }, { "c": "149.182", "h": "149.1885", "l": "149.1645", "o": "149.1655", "t": "Nov 21, 2017 10:12:00 AM" }, { "c": "149.1855", "h": "149.187", "l": "149.178", "o": "149.1825", "t": "Nov 21, 2017 10:13:00 AM" }, { "c": "149.1825", "h": "149.1915", "l": "149.18", "o": "149.1855", "t": "Nov 21, 2017 10:14:00 AM" }, { "c": "149.1685", "h": "149.184", "l": "149.1635", "o": "149.1835", "t": "Nov 21, 2017 10:15:00 AM" }, { "c": "149.1655", "h": "149.174", "l": "149.159", "o": "149.167", "t": "Nov 21, 2017 10:16:00 AM" }, { "c": "149.167", "h": "149.176", "l": "149.1645", "o": "149.166", "t": "Nov 21, 2017 10:17:00 AM" }, { "c": "149.1755", "h": "149.1775", "l": "149.1665", "o": "149.167", "t": "Nov 21, 2017 10:18:00 AM" }, { "c": "149.1895", "h": "149.202", "l": "149.1745", "o": "149.176", "t": "Nov 21, 2017 10:19:00 AM" }, { "c": "149.206", "h": "149.208", "l": "149.188", "o": "149.1895", "t": "Nov 21, 2017 10:20:00 AM" }, { "c": "149.198", "h": "149.214", "l": "149.1975", "o": "149.2065", "t": "Nov 21, 2017 10:21:00 AM" }, { "c": "149.1635", "h": "149.1985", "l": "149.1615", "o": "149.1975", "t": "Nov 21, 2017 10:22:00 AM" }, { "c": "149.1685", "h": "149.1725", "l": "149.1595", "o": "149.1625", "t": "Nov 21, 2017 10:23:00 AM" }, { "c": "149.1665", "h": "149.174", "l": "149.163", "o": "149.168", "t": "Nov 21, 2017 10:24:00 AM" }, { "c": "149.161", "h": "149.1725", "l": "149.155", "o": "149.1665", "t": "Nov 21, 2017 10:25:00 AM" }, { "c": "149.1495", "h": "149.1655", "l": "149.146", "o": "149.1615", "t": "Nov 21, 2017 10:26:00 AM" }, { "c": "149.139", "h": "149.1645", "l": "149.139", "o": "149.1495", "t": "Nov 21, 2017 10:27:00 AM" }, { "c": "149.099", "h": "149.139", "l": "149.088", "o": "149.138", "t": "Nov 21, 2017 10:28:00 AM" }, { "c": "149.09", "h": "149.101", "l": "149.089", "o": "149.0995", "t": "Nov 21, 2017 10:29:00 AM" }, { "c": "149.0805", "h": "149.097", "l": "149.0775", "o": "149.09", "t": "Nov 21, 2017 10:30:00 AM" }, { "c": "149.0995", "h": "149.1055", "l": "149.0775", "o": "149.0775", "t": "Nov 21, 2017 10:31:00 AM" }, { "c": "149.0865", "h": "149.1035", "l": "149.086", "o": "149.0985", "t": "Nov 21, 2017 10:32:00 AM" }, { "c": "149.0845", "h": "149.091", "l": "149.0745", "o": "149.0865", "t": "Nov 21, 2017 10:33:00 AM" }, { "c": "149.048", "h": "149.089", "l": "149.048", "o": "149.0845", "t": "Nov 21, 2017 10:34:00 AM" }, { "c": "149.0495", "h": "149.0685", "l": "149.0365", "o": "149.0485", "t": "Nov 21, 2017 10:35:00 AM" }, { "c": "149.068", "h": "149.068", "l": "149.0425", "o": "149.05", "t": "Nov 21, 2017 10:36:00 AM" }, { "c": "149.0545", "h": "149.0765", "l": "149.0505", "o": "149.0675", "t": "Nov 21, 2017 10:37:00 AM" }, { "c": "149.081", "h": "149.0835", "l": "149.0535", "o": "149.0535", "t": "Nov 21, 2017 10:38:00 AM" }, { "c": "149.0715", "h": "149.084", "l": "149.0685", "o": "149.078", "t": "Nov 21, 2017 10:39:00 AM" }, { "c": "149.091", "h": "149.091", "l": "149.0695", "o": "149.072", "t": "Nov 21, 2017 10:40:00 AM" }, { "c": "149.0805", "h": "149.0915", "l": "149.0775", "o": "149.091", "t": "Nov 21, 2017 10:41:00 AM" }, { "c": "149.095", "h": "149.095", "l": "149.077", "o": "149.0805", "t": "Nov 21, 2017 10:42:00 AM" }, { "c": "149.0835", "h": "149.096", "l": "149.0825", "o": "149.096", "t": "Nov 21, 2017 10:43:00 AM" }, { "c": "149.08", "h": "149.091", "l": "149.077", "o": "149.082", "t": "Nov 21, 2017 10:44:00 AM" }, { "c": "149.082", "h": "149.089", "l": "149.076", "o": "149.078", "t": "Nov 21, 2017 10:45:00 AM" }, { "c": "149.101", "h": "149.104", "l": "149.083", "o": "149.084", "t": "Nov 21, 2017 10:46:00 AM" }, { "c": "149.085", "h": "149.104", "l": "149.083", "o": "149.1", "t": "Nov 21, 2017 10:47:00 AM" }, { "c": "149.087", "h": "149.092", "l": "149.081", "o": "149.086", "t": "Nov 21, 2017 10:48:00 AM" }, { "c": "149.084", "h": "149.092", "l": "149.08", "o": "149.087", "t": "Nov 21, 2017 10:49:00 AM" }, { "c": "149.079", "h": "149.088", "l": "149.077", "o": "149.082", "t": "Nov 21, 2017 10:50:00 AM" }, { "c": "149.103", "h": "149.108", "l": "149.077", "o": "149.079", "t": "Nov 21, 2017 10:51:00 AM" }, { "c": "149.095", "h": "149.111", "l": "149.089", "o": "149.102", "t": "Nov 21, 2017 10:52:00 AM" }, { "c": "149.115", "h": "149.115", "l": "149.093", "o": "149.094", "t": "Nov 21, 2017 10:53:00 AM" }, { "c": "149.093", "h": "149.117", "l": "149.093", "o": "149.114", "t": "Nov 21, 2017 10:54:00 AM" }, { "c": "149.084", "h": "149.093", "l": "149.08", "o": "149.092", "t": "Nov 21, 2017 10:55:00 AM" }, { "c": "149.073", "h": "149.088", "l": "149.064", "o": "149.086", "t": "Nov 21, 2017 10:56:00 AM" }, { "c": "149.086", "h": "149.087", "l": "149.072", "o": "149.072", "t": "Nov 21, 2017 10:57:00 AM" }, { "c": "149.087", "h": "149.1", "l": "149.082", "o": "149.087", "t": "Nov 21, 2017 10:58:00 AM" }, { "c": "149.084", "h": "149.086", "l": "149.075", "o": "149.086", "t": "Nov 21, 2017 10:59:00 AM" }, { "c": "149.074", "h": "149.085", "l": "149.07", "o": "149.083", "t": "Nov 21, 2017 11:00:00 AM" }, { "c": "149.082", "h": "149.085", "l": "149.073", "o": "149.075", "t": "Nov 21, 2017 11:01:00 AM" }, { "c": "149.095", "h": "149.097", "l": "149.081", "o": "149.081", "t": "Nov 21, 2017 11:02:00 AM" }, { "c": "149.08", "h": "149.104", "l": "149.08", "o": "149.095", "t": "Nov 21, 2017 11:03:00 AM" }, { "c": "149.081", "h": "149.081", "l": "149.079", "o": "149.079", "t": "Nov 21, 2017 11:04:00 AM" } ] ================================================ FILE: app/src/main/java/com/tophold/example/MainActivity.java ================================================ package com.tophold.example; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.TextView; import com.tophold.example.base.BaseActivity; import com.tophold.example.demo.fund.FundActivity; import com.tophold.example.demo.kview.KViewActivity; import com.tophold.example.demo.kview.beginner.ui.KViewHorizontalActivityActivity; import com.tophold.example.demo.kview.beginner.ui.KViewVerticalActivity; import com.tophold.example.demo.kview.btc.ui.HuobiListActivity; import com.tophold.example.demo.kview.forex.ui.ForexListActivity; import com.tophold.example.demo.pie.PieChartActivity; import com.tophold.example.demo.seekbar.DoubleThumbSeekBarActivity; import com.tophold.example.utils.RxUtils; import com.tophold.trade.utils.StringUtils; import java.util.concurrent.TimeUnit; import io.reactivex.Observable; import io.reactivex.ObservableEmitter; import io.reactivex.ObservableOnSubscribe; import io.reactivex.Scheduler; import io.reactivex.disposables.Disposable; import io.reactivex.functions.Consumer; import io.reactivex.schedulers.Schedulers; public class MainActivity extends BaseActivity { TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextView = (TextView) findViewById(R.id.version); mTextView.setText(getVersionStr()); } public String getVersionStr() { String version = "verisonName:"; version += BuildConfig.VERSION_NAME; version += ",versionCode(git head):" + BuildConfig.VERSION_CODE; return version; } public void fundView(View view) { go(FundActivity.class); } public void kViewDemo(View view) { go(KViewActivity.class); } public void onPieTest(View view) { go(PieChartActivity.class); } public void onSeekBarTest(View view) { go(DoubleThumbSeekBarActivity.class); } public void onRx(View view) { Disposable disposable = Observable.create((ObservableOnSubscribe) emitter -> { while (true) { emitter.onNext("a"); Thread.sleep(500); emitter.onNext("b"); Thread.sleep(2000); emitter.onNext("c"); Thread.sleep(9000); emitter.onNext("d"); } }).observeOn(Schedulers.io()) .compose(RxUtils.rxApiSchedulerHelper()) .sample(1000, TimeUnit.MILLISECONDS) .subscribe(s -> Log.d(TAG, "accept: " + s)); } } ================================================ FILE: app/src/main/java/com/tophold/example/MyApplication.java ================================================ package com.tophold.example; import android.app.Application; import android.content.Context; import com.tophold.example.demo.kview.btc.api.HuobiWebSocket; import com.tophold.example.demo.kview.forex.api.ForexWebSocket; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/22 21:38 * 描 述 : * ============================================================ **/ public class MyApplication extends Application { public static Context mAppContext; @Override public void onCreate() { super.onCreate(); mAppContext = this; ForexWebSocket.getInstance().init(); HuobiWebSocket.getInstance().init(); } } ================================================ FILE: app/src/main/java/com/tophold/example/base/BaseActivity.java ================================================ package com.tophold.example.base; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.annotation.ColorRes; import android.support.annotation.DrawableRes; import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.widget.Toast; import org.greenrobot.eventbus.EventBus; import io.reactivex.Observable; import io.reactivex.Observer; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.Disposable; import com.tophold.example.demo.kview.forex.api.RetrofitManager; /** * ============================================================ * 作 者 : wgyscsf * 创建日期 :2017/10/16 16:27 * 描 述 : * ============================================================ **/ public class BaseActivity extends AppCompatActivity { /** * Activity 跳转 * * @param clazz 目标activity * @param bundle 传递参数 * @param finish 是否结束当前activity */ public static final int NON_CODE = -1; protected Context mContext = null; protected String TAG = null; protected Activity mActivity; /** * 对系统系统的toast进行简单封装,方便使用 */ private Toast toast = null; private CompositeDisposable compositeDisposable; @Override public void setContentView(int view) { super.setContentView(view); } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); mActivity = this; mContext = this; TAG = this.getClass().getSimpleName(); // getBundleExtras Bundle extras = getIntent().getExtras(); if (null != extras) { getBundleExtras(extras); } if (isBindEventBusHere()) { EventBus.getDefault().register(mActivity); } } public boolean isBindEventBusHere() { return false; } protected void getBundleExtras(Bundle extras) { } protected Drawable getCompatDrawable(@DrawableRes int drawbaleId) { return ContextCompat.getDrawable(mContext, drawbaleId); } protected int getCompatColor(@ColorRes int colorId) { return ContextCompat.getColor(mContext, colorId); } /** * 添加disposable * * @param disposable */ public void unSubscription(Disposable disposable) { if (compositeDisposable == null) { synchronized (CompositeDisposable.class) { if (compositeDisposable == null) { compositeDisposable = new CompositeDisposable(); } } } compositeDisposable.add(disposable); } @Override protected void onDestroy() { super.onDestroy(); if (isBindEventBusHere()) { EventBus.getDefault().unregister(mActivity); } if (compositeDisposable != null) { Log.d(TAG, "base activity dispose"); compositeDisposable.clear(); } } /** * @param observable * @param observer */ public void call(Observable observable, Observer observer) { RetrofitManager.call(observable, observer); } /** * startActivity * * @param clazz target Activity */ public void go(Class clazz) { _goActivity(clazz, null, NON_CODE, false); } /** * startActivity with bundle * * @param clazz target Activity * @param bundle */ public void go(Class clazz, Bundle bundle) { _goActivity(clazz, bundle, NON_CODE, false); } /** * startActivity then finish this * * @param clazz target Activity */ public void goAndFinish(Class clazz) { _goActivity(clazz, null, NON_CODE, true); } /** * startActivity with bundle and then finish this * * @param clazz target Activity * @param bundle bundle extra */ public void goAndFinish(Class clazz, Bundle bundle) { _goActivity(clazz, bundle, NON_CODE, true); } /** * startActivityForResult * * @param clazz * @param requestCode */ protected void goForResult(Class clazz, int requestCode) { _goActivity(clazz, null, requestCode, false); } /** * startActivityForResult with bundle * * @param clazz * @param bundle * @param requestCode */ protected void goForResult(Class clazz, Bundle bundle, int requestCode) { _goActivity(clazz, bundle, requestCode, false); } /** * startActivityForResult then finish this * * @param clazz * @param requestCode */ protected void goForResultAndFinish(Class clazz, int requestCode) { _goActivity(clazz, null, requestCode, true); } /** * startActivityForResult with bundle and then finish this * * @param clazz * @param bundle * @param requestCode */ protected void goForResultAndFinish(Class clazz, Bundle bundle, int requestCode) { _goActivity(clazz, bundle, requestCode, true); } //可以立刻刷新Toast。推荐使用该方式。 public void showSingletonToast(String str) { if (toast == null) { toast = Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT); } else { toast.setText(str); } toast.show(); } public void showToast(String msg) { showToast(msg, Toast.LENGTH_SHORT); } public void showToast(String msg, int toastDuration) { if (null != msg && (toastDuration == Toast.LENGTH_SHORT || toastDuration == Toast.LENGTH_LONG)) { Toast.makeText(getApplicationContext(), msg, toastDuration).show(); } } private void _goActivity(Class clazz, Bundle bundle, int requestCode, boolean finish) { if (null == clazz) { throw new IllegalArgumentException("you must pass a target activity where to go."); } Intent intent = new Intent(this, clazz); if (null != bundle) { intent.putExtras(bundle); } if (requestCode > NON_CODE) { startActivityForResult(intent, requestCode); } else { startActivity(intent); } if (finish) { finish(); } } } ================================================ FILE: app/src/main/java/com/tophold/example/base/BaseFragment.java ================================================ package com.tophold.example.base; import android.app.Activity; import android.content.Context; import android.os.Bundle; import org.greenrobot.eventbus.EventBus; import io.reactivex.Observable; import io.reactivex.Observer; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.Disposable; import com.tophold.example.demo.kview.forex.api.RetrofitManager; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/22 14:06 * 描 述 : * ============================================================ **/ public class BaseFragment extends android.support.v4.app.Fragment { CompositeDisposable disposables; protected String TAG; protected Context mContext; protected Activity mActivity; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TAG = this.getClass().getSimpleName(); mContext = this.getActivity(); mActivity = getActivity(); if (isBindEventBusHere()) { EventBus.getDefault().register(this); } } public boolean isBindEventBusHere() { return false; } @Override public void onDestroy() { super.onDestroy(); if (isBindEventBusHere()) { EventBus.getDefault().unregister(this); } if (disposables != null) disposables.clear(); } public void unSubscription(Disposable disposable) { if (disposables == null) { synchronized (CompositeDisposable.class) { if (disposables == null) { disposables = new CompositeDisposable(); } } } disposables.add(disposable); } /** * @param observable * @param observer */ public void call(Observable observable, Observer observer) { RetrofitManager.call(observable, observer); } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/fund/FundActivity.java ================================================ package com.tophold.example.demo.fund; import android.os.Bundle; import android.util.Log; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.concurrent.TimeUnit; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import com.tophold.example.base.BaseActivity; import com.tophold.example.R; import com.tophold.example.demo.kview.beginner.model.OriginFundMode; import com.tophold.example.demo.kview.beginner.api.FundSimulateNetAPI; import com.tophold.example.utils.GsonUtil; import com.tophold.trade.utils.StringUtils; import com.tophold.trade.view.fund.FundMode; import com.tophold.trade.view.fund.FundView; public class FundActivity extends BaseActivity { private FundView mFundView; List mOriginFundModeList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fund); initView(); initData(); loadData(); } private void initView() { mFundView = (FundView) findViewById(R.id.af_fv_fundview); /** * 定制,所有的画笔以及其它属性都已经暴露出来,有了更加大的定时灵活性。更多参数可以直接查看源码... */ //常规set、get... mFundView.getBrokenPaint().setColor(getResources().getColor(R.color.colorAccent));//设置折现颜色 mFundView.getInnerXPaint().setStrokeWidth(1);//设置内部x轴虚线的宽度,px mFundView.getBrokenPaint().setStrokeWidth(1); //链式调用 mFundView .setBasePaddingTop(140) .setBasePaddingLeft(50) .setBasePaddingRight(40) .setBasePaddingBottom(30) .setLoadingText("正在加载,马上就来..."); } private void initData() { mOriginFundModeList = new ArrayList<>(); } private void loadData() { Disposable subscribe = Observable.timer(StringUtils.getRadomNum(500, 3000), TimeUnit.MILLISECONDS) .map(map -> { String originalFundData = FundSimulateNetAPI.getOriginalFundData(mContext); if (originalFundData == null) { Log.e(TAG, "loadData: 从网络获取到的数据为空"); return null; } OriginFundMode[] originFunModes; try { originFunModes = GsonUtil.fromJson2Object(originalFundData, OriginFundMode[].class); } catch (Exception e) { e.printStackTrace(); return null; } List OriginFundModeList = Arrays.asList(originFunModes); //开始适配图表数据 return adapterData(OriginFundModeList); }) .subscribeOn(Schedulers.computation()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( mData -> { if (StringUtils.isEmpty(mData)) { Log.d(TAG, "loadData: data is empty!"); return; } mFundView.setDataList(mData); } , throwable -> throwable.printStackTrace()); unSubscription(subscribe); } private List adapterData(List originFundModeList) { List fundModeList = new ArrayList<>();//适配后的数据 for (OriginFundMode originFundMode : originFundModeList) { FundMode fundMode = new FundMode(originFundMode.timestamp * 1000, originFundMode.actual); fundModeList.add(fundMode); Log.e(TAG, "adapterData: 适配之前:" + originFundMode.actual + "----->>" + fundMode.dataY); } return fundModeList; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/KViewActivity.kt ================================================ package com.tophold.example.demo.kview import android.os.Bundle import android.view.View import com.tophold.example.BuildConfig import com.tophold.example.R import com.tophold.example.base.BaseActivity import com.tophold.example.demo.kview.beginner.ui.KViewHorizontalActivityActivity import com.tophold.example.demo.kview.beginner.ui.KViewVerticalActivity import com.tophold.example.demo.kview.btc.ui.HuobiListActivity import com.tophold.example.demo.kview.forex.ui.ForexListActivity class KViewActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_kview) } fun kViewVertical(view: View) { go(KViewVerticalActivity::class.java) } fun kViewHorizontal(view: View) { go(KViewHorizontalActivityActivity::class.java) } fun kViewEvaluation(view: View) { go(ForexListActivity::class.java) } fun btnDemo(view: View) { go(HuobiListActivity::class.java) } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/beginner/api/FundSimulateNetAPI.java ================================================ package com.tophold.example.demo.kview.beginner.api; import android.content.Context; import java.io.IOException; import java.io.InputStream; import java.util.Scanner; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2017/10/25 15:43 * 描 述 : * ============================================================ **/ public class FundSimulateNetAPI { /** * 获取去最原始的数据信息 * * @return json data */ public static String getOriginalFundData(Context context) { InputStream input = null; try { input = context.getAssets().open("fund.json"); String json = convertStreamToString(input); return json; } catch (Exception e) { e.printStackTrace(); } return null; } /** * input 流转换为字符串 * * @param is * @return */ private static String convertStreamToString(java.io.InputStream is) { String s = null; try { Scanner scanner = new Scanner(is, "UTF-8").useDelimiter("\\A"); if (scanner.hasNext()) s = scanner.next(); is.close(); } catch (IOException e) { e.printStackTrace(); } return s; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/beginner/api/KViewSimulateNetAPI.java ================================================ package com.tophold.example.demo.kview.beginner.api; import android.content.Context; import java.io.IOException; import java.io.InputStream; import java.util.Scanner; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2017/10/25 15:43 * 描 述 : * ============================================================ **/ public class KViewSimulateNetAPI { /** * 获取去最原始的数据信息 * * @return json data */ public static String getOriginalFundData(Context context, int index) { InputStream input = null; try { input = context.getAssets().open("timesharing" + index + ".json"); String json = convertStreamToString(input); return json; } catch (Exception e) { e.printStackTrace(); } return null; } /** * input 流转换为字符串 * * @param is * @return */ private static String convertStreamToString(InputStream is) { String s = null; try { Scanner scanner = new Scanner(is, "UTF-8").useDelimiter("\\A"); if (scanner.hasNext()) s = scanner.next(); is.close(); } catch (IOException e) { e.printStackTrace(); } return s; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/beginner/model/OriginFundMode.java ================================================ package com.tophold.example.demo.kview.beginner.model; import java.io.Serializable; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2017/10/24 15:00 * 描 述 : * ============================================================ **/ public class OriginFundMode implements Serializable { /** * actual : 103 * createTime : Apr 10, 2017 12:04:14 AM * economicId : 518 * forecast : 102 * historyId : 449366 * previous : 103 * revised : * timestamp : 1456213500 */ public String actual; public String createTime; public int economicId; public String forecast; public int historyId; public String previous; public String revised; public long timestamp; } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/beginner/model/OriginQuotes.java ================================================ package com.tophold.example.demo.kview.beginner.model; import java.io.Serializable; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2017/11/21 11:09 * 描 述 :原始数据 * ============================================================ **/ public class OriginQuotes implements Serializable { /** * t : 2016-10-25 12:06:00 * o : 2357.25 * h : 2357.25 * l : 2357.25 * c : 2357.25 */ public String t; public String o; public String h; public String l; public String c; } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/beginner/ui/KViewHorizontalActivityActivity.java ================================================ package com.tophold.example.demo.kview.beginner.ui; import android.os.Bundle; import android.support.annotation.ColorRes; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; import com.google.gson.reflect.TypeToken; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import com.tophold.example.R; import com.tophold.example.demo.kview.beginner.model.OriginQuotes; import com.tophold.example.demo.kview.beginner.api.KViewSimulateNetAPI; import com.tophold.example.base.BaseActivity; import com.tophold.trade.utils.FormatUtil; import com.tophold.example.utils.GsonUtil; import com.tophold.trade.utils.StringUtils; import com.tophold.trade.utils.TimeUtils; import com.tophold.trade.view.kview.KView; import com.tophold.trade.view.kview.KViewListener; import com.tophold.trade.view.kview.Quotes; /** * timesharing0:模拟的是加载更多的数据,注意,会分段取,模拟的是多次加载更多 * timesharing1:模拟的是api请求的数据集合,注意:一次加载完毕,模拟的是第一次加载的数据 * timesharing2:模拟的是实时**推送**的数据,注意:会分段取,一次取一个。 */ public class KViewHorizontalActivityActivity extends BaseActivity { //bind view private LinearLayout mAkvLlContainer; private TextView mAkvTvH; private TextView mAkvTvO; private TextView mAkvTvTime; private TextView mAkvTvL; private TextView mAkvTvC; private TextView mAkvTvP; private KView mAkvKvKview; //模拟网络过来的列表数据 List mQuotesList; //模拟加载更多的数据 List mLoadMoreData; //模拟socket推送过来的单个数据 List mPushData; //加载更多,加载到哪儿了。因为真实应用中,也存在加载完毕的情况。这里对应加载到list的最后 int index = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_kview_horizontal); initView(); initData(); loadData(); pushData(); } private void pushData() { Disposable disposable = Observable.interval(StringUtils.getRadomNum(300, 3000), TimeUnit.MILLISECONDS) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( data -> { int size = mPushData.size(); if (data < size) { mAkvKvKview.pushKViewData(mPushData.get(data.intValue()), 0); } else { } } , throwable -> throwable.printStackTrace()); unSubscription(disposable); } private void initView() { mAkvLlContainer = (LinearLayout) findViewById(R.id.akv_ll_container); mAkvTvH = (TextView) findViewById(R.id.akv_tv_h); mAkvTvO = (TextView) findViewById(R.id.akv_tv_o); mAkvTvTime = (TextView) findViewById(R.id.akv_tv_time); mAkvTvL = (TextView) findViewById(R.id.akv_tv_l); mAkvTvC = (TextView) findViewById(R.id.akv_tv_c); mAkvTvP = (TextView) findViewById(R.id.akv_tv_p); mAkvKvKview = (KView) findViewById(R.id.akv_kv_kview); } private void initData() { mQuotesList = new ArrayList<>(); mLoadMoreData = new ArrayList<>(); mPushData = new ArrayList<>(); //这里先预加载加载更多的数据,然后加载更多的时候分段取出来,模拟加载更多 initLoadMoreData(); //pushData initPushData(); } private void initPushData() { String originalFundData = KViewSimulateNetAPI.getOriginalFundData(mContext, 2); if (originalFundData == null) { Log.e(TAG, "loadData: 从网络获取到的数据为空"); return; } List OriginFundModeList; try { OriginFundModeList = GsonUtil.fromJson2Object(originalFundData, new TypeToken>() { }.getType()); } catch (Exception e) { e.printStackTrace(); return; } //开始适配图表数据 mPushData = adapterData(OriginFundModeList); } private void initLoadMoreData() { String originalFundData = KViewSimulateNetAPI.getOriginalFundData(mContext, 0); if (originalFundData == null) { Log.e(TAG, "loadData: 从网络获取到的数据为空"); return; } try { List quotesList = GsonUtil.fromJson2Object(originalFundData, new TypeToken>() { }.getType()); mLoadMoreData = adapterData(quotesList); } catch (Exception e) { e.printStackTrace(); return; } } private void loadData() { //模拟网络环境加载数据列表 Disposable disposable = Observable.timer(StringUtils.getRadomNum(500, 2000), TimeUnit.MILLISECONDS) .doOnNext(data -> { String originalData = KViewSimulateNetAPI.getOriginalFundData(mContext, 2); if (originalData == null) { Log.e(TAG, "loadData: 从网络获取到的数据为空"); return; } try { List originQuotes = GsonUtil .fromJson2Object(originalData, new TypeToken>() { }.getType()); mQuotesList = adapterData(originQuotes); } catch (Exception e) { e.printStackTrace(); Log.e(TAG, "loadData: json转换错误"); return; } }) .subscribeOn(Schedulers.computation()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( data -> mAkvKvKview.setKViewData(mQuotesList, new KViewListener.MasterTouchListener() { @Override public void onLongTouch(Quotes preQuotes, Quotes currentQuotes) { showContanier(preQuotes, currentQuotes); } @Override public void onUnLongTouch() { mAkvLlContainer.setVisibility(View.INVISIBLE); } @Override public void needLoadMore() { loadMore(); } }), Throwable::printStackTrace ); unSubscription(disposable); } private void loadMore() { if (mLoadMoreData == null) return; Disposable disposable = Observable.timer(StringUtils.getRadomNum(1000, 5000), TimeUnit.MILLISECONDS) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( data -> { int size = mLoadMoreData.size(); int min = size / 20; int max = size / 5;//一次最多加载多少 int loadSize = StringUtils.getRadomNum(min, max); if (index == loadSize) { //没有更多数据了 mAkvKvKview.loadMoreNoData(); } if ((index + loadSize) > mLoadMoreData.size()) { loadSize = mLoadMoreData.size(); } List loadList = mLoadMoreData.subList(index, index + loadSize); index = index + loadSize;//重置起始位置 mAkvKvKview.loadKViewData(loadList); } , throwable -> throwable.printStackTrace()); unSubscription(disposable); } private List adapterData(List originFundModeList) { List fundModeList = new ArrayList<>();//适配后的数据 for (OriginQuotes OriginQuotes : originFundModeList) { Quotes Quotes = new Quotes(OriginQuotes.o, OriginQuotes.h, OriginQuotes.l, OriginQuotes.c, OriginQuotes.t); fundModeList.add(Quotes); } return fundModeList; } private void showContanier(Quotes preQuotes, Quotes currentQuotes) { mAkvLlContainer.setVisibility(View.VISIBLE); int digits = 4; boolean isPositive; String precent; double dis = (currentQuotes.c - preQuotes.c) / currentQuotes.c * 100; isPositive = dis >= 0; precent = FormatUtil.formatBySubString(dis, 2); precent += "%"; // mAkvTvH.setText(FormatUtil.numFormat(currentQuotes.h, digits)); mAkvTvO.setText(FormatUtil.numFormat(currentQuotes.o, digits)); mAkvTvL.setText(FormatUtil.numFormat(currentQuotes.l, digits)); mAkvTvC.setText(FormatUtil.numFormat(currentQuotes.c, digits)); mAkvTvP.setText(precent); mAkvTvTime.setText(TimeUtils.millis2String(currentQuotes.t, new SimpleDateFormat("MM-dd HH:mm"))); if (isPositive) { mAkvTvH.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); mAkvTvO.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); mAkvTvL.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); mAkvTvC.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); mAkvTvP.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); } else { mAkvTvH.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); mAkvTvO.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); mAkvTvL.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); mAkvTvC.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); mAkvTvP.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); } } private int getMyColor(@ColorRes int colorId) { return getResources().getColor(colorId); } public void showCandle(View view) { boolean showTimSharing = mAkvKvKview.isShowTimSharing(); mAkvKvKview.setShowTimSharing(!showTimSharing); if (!showTimSharing) { ((Button) view).setText("点击展示蜡烛图"); } else { ((Button) view).setText("点击展示分时图"); } } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/beginner/ui/KViewVerticalActivity.java ================================================ package com.tophold.example.demo.kview.beginner.ui; import android.os.Bundle; import android.support.annotation.ColorRes; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; import com.google.gson.reflect.TypeToken; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import com.tophold.example.base.BaseActivity; import com.tophold.example.R; import com.tophold.example.demo.kview.beginner.api.KViewSimulateNetAPI; import com.tophold.example.demo.kview.beginner.model.OriginQuotes; import com.tophold.trade.utils.FormatUtil; import com.tophold.example.utils.GsonUtil; import com.tophold.trade.utils.StringUtils; import com.tophold.trade.utils.TimeUtils; import com.tophold.trade.view.kview.KView; import com.tophold.trade.view.kview.KViewListener; import com.tophold.trade.view.kview.Quotes; /** * timesharing0:模拟的是加载更多的数据,注意,会分段取,模拟的是多次加载更多 * timesharing1:模拟的是api请求的数据集合,注意:一次加载完毕,模拟的是第一次加载的数据 * timesharing2:模拟的是实时**推送**的数据,注意:会分段取,一次取一个。 */ public class KViewVerticalActivity extends BaseActivity { //bind view private LinearLayout mAkvLlContainer; private TextView mAkvTvH; private TextView mAkvTvO; private TextView mAkvTvTime; private TextView mAkvTvL; private TextView mAkvTvC; private TextView mAkvTvP; private KView mAkvKvKview; private Button mAkvBtnShowCandle; private Button mAkvBtnShowMinnor; //模拟网络过来的列表数据 List mQuotesList; //模拟加载更多的数据 List mLoadMoreData; //模拟socket推送过来的单个数据 List mPushData; //加载更多,加载到哪儿了。因为真实应用中,也存在加载完毕的情况。这里对应加载到list的最后 int index = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_kview_vertical); initView(); initData(); loadData(); pushData(); } private void pushData() { Disposable disposable = Observable.interval(StringUtils.getRadomNum(300, 3000), TimeUnit.MILLISECONDS) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( data -> { int size = mPushData.size(); if (data < size) { mAkvKvKview.pushKViewData(mPushData.get(data.intValue()), 0); } else { } } , throwable -> throwable.printStackTrace()); unSubscription(disposable); } private void initView() { mAkvLlContainer = (LinearLayout) findViewById(R.id.akv_ll_container); mAkvTvH = (TextView) findViewById(R.id.akv_tv_h); mAkvTvO = (TextView) findViewById(R.id.akv_tv_o); mAkvTvTime = (TextView) findViewById(R.id.akv_tv_time); mAkvTvL = (TextView) findViewById(R.id.akv_tv_l); mAkvTvC = (TextView) findViewById(R.id.akv_tv_c); mAkvTvP = (TextView) findViewById(R.id.akv_tv_p); mAkvKvKview = (KView) findViewById(R.id.akv_kv_kview); mAkvBtnShowCandle = (Button) findViewById(R.id.akv_btn_showCandle); mAkvBtnShowMinnor = (Button) findViewById(R.id.akv_btn_showMinnor); } private void initData() { mQuotesList = new ArrayList<>(); mLoadMoreData = new ArrayList<>(); mPushData = new ArrayList<>(); //这里先预加载加载更多的数据,然后加载更多的时候分段取出来,模拟加载更多 initLoadMoreData(); //pushData initPushData(); } private void initPushData() { String originalFundData = KViewSimulateNetAPI.getOriginalFundData(mContext, 3); if (originalFundData == null) { Log.e(TAG, "loadData: 从网络获取到的数据为空"); return; } List OriginFundModeList; try { OriginFundModeList = GsonUtil.fromJson2Object(originalFundData, new TypeToken>() { }.getType()); } catch (Exception e) { e.printStackTrace(); return; } //开始适配图表数据 mPushData = adapterData(OriginFundModeList); } private void initLoadMoreData() { String originalFundData = KViewSimulateNetAPI.getOriginalFundData(mContext, 3); if (originalFundData == null) { Log.e(TAG, "loadData: 从网络获取到的数据为空"); return; } try { List quotesList = GsonUtil.fromJson2Object(originalFundData, new TypeToken>() { }.getType()); mLoadMoreData = adapterData(quotesList); } catch (Exception e) { e.printStackTrace(); return; } } private void loadData() { //模拟网络环境加载数据列表 Disposable disposable = Observable.timer(StringUtils.getRadomNum(500, 2000), TimeUnit.MILLISECONDS) .doOnNext(data -> { String originalData = KViewSimulateNetAPI.getOriginalFundData(mContext, 3); if (originalData == null) { Log.e(TAG, "loadData: 从网络获取到的数据为空"); return; } try { List originQuotes = GsonUtil .fromJson2Object(originalData, new TypeToken>() { }.getType()); mQuotesList = adapterData(originQuotes); } catch (Exception e) { e.printStackTrace(); Log.e(TAG, "loadData: json转换错误"); return; } }) .subscribeOn(Schedulers.computation()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( data -> { mAkvKvKview.setKViewData(mQuotesList, new KViewListener.MasterTouchListener() { @Override public void onLongTouch(Quotes preQuotes, Quotes currentQuotes) { showContanier(preQuotes, currentQuotes); } @Override public void onUnLongTouch() { mAkvLlContainer.setVisibility(View.INVISIBLE); } @Override public void needLoadMore() { loadMore(); } }); }, throwable -> throwable.printStackTrace() ); unSubscription(disposable); } private void loadMore() { if (mLoadMoreData == null) return; Disposable disposable = Observable.timer(StringUtils.getRadomNum(1000, 5000), TimeUnit.MILLISECONDS) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( data -> { int size = mLoadMoreData.size(); int min = size / 20; int max = size / 5;//一次最多加载多少 int loadSize = StringUtils.getRadomNum(min, max); if (index == loadSize) { //没有更多数据了 mAkvKvKview.loadMoreNoData(); } if ((index + loadSize) > mLoadMoreData.size()) { loadSize = mLoadMoreData.size(); } List loadList = mLoadMoreData.subList(index, index + loadSize); index = index + loadSize;//重置起始位置 mAkvKvKview.loadKViewData(loadList); } , throwable -> throwable.printStackTrace()); unSubscription(disposable); } public void showCandle(View view) { boolean showTimSharing = mAkvKvKview.isShowTimSharing(); mAkvKvKview.setShowTimSharing(!showTimSharing); if (!showTimSharing) { mAkvBtnShowCandle.setText("点击展示蜡烛图"); } else { mAkvBtnShowCandle.setText("点击展示分时图"); } } public void showMinor(View view) { boolean showMinor = mAkvKvKview.isShowMinor(); mAkvKvKview.setShowMinor(!showMinor); if (!showMinor) { mAkvBtnShowMinnor.setText("点击不显示副图"); } else { mAkvBtnShowMinnor.setText("点击显示副图"); } } private List adapterData(List originFundModeList) { List fundModeList = new ArrayList<>();//适配后的数据 for (OriginQuotes OriginQuotes : originFundModeList) { Quotes Quotes = new Quotes(OriginQuotes.o, OriginQuotes.h, OriginQuotes.l, OriginQuotes.c, OriginQuotes.t); fundModeList.add(Quotes); } return fundModeList; } private void showContanier(Quotes preQuotes, Quotes currentQuotes) { mAkvLlContainer.setVisibility(View.VISIBLE); int digits = 4; boolean isPositive; String precent; double dis = (currentQuotes.c - preQuotes.c) / currentQuotes.c * 100; isPositive = dis >= 0; precent = FormatUtil.formatBySubString(dis, 2); precent += "%"; // mAkvTvH.setText(FormatUtil.numFormat(currentQuotes.h, digits)); mAkvTvO.setText(FormatUtil.numFormat(currentQuotes.o, digits)); mAkvTvL.setText(FormatUtil.numFormat(currentQuotes.l, digits)); mAkvTvC.setText(FormatUtil.numFormat(currentQuotes.c, digits)); mAkvTvP.setText(precent); mAkvTvTime.setText(TimeUtils.millis2String(currentQuotes.t, new SimpleDateFormat("MM-dd HH:mm"))); if (isPositive) { mAkvTvH.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); mAkvTvO.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); mAkvTvL.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); mAkvTvC.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); mAkvTvP.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); } else { mAkvTvH.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); mAkvTvO.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); mAkvTvL.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); mAkvTvC.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); mAkvTvP.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); } } private int getMyColor(@ColorRes int colorId) { return getResources().getColor(colorId); } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/btc/api/GZipUtil.java ================================================ package com.tophold.example.demo.kview.btc.api; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/28 14:14 * 描 述 : * ============================================================ **/ public class GZipUtil { // 压缩 public static byte[] compress(byte[] data) throws IOException { if (data == null || data.length == 0) { return null; } ByteArrayOutputStream out = new ByteArrayOutputStream(); GZIPOutputStream gzip = new GZIPOutputStream(out); gzip.write(data); gzip.close(); return out.toByteArray();//out.toString("ISO-8859-1"); } public static byte[] compress(String str) throws IOException { if (str == null || str.length() == 0) { return null; } return compress(str.getBytes("utf-8")); } // 解压缩 public static byte[] uncompress(byte[] data) throws IOException { if (data == null || data.length == 0) { return data; } ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayInputStream in = new ByteArrayInputStream(data); GZIPInputStream gunzip = new GZIPInputStream(in); byte[] buffer = new byte[256]; int n; while ((n = gunzip.read(buffer)) >= 0) { out.write(buffer, 0, n); } gunzip.close(); in.close(); return out.toByteArray(); } public static String uncompressBytes(byte[] data) throws IOException { byte[] bytes = uncompress(data); return new String(bytes); } public static String uncompress(String str) throws IOException { if (str == null || str.length() == 0) { return str; } byte[] data = uncompress(str.getBytes("utf-8")); // ISO-8859-1 return new String(data); } /** * @param @param unZipfile * @param @param destFile 指定读取文件,需要从压缩文件中读取文件内容的文件名 * @param @return 设定文件 * @return String 返回类型 * @throws * @Title: unZip * @Description: TODO(这里用一句话描述这个方法的作用) */ public static String unZip(String unZipfile, String destFile) {// unZipfileName需要解压的zip文件名 InputStream inputStream; String inData = null; try { // 生成一个zip的文件 File f = new File(unZipfile); ZipFile zipFile = new ZipFile(f); // 遍历zipFile中所有的实体,并把他们解压出来 ZipEntry entry = zipFile.getEntry(destFile); if (!entry.isDirectory()) { // 获取出该压缩实体的输入流 inputStream = zipFile.getInputStream(entry); ByteArrayOutputStream out = new ByteArrayOutputStream(); byte[] bys = new byte[4096]; for (int p = -1; (p = inputStream.read(bys)) != -1; ) { out.write(bys, 0, p); } inData = out.toString(); out.close(); inputStream.close(); } zipFile.close(); } catch (IOException ioe) { ioe.printStackTrace(); } return inData; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/btc/api/HttpCommonInterceptor.java ================================================ package com.tophold.example.demo.kview.btc.api; import android.util.Log; import java.io.IOException; import java.util.HashMap; import java.util.Map; import okhttp3.Interceptor; import okhttp3.Request; import okhttp3.Response; /** * 拦截器 * * 向请求头里添加公共参数 * Created by zhouwei on 16/11/10. */ public class HttpCommonInterceptor implements Interceptor { private Map mHeaderParamsMap = new HashMap<>(); public HttpCommonInterceptor() { } @Override public Response intercept(Chain chain) throws IOException { Log.d("HttpCommonInterceptor","add common params"); Request oldRequest = chain.request(); // 添加新的参数,添加到url 中 /* HttpUrl.Builder authorizedUrlBuilder = oldRequest.url() .newBuilder() .scheme(oldRequest.url().scheme()) .host(oldRequest.url().host());*/ // 新的请求 Request.Builder requestBuilder = oldRequest.newBuilder(); requestBuilder.method(oldRequest.method(), oldRequest.body()); //添加公共参数,添加到header中 if(mHeaderParamsMap.size() > 0){ for(Map.Entry params:mHeaderParamsMap.entrySet()){ requestBuilder.header(params.getKey(),params.getValue()); } } Request newRequest = requestBuilder.build(); return chain.proceed(newRequest); } public static class Builder{ HttpCommonInterceptor mHttpCommonInterceptor; public Builder(){ mHttpCommonInterceptor = new HttpCommonInterceptor(); } public Builder addHeaderParams(String key, String value){ mHttpCommonInterceptor.mHeaderParamsMap.put(key,value); return this; } public Builder addHeaderParams(String key, int value){ return addHeaderParams(key, String.valueOf(value)); } public Builder addHeaderParams(String key, float value){ return addHeaderParams(key, String.valueOf(value)); } public Builder addHeaderParams(String key, long value){ return addHeaderParams(key, String.valueOf(value)); } public Builder addHeaderParams(String key, double value){ return addHeaderParams(key, String.valueOf(value)); } public HttpCommonInterceptor build(){ return mHttpCommonInterceptor; } } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/btc/api/HuobiService.java ================================================ package com.tophold.example.demo.kview.btc.api; import java.util.List; import java.util.Map; import io.reactivex.Observable; import retrofit2.http.GET; import retrofit2.http.QueryMap; import com.tophold.example.demo.kview.btc.model.HuobiData; import com.tophold.example.demo.kview.btc.model.HuobiSymbol; import com.tophold.example.demo.kview.btc.model.HuobiQuote; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/22 11:31 * 描 述 : * ============================================================ **/ public interface HuobiService { @GET("/market/history/kline") Observable>> chartQuotes(@QueryMap Map params); @GET("/v1/common/symbols") Observable>> getSymbolList(@QueryMap Map params); } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/btc/api/HuobiSocketApi.java ================================================ package com.tophold.example.demo.kview.btc.api; import android.util.Log; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/22 21:31 * 描 述 : * ============================================================ **/ public class HuobiSocketApi { public static final String TAG = HuobiSocketApi.class.getSimpleName(); public static void ping(long time) { String str = "{\"ping\":" + time + "}"; sendService(str); } public static void pong(long time) { String str = "{\"pong\":" + time + "}"; sendService(str); } /** * 订阅KLine和取消KLine * * @param id 一个唯一值,建议用时间戳 * @param symbol * @param period 周期,不管任何周期,全部转化为时间戳格式 * @param sub true:订阅;false:取消订阅 */ public static void kLine(long id, String symbol, long period, boolean sub) { String periodByMs = getPeriodByMs(period); if (periodByMs == null) { Log.e(TAG, "subKLine: period 不合法!!!"); return; } String kline = "market." + symbol + ".kline." + periodByMs; String json = "{" + (sub ? "\"sub\"" : "\"unsub\"") + ":\"" + kline + "\",\"id\":\"" + id + "\"}"; sendService(json); } public static void subKLine(String symbol, long period, boolean sub) { long id = System.currentTimeMillis(); kLine(id, symbol, period, sub); } private static void sendService(String str) { Log.d(TAG, "sendService: " + str); HuobiWebSocket.getInstance().getWebSocket().send(str); } private static String getPeriodByMs(long ms) { long s = ms / 1000; if (s == 1 * 60) return "1min"; if (s == 5 * 60) return "5min"; if (s == 15 * 60) return "15min"; if (s == 30 * 60) return "30min"; if (s == 60 * 60) return "60min"; if (s == 24 * 60 * 60) return "1day"; if (s == 7 * 24 * 60 * 60) return "1week"; if (s == 30 * 24 * 60 * 60) return "1mon"; if (s == 365 * 24 * 60 * 60) return "1year"; Log.d(TAG, "getPeriodByMs: unkonwn ms!!!"); return null; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/btc/api/HuobiSocketParser.java ================================================ package com.tophold.example.demo.kview.btc.api; import android.util.Log; import org.greenrobot.eventbus.EventBus; import org.json.JSONException; import org.json.JSONObject; import com.tophold.example.demo.kview.btc.model.HuobiWsQuote; import com.tophold.example.utils.GsonUtil; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/22 21:26 * 描 述 : * ============================================================ **/ public class HuobiSocketParser { public static final String TAG = HuobiSocketParser.class.getSimpleName(); public static void fix2Object(String str) { Log.d(TAG, "fix2Object: " + str); try { formatJson(str); } catch (JSONException e) { e.printStackTrace(); } } private static void formatJson(String str) throws JSONException { JSONObject json = new JSONObject(str); if (json.has("ping")) { long ping = json.getLong("ping"); HuobiSocketApi.pong(ping); return; } //判断不严谨 if (json.has("ch")) { HuobiWsQuote huobiWsQuote = GsonUtil.fromJson2Object(str, HuobiWsQuote.class); if (huobiWsQuote != null) { obj2EventBus(huobiWsQuote); } return; } } private static void obj2EventBus(Object object) { EventBus.getDefault().post(object); } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/btc/api/HuobiWebSocket.java ================================================ package com.tophold.example.demo.kview.btc.api; import android.support.annotation.Nullable; import android.util.Log; import java.io.IOException; import java.util.concurrent.TimeUnit; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import okhttp3.WebSocket; import okhttp3.WebSocketListener; import okhttp3.logging.HttpLoggingInterceptor; import okio.ByteString; import com.tophold.example.BuildConfig; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/22 21:15 * 描 述 : * ============================================================ **/ public class HuobiWebSocket { public static final String TAG = HuobiWebSocket.class.getSimpleName(); private static final int DEFAULT_TIME_OUT = 20;//超时时间 5s private static final int DEFAULT_READ_TIME_OUT = 20; //temp quotes private static final String BASE_URL = "https://api.huobi.br.com:443/ws"; Request mRequest; private okhttp3.WebSocket mWebSocket; OkHttpClient client; boolean isConnctted = false; public WebSocket getWebSocket() { return mWebSocket; } private HuobiWebSocket() { // 创建 OKHttpClient OkHttpClient.Builder builder = new OkHttpClient().newBuilder(); builder.connectTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS);//连接超时时间 builder.writeTimeout(DEFAULT_READ_TIME_OUT, TimeUnit.SECONDS);//写操作 超时时间 builder.readTimeout(DEFAULT_READ_TIME_OUT, TimeUnit.SECONDS);//读操作超时时间 builder.pingInterval(5000, TimeUnit.MILLISECONDS); builder.retryOnConnectionFailure(true);//失败重试 //DEBUG模式下 添加日志拦截器 if (BuildConfig.DEBUG) { HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); interceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS); builder.addInterceptor(interceptor); } // 添加公共参数拦截器 HttpCommonInterceptor commonInterceptor = new HttpCommonInterceptor.Builder() .addHeaderParams("paltform", "android") .addHeaderParams("userToken", "1234343434dfdfd3434") .addHeaderParams("userId", "123445") .build(); //builder.addInterceptor(commonInterceptor); //HuobiWebSocket client = builder.build(); } public void init() { mRequest = new Request.Builder().url(BASE_URL).build(); mWebSocket = client.newWebSocket(mRequest, new WebSocketListener() { @Override public void onOpen(okhttp3.WebSocket webSocket, Response response) { super.onOpen(webSocket, response); isConnctted = true; Log.d(TAG, "onOpen: "); //Toast.makeText(MyApplication.mAppContext, "websocket连接成功...", Toast.LENGTH_SHORT).show(); } @Override public void onMessage(okhttp3.WebSocket webSocket, String text) { super.onMessage(webSocket, text); Log.d(TAG, "onMessage: " + text); HuobiSocketParser.fix2Object(text); } @Override public void onMessage(WebSocket webSocket, ByteString bytes) { super.onMessage(webSocket, bytes); String s = null; try { s = GZipUtil.uncompressBytes(bytes.toByteArray()); HuobiSocketParser.fix2Object(s); } catch (IOException e) { e.printStackTrace(); } } @Override public void onClosed(okhttp3.WebSocket webSocket, int code, String reason) { super.onClosed(webSocket, code, reason); isConnctted = false; Log.d(TAG, "onClosed,code: " + code + ",reason:" + reason); //Toast.makeText(MyApplication.mAppContext, "websocket关闭...", Toast.LENGTH_SHORT).show(); } @Override public void onFailure(okhttp3.WebSocket webSocket, Throwable t, @Nullable Response response) { super.onFailure(webSocket, t, response); isConnctted = false; Log.e(TAG, "onFailure: " + (response != null ? response.toString() : "response==null")); t.printStackTrace(); } }); } private static class SingletonHolder { private static final HuobiWebSocket INSTANCE = new HuobiWebSocket(); } /** * 获取RetrofitServiceManager * * @return */ public static HuobiWebSocket getInstance() { return HuobiWebSocket.SingletonHolder.INSTANCE; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/btc/api/RetrofitManager.java ================================================ package com.tophold.example.demo.kview.btc.api; import java.util.concurrent.TimeUnit; import io.reactivex.Observable; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; import okhttp3.OkHttpClient; import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Retrofit; import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; import com.tophold.example.BuildConfig; public class RetrofitManager { private static final int DEFAULT_TIME_OUT = 20;//超时时间 5s private static final int DEFAULT_READ_TIME_OUT = 20; //temp quotes // private static final String BASE_URL = "https://api.huobipro.com"; private static final String BASE_URL = "https://api.huobi.br.com"; private Retrofit mRetrofit; private RetrofitManager() { // 创建 OKHttpClient OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.connectTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS);//连接超时时间 builder.writeTimeout(DEFAULT_READ_TIME_OUT, TimeUnit.SECONDS);//写操作 超时时间 builder.readTimeout(DEFAULT_READ_TIME_OUT, TimeUnit.SECONDS);//读操作超时时间 builder.retryOnConnectionFailure(true);//失败重试 //DEBUG模式下 添加日志拦截器 if (BuildConfig.DEBUG) { HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); interceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS); builder.addInterceptor(interceptor); } // 添加公共参数拦截器 HttpCommonInterceptor commonInterceptor = new HttpCommonInterceptor.Builder() .addHeaderParams("paltform", "android") .addHeaderParams("userToken", "1234343434dfdfd3434") .addHeaderParams("userId", "123445") .build(); //builder.addInterceptor(commonInterceptor); // 创建Retrofit mRetrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .addCallAdapterFactory(RxJava2CallAdapterFactory.createWithScheduler(Schedulers.io())) .addConverterFactory(GsonConverterFactory.create()) .client(builder.build()) .build(); } private static class SingletonHolder { private static final RetrofitManager INSTANCE = new RetrofitManager(); } /** * 获取RetrofitServiceManager * * @return */ public static RetrofitManager getInstance() { return SingletonHolder.INSTANCE; } /** * 获取对应的Service * * @param service Service 的 class * @param * @return */ public T create(Class service) { return mRetrofit.create(service); } public static Observable call(Observable observable, Observer observer) { observable.subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(observer); return observable; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/btc/model/HuobiData.java ================================================ package com.tophold.example.demo.kview.btc.model; import java.io.Serializable; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/26 13:29 * 描 述 : * ============================================================ **/ public class HuobiData implements Serializable{ public String status; public String ch; public long ts; public T data; @Override public String toString() { return "HuobiData{" + "status='" + status + '\'' + ", ch='" + ch + '\'' + ", ts=" + ts + ", data=" + data + '}'; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/btc/model/HuobiQuote.java ================================================ package com.tophold.example.demo.kview.btc.model; import java.io.Serializable; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/26 13:31 * 描 述 : * ============================================================ **/ public class HuobiQuote implements Serializable{ public long id; public double open; public double close; public double low; public double high; public double amount; public double vol; public double count; @Override public String toString() { return "HuobiQuote{" + "id='" + id + '\'' + ", open=" + open + ", close=" + close + ", low=" + low + ", high=" + high + ", amount=" + amount + ", vol=" + vol + ", count=" + count + '}'; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/btc/model/HuobiSymbol.java ================================================ package com.tophold.example.demo.kview.btc.model; import com.google.gson.annotations.SerializedName; import java.io.Serializable; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/26 13:42 * 描 述 : * ============================================================ **/ public class HuobiSymbol implements Serializable { @SerializedName("base-currency") public String base_currency; @SerializedName("quote-currency") public String quote_currency; @SerializedName("price-precision") public int price_precision; @SerializedName("amount-precision") public int amount_precision; @SerializedName("symbol-partition") public String symbol_partition; public HuobiSymbol(String base_currency, String quote_currency, int price_precision, int amount_precision, String symbol_partition) { this.base_currency = base_currency; this.quote_currency = quote_currency; this.price_precision = price_precision; this.amount_precision = amount_precision; this.symbol_partition = symbol_partition; } @Override public String toString() { return "HuobiSymbol{" + "base_currency='" + base_currency + '\'' + ", quote_currency='" + quote_currency + '\'' + ", price_precision=" + price_precision + ", amount_precision=" + amount_precision + ", symbol_partition='" + symbol_partition + '\'' + '}'; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/btc/model/HuobiTab.java ================================================ package com.tophold.example.demo.kview.btc.model; import java.io.Serializable; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/26 16:07 * 描 述 : * ============================================================ **/ public class HuobiTab implements Serializable { public HuobiTab.HuobiType mForexType; public String tabName; public HuobiTab(HuobiTab.HuobiType forexType, String tabName) { this.mForexType = forexType; this.tabName = tabName; } /** * 获取对应类型的长度 * * @return sencond */ public long getTypeLength() { long len = 0; switch (mForexType) { case _timeShring: len = 60; break; case _1m: len = 60; break; case _5m: len = 5 * 60; break; case _15m: len = 15 * 60; break; case _30m: len = 30 * 60; break; case _60m: len = 60 * 60; break; case _1d: len = 24 * 60 * 60; break; case _1w: len = 7 * 24 * 60 * 60; break; case _1mon: len = 30 * 24 * 60 * 60; break; case _1y: len = 365 * 24 * 60 * 60; break; default: len = 60; break; } return len; } /** * 根据mForexType返回接口需要的类型字段 * * @return */ public String getType() { String typeMsg = "1min"; switch (mForexType) { case _timeShring: typeMsg = "1min"; break; case _1m: typeMsg = "1min"; break; case _5m: typeMsg = "5min"; break; case _15m: typeMsg = "15min"; break; case _30m: typeMsg = "30min"; break; case _60m: typeMsg = "60min"; break; case _1d: typeMsg = "1day"; break; case _1w: typeMsg = "1week"; break; case _1mon: typeMsg = "1mon"; break; case _1y: typeMsg = "1year"; break; default: typeMsg = "1min"; break; } return typeMsg; } public enum HuobiType { _timeShring, _1m, _5m, _15m, _30m, _60m, _1d, _1w, _1mon, _1y } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/btc/model/HuobiWsQuote.java ================================================ package com.tophold.example.demo.kview.btc.model; import java.io.Serializable; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/28 18:39 * 描 述 : * ============================================================ **/ public class HuobiWsQuote implements Serializable{ /** * ch : market.eosusdt.kline.1min * ts : 1522233524438 * tick : {"id":1522233480,"open":6.317,"close":6.3216,"low":6.3091,"high":6.3216,"amount":2024.6227,"vol":12789.80758224,"count":21} */ public String ch; public long ts; public TickBean tick; public static class TickBean { /** * id : 1522233480 * open : 6.317 * close : 6.3216 * low : 6.3091 * high : 6.3216 * amount : 2024.6227 * vol : 12789.80758224 * count : 21 */ public int id; public double open; public double close; public double low; public double high; public double amount; public double vol; public int count; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/btc/ui/HuobiActivity.java ================================================ package com.tophold.example.demo.kview.btc.ui; import android.content.pm.ActivityInfo; import android.os.Bundle; import android.support.annotation.ColorRes; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.LinearLayout; import android.widget.TextView; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import com.tophold.example.base.BaseActivity; import com.tophold.example.utils.NoScrollViewPager; import com.tophold.example.R; import com.tophold.example.demo.kview.btc.model.HuobiSymbol; import com.tophold.example.demo.kview.btc.model.HuobiTab; import com.tophold.trade.utils.FormatUtil; import com.tophold.trade.utils.TimeUtils; import com.tophold.trade.view.kview.Quotes; public class HuobiActivity extends BaseActivity { public static final String KEY_FOREX = "KEY_FOREX"; public static final String KEY_HORIZONTAL = "KEY_HORIZONTAL"; private TabLayout mAfTlTablayout; private NoScrollViewPager mAfVpViewpager; private LinearLayout mAkvLlContainer; private TextView mAkvTvH; private TextView mAkvTvO; private TextView mAkvTvTime; private TextView mAkvTvL; private TextView mAkvTvC; private TextView mAkvTvP; private TextView af_tv_symbol; private TextView mAkvTvBlank; //是否是横屏 boolean mIsHorizontal = false; private List mForexTabList; private List mKViewFragmentList; HuobiSymbol mForex; @Override protected void getBundleExtras(Bundle extras) { super.getBundleExtras(extras); mForex = (HuobiSymbol) extras.getSerializable(KEY_FOREX); mIsHorizontal = extras.getBoolean(KEY_HORIZONTAL); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (mIsHorizontal) { requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);// 设置全屏 } setContentView(R.layout.activity_huobi); initView(); initData(); initAdapter(); loadData(); initListener(); } @Override protected void onResume() { if (mIsHorizontal) { if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } } super.onResume(); } private void initView() { mAfTlTablayout = (TabLayout) findViewById(R.id.af_tl_tablayout); mAfVpViewpager = (NoScrollViewPager) findViewById(R.id.af_vp_viewpager); mAkvLlContainer = (LinearLayout) findViewById(R.id.akv_ll_container); mAkvTvH = (TextView) findViewById(R.id.akv_tv_h); mAkvTvO = (TextView) findViewById(R.id.akv_tv_o); mAkvTvTime = (TextView) findViewById(R.id.akv_tv_time); mAkvTvL = (TextView) findViewById(R.id.akv_tv_l); mAkvTvC = (TextView) findViewById(R.id.akv_tv_c); mAkvTvP = (TextView) findViewById(R.id.akv_tv_p); mAkvTvBlank = (TextView) findViewById(R.id.af_tv_blank); af_tv_symbol = (TextView) findViewById(R.id.af_tv_symbol); if (mIsHorizontal) { af_tv_symbol.setVisibility(View.GONE); mAkvTvBlank.setVisibility(View.GONE); } else { af_tv_symbol.setVisibility(View.VISIBLE); mAkvTvBlank.setVisibility(View.VISIBLE); af_tv_symbol.setText(mForex.base_currency + "/" + mForex.quote_currency); } } private void initData() { mForexTabList = new ArrayList<>(); mForexTabList.add(new HuobiTab(HuobiTab.HuobiType._timeShring, "分时")); mForexTabList.add(new HuobiTab(HuobiTab.HuobiType._1m, "1分")); mForexTabList.add(new HuobiTab(HuobiTab.HuobiType._5m, "5分")); mForexTabList.add(new HuobiTab(HuobiTab.HuobiType._15m, "15分")); mForexTabList.add(new HuobiTab(HuobiTab.HuobiType._30m, "30分")); mForexTabList.add(new HuobiTab(HuobiTab.HuobiType._60m, "1小时")); mForexTabList.add(new HuobiTab(HuobiTab.HuobiType._1d, "日K")); mForexTabList.add(new HuobiTab(HuobiTab.HuobiType._1w, "周K")); mForexTabList.add(new HuobiTab(HuobiTab.HuobiType._1mon, "月K")); mForexTabList.add(new HuobiTab(HuobiTab.HuobiType._1y, "年K")); mAfTlTablayout.setTabMode(TabLayout.MODE_SCROLLABLE); mKViewFragmentList = new ArrayList<>(); for (HuobiTab forexTab : mForexTabList) { mKViewFragmentList.add(HuobiFragment.newInstance(forexTab, mForex)); } } private void initAdapter() { mAfVpViewpager.setAdapter(new HuobiAdapter(getSupportFragmentManager(), mKViewFragmentList, mForexTabList)); mAfTlTablayout.setupWithViewPager(mAfVpViewpager); } private void loadData() { } private void initListener() { } public void hidenContainer() { mAfTlTablayout.setVisibility(View.VISIBLE); mAkvLlContainer.setVisibility(View.GONE); } public void showContanier(Quotes preQuotes, Quotes currentQuotes) { mAfTlTablayout.setVisibility(View.GONE); mAkvLlContainer.setVisibility(View.VISIBLE); int digits = 5; boolean isPositive; String precent; double dis = (currentQuotes.c - preQuotes.c) / currentQuotes.c * 100; isPositive = dis >= 0; precent = FormatUtil.formatBySubString(dis, 2); precent += "%"; // mAkvTvH.setText(FormatUtil.numFormat(currentQuotes.h, digits)); mAkvTvO.setText(FormatUtil.numFormat(currentQuotes.o, digits)); mAkvTvL.setText(FormatUtil.numFormat(currentQuotes.l, digits)); mAkvTvC.setText(FormatUtil.numFormat(currentQuotes.c, digits)); mAkvTvP.setText(precent); mAkvTvTime.setText(TimeUtils.millis2String(currentQuotes.t, new SimpleDateFormat("MM-dd HH:mm"))); if (isPositive) { mAkvTvH.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); mAkvTvO.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); mAkvTvL.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); mAkvTvC.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); mAkvTvP.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); } else { mAkvTvH.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); mAkvTvO.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); mAkvTvL.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); mAkvTvC.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); mAkvTvP.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); } } private int getMyColor(@ColorRes int colorId) { return getResources().getColor(colorId); } public void showHorizontal(View view) { Bundle bundle = new Bundle(); bundle.putBoolean(KEY_HORIZONTAL, true); bundle.putSerializable(KEY_FOREX, mForex); go(HuobiActivity.class, bundle); } public boolean isHorizontal() { return mIsHorizontal; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/btc/ui/HuobiAdapter.java ================================================ package com.tophold.example.demo.kview.btc.ui; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import java.util.List; import com.tophold.example.demo.kview.btc.model.HuobiTab; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/26 13:37 * 描 述 : * ============================================================ **/ public class HuobiAdapter extends FragmentPagerAdapter { private List mFragmentList; List mForexTabList; public HuobiAdapter(FragmentManager fm, List fragmentList, List mForexTabList) { super(fm); this.mFragmentList = fragmentList; this.mForexTabList = mForexTabList; } @Override public Fragment getItem(int position) { return mFragmentList.get(position); } @Override public int getCount() { return mFragmentList.size(); } @Override public CharSequence getPageTitle(int position) { return mForexTabList.get(position).tabName; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/btc/ui/HuobiFragment.java ================================================ package com.tophold.example.demo.kview.btc.ui; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import com.tophold.example.base.BaseFragment; import com.tophold.example.R; import com.tophold.example.demo.kview.btc.api.HuobiService; import com.tophold.example.demo.kview.btc.api.HuobiSocketApi; import com.tophold.example.demo.kview.btc.api.RetrofitManager; import com.tophold.example.demo.kview.btc.model.HuobiData; import com.tophold.example.demo.kview.btc.model.HuobiQuote; import com.tophold.example.demo.kview.btc.model.HuobiSymbol; import com.tophold.example.demo.kview.btc.model.HuobiTab; import com.tophold.example.demo.kview.btc.model.HuobiWsQuote; import com.tophold.trade.utils.StringUtils; import com.tophold.trade.view.kview.KView; import com.tophold.trade.view.kview.KViewListener; import com.tophold.trade.view.kview.Quotes; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/26 13:36 * 描 述 : * ============================================================ **/ public class HuobiFragment extends BaseFragment { public static final int DEF_PAGER_SIZE = 1000; private static final String ARG_PARAM1 = "param1"; private static final String ARG_PARAM2 = "param2"; public static final int DEF_COUNT = 100; private View mRootView; private KView mFkKvKview; HuobiTab mForexTab; HuobiSymbol mForex; //net List mQuotesList; public HuobiFragment() { } public static HuobiFragment newInstance(HuobiTab mForexTab, HuobiSymbol forex) { HuobiFragment fragment = new HuobiFragment(); Bundle args = new Bundle(); args.putSerializable(ARG_PARAM1, mForexTab); args.putSerializable(ARG_PARAM2, forex); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { mForexTab = (HuobiTab) getArguments().getSerializable(ARG_PARAM1); mForex = (HuobiSymbol) getArguments().getSerializable(ARG_PARAM2); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mRootView = inflater.inflate(R.layout.fragment_huobi, container, false); initView(); initData(); initAdapter(); loadData(); initListener(); return mRootView; } private void loadData() { loadKLineData(null, false); subKLineData(); } private void subKLineData() { HuobiSocketApi.subKLine(mForex.base_currency + mForex.quote_currency, mForexTab.getTypeLength() * 1000, true); } private void initView() { mFkKvKview = (KView) mRootView.findViewById(R.id.fk_kv_kview); mFkKvKview.setDigit(5); if (mForexTab.mForexType == HuobiTab.HuobiType._timeShring) { mFkKvKview.setShowTimSharing(true); } else { mFkKvKview.setShowTimSharing(false); } if (((HuobiActivity) getActivity()).isHorizontal()) { mFkKvKview.setShowMinor(true); mFkKvKview.setShowVol(true); } else { mFkKvKview.setShowMinor(false); mFkKvKview.setShowVol(false); } } private void initData() { mQuotesList = new ArrayList<>(); } private void initAdapter() { } private void loadKLineData(String start_time, final boolean isLoadMore) { Map map = new HashMap<>(); String symbol = mForex.base_currency + "" + mForex.quote_currency; map.put("symbol", symbol); map.put("period", mForexTab.getType()); map.put("size", DEF_PAGER_SIZE); //if (start_time != null) map.put("st", start_time); call(RetrofitManager.getInstance().create(HuobiService.class).chartQuotes(map), new Observer>>() { @Override public void onSubscribe(Disposable d) { unSubscription(d); } @Override public void onNext(HuobiData> huobiData) { String status = huobiData.status; if (!"ok".equals(status)) { Toast.makeText(mContext, "数据获取失败...", Toast.LENGTH_SHORT).show(); return; } List data = huobiData.data; if (StringUtils.isEmpty(data)) { Toast.makeText(mContext, "数据为空...", Toast.LENGTH_SHORT).show(); return; } adapterData(data); drawKView(isLoadMore); } @Override public void onError(Throwable e) { e.printStackTrace(); } @Override public void onComplete() { } }); } private void drawKView(boolean isLoadMore) { if (!isLoadMore) { mFkKvKview.setKViewData(mQuotesList, new KViewListener.MasterTouchListener() { @Override public void onLongTouch(Quotes preQuotes, Quotes currentQuotes) { ((HuobiActivity) getActivity()).showContanier(preQuotes, currentQuotes); } @Override public void onUnLongTouch() { ((HuobiActivity) getActivity()).hidenContainer(); } @Override public void needLoadMore() { if (StringUtils.isEmpty(mQuotesList)) { mFkKvKview.loadMoreNoData(); return; } Quotes quotes = mQuotesList.get(0); String showTime = quotes.getShowTime(); //loadKLineData(showTime, true);火币不支持分页 } }); } else { mFkKvKview.loadKViewData(mQuotesList); } } private void adapterData(List huobiQuoteList) { Collections.reverse(huobiQuoteList); List quotesList = new ArrayList<>(); for (HuobiQuote huobiQuote : huobiQuoteList) { Quotes quotes = new Quotes(huobiQuote.open, huobiQuote.high, huobiQuote.low, huobiQuote.close, huobiQuote.id * 1000, huobiQuote.amount); quotesList.add(quotes); } mQuotesList.addAll(0, quotesList);//注意时序问题 } private void initListener() { } @Override public boolean isBindEventBusHere() { return true; } @Subscribe(threadMode = ThreadMode.MAIN) public void onReviceWsQuotes(HuobiWsQuote huobiWsQuote) { if (huobiWsQuote == null || huobiWsQuote.tick == null) return; //返回的数据真实醉了。。。 String ch = huobiWsQuote.ch; String[] split = ch.split("\\."); String symbol = split[1]; String lineType = split[3]; if (!symbol.equals(mForex.base_currency + mForex.quote_currency)) return; if (!lineType.equals(mForexTab.getType())) return; HuobiWsQuote.TickBean tick = huobiWsQuote.tick; Quotes quotes = new Quotes(tick.open, tick.high, tick.low, tick.close, huobiWsQuote.ts); mFkKvKview.pushKViewData(quotes, mForexTab.getTypeLength() * 1000); } @Override public void onDestroy() { super.onDestroy(); HuobiSocketApi.subKLine(mForex.base_currency + mForex.quote_currency, mForexTab.getTypeLength() * 1000, false); } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/btc/ui/HuobiListActivity.java ================================================ package com.tophold.example.demo.kview.btc.ui; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.widget.Toast; import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import com.tophold.example.base.BaseActivity; import com.tophold.example.R; import com.tophold.example.demo.kview.btc.api.HuobiService; import com.tophold.example.demo.kview.btc.api.RetrofitManager; import com.tophold.example.demo.kview.btc.model.HuobiData; import com.tophold.example.demo.kview.btc.model.HuobiSymbol; import com.tophold.trade.utils.StringUtils; public class HuobiListActivity extends BaseActivity { RecyclerView mAflRlListview; BaseQuickAdapter mQuickAdapter; List mForexList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_huobi_list); initView(); initData(); initAdapter(); loadData(); initListener(); } private void initView() { mAflRlListview = (RecyclerView) findViewById(R.id.afl_rl_listview); Toast.makeText(mContext, "请稍后,在拉取列表...", Toast.LENGTH_SHORT).show(); } private void initData() { mForexList = new ArrayList<>(); } private void initAdapter() { mQuickAdapter = new BaseQuickAdapter(R.layout.item_activity_huobi_list, mForexList) { @Override protected void convert(BaseViewHolder helper, HuobiSymbol item) { helper.setText(R.id.iafl_tv_znName, item.base_currency + "/" + item.quote_currency); helper.setText(R.id.iafl_tv_enName, item.quote_currency); helper.setText(R.id.iafl_tv_part, item.symbol_partition); } }; mAflRlListview.setLayoutManager(new LinearLayoutManager(mContext)); mAflRlListview.setAdapter(mQuickAdapter); } private void loadData() { Map map = new HashMap<>(); call(RetrofitManager.getInstance().create(HuobiService.class).getSymbolList(map), new Observer>>() { @Override public void onSubscribe(Disposable d) { unSubscription(d); } @Override public void onNext(HuobiData> huobiData) { String status = huobiData.status; if (!"ok".equals(status)) { Toast.makeText(mContext, "数据获取失败...", Toast.LENGTH_SHORT).show(); return; } List data = huobiData.data; if (StringUtils.isEmpty(data)) { Toast.makeText(mContext, "数据为空...", Toast.LENGTH_SHORT).show(); return; } mForexList.addAll(data); //排序操作 Collections.sort(mForexList, (o1, o2) -> { if (!o1.symbol_partition.equals(o2.symbol_partition)) return -o1.symbol_partition.compareTo(o2.symbol_partition); if (!o1.quote_currency.equals(o2.quote_currency)) return -o1.quote_currency.compareTo(o2.quote_currency); return 0; }); mQuickAdapter.notifyLoadMoreToLoading(); } @Override public void onError(Throwable e) { e.printStackTrace(); } @Override public void onComplete() { Log.d(TAG, "onComplete: "); } }); } private void initListener() { mQuickAdapter.setOnItemClickListener((adapter, v, p) -> { HuobiSymbol forex = mForexList.get(p); Bundle bundle = new Bundle(); bundle.putSerializable(HuobiActivity.KEY_FOREX, forex); go(HuobiActivity.class, bundle); }); } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/forex/ForexTab.java ================================================ package com.tophold.example.demo.kview.forex; import java.io.Serializable; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/22 14:16 * 描 述 : * ============================================================ **/ public class ForexTab implements Serializable { public ForexType mForexType; public String tabName; public ForexTab(ForexType forexType, String tabName) { this.mForexType = forexType; this.tabName = tabName; } /** * 获取对应类型的长度 * * @return sencond */ public long getTypeLength() { long len = 0; switch (mForexType) { case _timeShring: len = 60; break; case _1m: len = 60; break; case _5m: len = 5 * 60; break; case _15m: len = 15 * 60; break; case _30m: len = 30 * 60; break; case _1h: len = 60 * 60; break; case _4h: len = 4 * 60 * 60; break; case _1d: len = 24 * 60 * 60; break; case _1w: len = 7 * 24 * 60 * 60; break; case _1mon: len = 30 * 24 * 60 * 60; break; default: len = 60; break; } return len; } /** * 根据mForexType返回接口需要的类型字段 * * @return */ public String getType() { String typeMsg = "1m"; switch (mForexType) { case _timeShring: typeMsg = "1m"; break; case _1m: typeMsg = "1m"; break; case _5m: typeMsg = "5m"; break; case _15m: typeMsg = "15m"; break; case _30m: typeMsg = "30m"; break; case _1h: typeMsg = "1h"; break; case _4h: typeMsg = "4h"; break; case _1d: typeMsg = "1d"; break; case _1w: typeMsg = "1w"; break; case _1mon: typeMsg = "1mon"; break; default: typeMsg = "1m"; break; } return typeMsg; } public enum ForexType { _timeShring, _1m, _5m, _15m, _30m, _1h, _4h, _1d, _1w, _1mon } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/forex/api/ForexWebSocket.java ================================================ package com.tophold.example.demo.kview.forex.api; import android.support.annotation.Nullable; import android.util.Log; import java.util.concurrent.TimeUnit; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import okhttp3.WebSocketListener; import okhttp3.logging.HttpLoggingInterceptor; import com.tophold.example.BuildConfig; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/22 21:15 * 描 述 : * ============================================================ **/ public class ForexWebSocket { public static final String TAG = ForexWebSocket.class.getSimpleName(); private static final int DEFAULT_TIME_OUT = 5;//超时时间 5s private static final int DEFAULT_READ_TIME_OUT = 10; //temp quotes private static final String BASE_URL = "http://***:8990/websocket"; private static final String TOKEN="eyJ0eXAiOiJKV1QiLCJhbGc***Y2NvdW50SWQiOiJFVVI2MTQxLjAwMSIsImlhdCI6MTUyMjgxOTE0NiwiZXhwIjoxNTIzNDIzOTQ2fQ.je5e76RSNh07ZYtu3_yOA8BsBl_wH0_tkqxlgX5hhww"; Request mRequest; okhttp3.WebSocket mWebSocket; OkHttpClient client; boolean isConnctted = false; private ForexWebSocket() { // 创建 OKHttpClient OkHttpClient.Builder builder = new OkHttpClient().newBuilder(); builder.connectTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS);//连接超时时间 builder.writeTimeout(DEFAULT_READ_TIME_OUT, TimeUnit.SECONDS);//写操作 超时时间 builder.readTimeout(DEFAULT_READ_TIME_OUT, TimeUnit.SECONDS);//读操作超时时间 builder.retryOnConnectionFailure(true);//失败重试 //DEBUG模式下 添加日志拦截器 if (BuildConfig.DEBUG) { HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); interceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS); builder.addInterceptor(interceptor); } // 添加公共参数拦截器 HttpCommonInterceptor commonInterceptor = new HttpCommonInterceptor.Builder() .addHeaderParams("paltform", "android") .addHeaderParams("userToken", "1234343434dfdfd3434") .addHeaderParams("userId", "123445") .build(); builder.addInterceptor(commonInterceptor); //HuobiWebSocket client = builder.build(); } public void init() { mRequest = new Request.Builder().header("Sec-WebSocket-Protocol", TOKEN).url(BASE_URL).build(); mWebSocket = client.newWebSocket(mRequest, new WebSocketListener() { @Override public void onOpen(okhttp3.WebSocket webSocket, Response response) { super.onOpen(webSocket, response); isConnctted = true; Log.d(TAG, "onOpen: "); //Toast.makeText(MyApplication.mAppContext, "websocket连接成功...", Toast.LENGTH_SHORT).show(); } @Override public void onMessage(okhttp3.WebSocket webSocket, String text) { super.onMessage(webSocket, text); WebSocketParser.fix2Object(text); } @Override public void onClosed(okhttp3.WebSocket webSocket, int code, String reason) { super.onClosed(webSocket, code, reason); isConnctted = false; Log.d(TAG, "onClosed,code: " + code + ",reason:" + reason); //Toast.makeText(MyApplication.mAppContext, "websocket关闭...", Toast.LENGTH_SHORT).show(); } @Override public void onFailure(okhttp3.WebSocket webSocket, Throwable t, @Nullable Response response) { super.onFailure(webSocket, t, response); isConnctted = false; //Toast.makeText(MyApplication.mAppContext, "websocket异常:" + response.toString(), Toast.LENGTH_SHORT).show(); Log.e(TAG, "onFailure: " + (response != null ? response.toString() : "response==null")); t.printStackTrace(); } }); } private static class SingletonHolder { private static final ForexWebSocket INSTANCE = new ForexWebSocket(); } /** * 获取RetrofitServiceManager * * @return */ public static ForexWebSocket getInstance() { return ForexWebSocket.SingletonHolder.INSTANCE; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/forex/api/HttpCommonInterceptor.java ================================================ package com.tophold.example.demo.kview.forex.api; import android.util.Log; import java.io.IOException; import java.util.HashMap; import java.util.Map; import okhttp3.Interceptor; import okhttp3.Request; import okhttp3.Response; /** * 拦截器 * * 向请求头里添加公共参数 * Created by zhouwei on 16/11/10. */ public class HttpCommonInterceptor implements Interceptor { private Map mHeaderParamsMap = new HashMap<>(); public HttpCommonInterceptor() { } @Override public Response intercept(Chain chain) throws IOException { Log.d("HttpCommonInterceptor","add common params"); Request oldRequest = chain.request(); // 添加新的参数,添加到url 中 /* HttpUrl.Builder authorizedUrlBuilder = oldRequest.url() .newBuilder() .scheme(oldRequest.url().scheme()) .host(oldRequest.url().host());*/ // 新的请求 Request.Builder requestBuilder = oldRequest.newBuilder(); requestBuilder.method(oldRequest.method(), oldRequest.body()); //添加公共参数,添加到header中 if(mHeaderParamsMap.size() > 0){ for(Map.Entry params:mHeaderParamsMap.entrySet()){ requestBuilder.header(params.getKey(),params.getValue()); } } Request newRequest = requestBuilder.build(); return chain.proceed(newRequest); } public static class Builder{ HttpCommonInterceptor mHttpCommonInterceptor; public Builder(){ mHttpCommonInterceptor = new HttpCommonInterceptor(); } public Builder addHeaderParams(String key, String value){ mHttpCommonInterceptor.mHeaderParamsMap.put(key,value); return this; } public Builder addHeaderParams(String key, int value){ return addHeaderParams(key, String.valueOf(value)); } public Builder addHeaderParams(String key, float value){ return addHeaderParams(key, String.valueOf(value)); } public Builder addHeaderParams(String key, long value){ return addHeaderParams(key, String.valueOf(value)); } public Builder addHeaderParams(String key, double value){ return addHeaderParams(key, String.valueOf(value)); } public HttpCommonInterceptor build(){ return mHttpCommonInterceptor; } } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/forex/api/RetrofitManager.java ================================================ package com.tophold.example.demo.kview.forex.api; import java.util.concurrent.TimeUnit; import io.reactivex.Observable; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; import okhttp3.OkHttpClient; import okhttp3.logging.HttpLoggingInterceptor; import retrofit2.Retrofit; import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; import com.tophold.example.BuildConfig; public class RetrofitManager { private static final int DEFAULT_TIME_OUT = 5;//超时时间 5s private static final int DEFAULT_READ_TIME_OUT = 10; //temp quotes private static final String BASE_URL = "http://***:8700/"; private Retrofit mRetrofit; private RetrofitManager() { // 创建 OKHttpClient OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.connectTimeout(DEFAULT_TIME_OUT, TimeUnit.SECONDS);//连接超时时间 builder.writeTimeout(DEFAULT_READ_TIME_OUT, TimeUnit.SECONDS);//写操作 超时时间 builder.readTimeout(DEFAULT_READ_TIME_OUT, TimeUnit.SECONDS);//读操作超时时间 builder.retryOnConnectionFailure(true);//失败重试 //DEBUG模式下 添加日志拦截器 if (BuildConfig.DEBUG) { HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); interceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS); builder.addInterceptor(interceptor); } // 添加公共参数拦截器 HttpCommonInterceptor commonInterceptor = new HttpCommonInterceptor.Builder() .addHeaderParams("paltform", "android") .addHeaderParams("userToken", "1234343434dfdfd3434") .addHeaderParams("userId", "123445") .build(); builder.addInterceptor(commonInterceptor); // 创建Retrofit mRetrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .addCallAdapterFactory(RxJava2CallAdapterFactory.createWithScheduler(Schedulers.io())) .addConverterFactory(GsonConverterFactory.create()) .client(builder.build()) .build(); } private static class SingletonHolder { private static final RetrofitManager INSTANCE = new RetrofitManager(); } /** * 获取RetrofitServiceManager * * @return */ public static RetrofitManager getInstance() { return SingletonHolder.INSTANCE; } /** * 获取对应的Service * * @param service Service 的 class * @param * @return */ public T create(Class service) { return mRetrofit.create(service); } public static Observable call(Observable observable, Observer observer) { observable.subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(observer); return observable; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/forex/api/WebSocketApi.java ================================================ package com.tophold.example.demo.kview.forex.api; import android.util.Log; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/22 21:31 * 描 述 : * ============================================================ **/ public class WebSocketApi { public static final String TAG = WebSocketApi.class.getSimpleName(); /** * 订阅价格和取消订阅 * * @param isSub true:订阅,false:取消订阅 */ public static void subPrice(String symbol, boolean isSub) { String str = "35=V|55=" + symbol + "|263=" + (isSub ? 1 : 2); Log.d(TAG, "subPrice: " + str); if (ForexWebSocket.getInstance().isConnctted) { ForexWebSocket.getInstance().mWebSocket.send(str); } else { Log.e(TAG, "subPrice: websocket未连接"); } } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/forex/api/WebSocketParser.java ================================================ package com.tophold.example.demo.kview.forex.api; import android.util.Log; import org.greenrobot.eventbus.EventBus; import java.util.HashMap; import java.util.Map; import com.tophold.example.demo.kview.forex.model.WsPrice; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/22 21:26 * 描 述 : * ============================================================ **/ public class WebSocketParser { public static final String TAG = WebSocketParser.class.getSimpleName(); public static void fix2Object(String str) { try { if (str == null || str.length() == 0) return; Log.d(TAG, "fix2Object: " + str); String[] arrs = str.split("\\|"); Map map = new HashMap<>(); for (String arr : arrs) { String[] items = arr.split("="); map.put(items[0], items[1]); } //maping map2Obj(map); } catch (Exception e) { e.printStackTrace(); } } private static void map2Obj(Map map) { String type = map.get("35"); if (type == null) { Log.e(TAG, "map2Obj: type == null"); return; } if (type.equals("V")) { map2WsPrice(map); } } private static void map2WsPrice(Map map) { WsPrice wsPrice = new WsPrice(); wsPrice.productName = map.get("55"); wsPrice.lastUpdateTime = Long.parseLong(map.get("20068")); wsPrice.bidPrice = Double.parseDouble(map.get("132")); wsPrice.askPrice = Double.parseDouble(map.get("133")); EventBus.getDefault().post(wsPrice); } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/forex/api/XcfdService.java ================================================ package com.tophold.example.demo.kview.forex.api; import java.util.List; import java.util.Map; import io.reactivex.Observable; import retrofit2.http.GET; import retrofit2.http.Path; import retrofit2.http.QueryMap; import com.tophold.example.demo.kview.forex.model.XcfdQuotes; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/22 11:31 * 描 述 : * ============================================================ **/ public interface XcfdService { @GET("/kline/{productCode}/{type}") Observable> chartQuotes(@Path("productCode") String productCode, @Path("type") String type, @QueryMap Map params); } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/forex/model/Forex.java ================================================ package com.tophold.example.demo.kview.forex.model; import java.io.Serializable; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/22 13:03 * 描 述 : * ============================================================ **/ public class Forex implements Serializable{ public String id; public String enName; public String cnName; public Forex(String id, String enName, String cnName) { this.id=id; this.enName=enName; this.cnName=cnName; } @Override public String toString() { return "Forex{" + "id='" + id + '\'' + ", enName='" + enName + '\'' + ", cnName='" + cnName + '\'' + '}'; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/forex/model/WsPrice.java ================================================ package com.tophold.example.demo.kview.forex.model; import com.google.gson.annotations.SerializedName; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2017/12/26 11:38 * 描 述 : * ============================================================ **/ public class WsPrice { //TAG:55,COMMENT:产品 @SerializedName("55") public String productName; //TAG:20068,COMMENT:系统最后价格时间 @SerializedName("20068") public long lastUpdateTime; //TAG:132,COMMENT:--->对应老系统的卖价 @SerializedName("132") public double bidPrice; //TAG:133,COMMENT:--->对应老系统的买价 @SerializedName("133") public double askPrice; @Override public String toString() { return "WsPrice{" + ", productName='" + productName + '\'' + ", bidPrice='" + bidPrice + '\'' + ", askPrice='" + askPrice + '\'' + "现价:" + ((bidPrice + askPrice) / 2) + '}'; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/forex/model/XcfdQuotes.java ================================================ package com.tophold.example.demo.kview.forex.model; import java.io.Serializable; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/22 11:52 * 描 述 : * ============================================================ **/ public class XcfdQuotes implements Serializable{ public String t; //201802080610 public String o; public String h; public String l; public String c; public long s;//数据开始时间 public long e;//结束时间 @Override public String toString() { return "Quotes{" + "t=" + t + ", o='" + o + '\'' + ", h='" + h + '\'' + ", l='" + l + '\'' + ", c='" + c + '\'' + ", s=" + s + ", e=" + e + '}'; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/forex/ui/ForexActivity.java ================================================ package com.tophold.example.demo.kview.forex.ui; import android.content.pm.ActivityInfo; import android.os.Bundle; import android.support.annotation.ColorRes; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.LinearLayout; import android.widget.TextView; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import com.tophold.example.R; import com.tophold.example.demo.kview.forex.api.WebSocketApi; import com.tophold.example.demo.kview.forex.model.Forex; import com.tophold.example.base.BaseActivity; import com.tophold.example.utils.NoScrollViewPager; import com.tophold.trade.utils.FormatUtil; import com.tophold.trade.utils.TimeUtils; import com.tophold.example.demo.kview.forex.ForexTab; import com.tophold.trade.view.kview.Quotes; public class ForexActivity extends BaseActivity { public static final String KEY_FOREX = "KEY_FOREX"; public static final String KEY_HORIZONTAL = "KEY_HORIZONTAL"; private TabLayout mAfTlTablayout; private NoScrollViewPager mAfVpViewpager; private LinearLayout mAkvLlContainer; private TextView mAkvTvH; private TextView mAkvTvO; private TextView mAkvTvTime; private TextView mAkvTvL; private TextView mAkvTvC; private TextView mAkvTvP; private TextView af_tv_symbol; private TextView mAkvTvBlank; //是否是横屏 boolean mIsHorizontal = false; private List mForexTabList; private List mKViewFragmentList; Forex mForex; @Override protected void getBundleExtras(Bundle extras) { super.getBundleExtras(extras); mForex = (Forex) extras.getSerializable(KEY_FOREX); mIsHorizontal = extras.getBoolean(KEY_HORIZONTAL); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (mIsHorizontal) { requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);// 设置全屏 } setContentView(R.layout.activity_forex); initView(); initData(); initAdapter(); loadData(); initListener(); } @Override protected void onResume() { if (mIsHorizontal) { if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } } super.onResume(); } private void initView() { mAfTlTablayout = (TabLayout) findViewById(R.id.af_tl_tablayout); mAfVpViewpager = (NoScrollViewPager) findViewById(R.id.af_vp_viewpager); mAkvLlContainer = (LinearLayout) findViewById(R.id.akv_ll_container); mAkvTvH = (TextView) findViewById(R.id.akv_tv_h); mAkvTvO = (TextView) findViewById(R.id.akv_tv_o); mAkvTvTime = (TextView) findViewById(R.id.akv_tv_time); mAkvTvL = (TextView) findViewById(R.id.akv_tv_l); mAkvTvC = (TextView) findViewById(R.id.akv_tv_c); mAkvTvP = (TextView) findViewById(R.id.akv_tv_p); mAkvTvBlank = (TextView) findViewById(R.id.af_tv_blank); af_tv_symbol = (TextView) findViewById(R.id.af_tv_symbol); if (mIsHorizontal) { af_tv_symbol.setVisibility(View.GONE); mAkvTvBlank.setVisibility(View.GONE); } else { af_tv_symbol.setVisibility(View.VISIBLE); mAkvTvBlank.setVisibility(View.VISIBLE); af_tv_symbol.setText(mForex.cnName + "(" + mForex.enName + ")"); } } private void initData() { mForexTabList = new ArrayList<>(); mForexTabList.add(new ForexTab(ForexTab.ForexType._timeShring, "分时")); mForexTabList.add(new ForexTab(ForexTab.ForexType._1m, "1分")); mForexTabList.add(new ForexTab(ForexTab.ForexType._5m, "5分")); mForexTabList.add(new ForexTab(ForexTab.ForexType._15m, "15分")); mForexTabList.add(new ForexTab(ForexTab.ForexType._30m, "30分")); mForexTabList.add(new ForexTab(ForexTab.ForexType._1h, "1时")); mForexTabList.add(new ForexTab(ForexTab.ForexType._4h, "4时")); mForexTabList.add(new ForexTab(ForexTab.ForexType._1d, "日K")); mForexTabList.add(new ForexTab(ForexTab.ForexType._1w, "周K")); mForexTabList.add(new ForexTab(ForexTab.ForexType._1mon, "月")); mAfTlTablayout.setTabMode(TabLayout.MODE_SCROLLABLE); mKViewFragmentList = new ArrayList<>(); for (ForexTab forexTab : mForexTabList) { mKViewFragmentList.add(KViewFragment.newInstance(forexTab, mForex)); } //加载实时价格数据 WebSocketApi.subPrice(mForex.enName, true); } private void initAdapter() { mAfVpViewpager.setAdapter(new KViewAdapter(getSupportFragmentManager(), mKViewFragmentList, mForexTabList)); mAfTlTablayout.setupWithViewPager(mAfVpViewpager); } private void loadData() { } private void initListener() { } public void hidenContainer() { mAfTlTablayout.setVisibility(View.VISIBLE); mAkvLlContainer.setVisibility(View.GONE); } public void showContanier(Quotes preQuotes, Quotes currentQuotes) { mAfTlTablayout.setVisibility(View.GONE); mAkvLlContainer.setVisibility(View.VISIBLE); int digits = 5; boolean isPositive; String precent; double dis = (currentQuotes.c - preQuotes.c) / currentQuotes.c * 100; isPositive = dis >= 0; precent = FormatUtil.formatBySubString(dis, 2); precent += "%"; // mAkvTvH.setText(FormatUtil.numFormat(currentQuotes.h, digits)); mAkvTvO.setText(FormatUtil.numFormat(currentQuotes.o, digits)); mAkvTvL.setText(FormatUtil.numFormat(currentQuotes.l, digits)); mAkvTvC.setText(FormatUtil.numFormat(currentQuotes.c, digits)); mAkvTvP.setText(precent); mAkvTvTime.setText(TimeUtils.millis2String(currentQuotes.t, new SimpleDateFormat("MM-dd HH:mm"))); if (isPositive) { mAkvTvH.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); mAkvTvO.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); mAkvTvL.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); mAkvTvC.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); mAkvTvP.setTextColor(getMyColor(R.color.color_timeSharing_callBackRed)); } else { mAkvTvH.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); mAkvTvO.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); mAkvTvL.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); mAkvTvC.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); mAkvTvP.setTextColor(getMyColor(R.color.color_timeSharing_callBackGreen)); } } private int getMyColor(@ColorRes int colorId) { return getResources().getColor(colorId); } public void showHorizontal(View view) { Bundle bundle = new Bundle(); bundle.putBoolean(KEY_HORIZONTAL, true); bundle.putSerializable(KEY_FOREX, mForex); go(ForexActivity.class, bundle); } public boolean isHorizontal() { return mIsHorizontal; } @Override protected void onDestroy() { super.onDestroy(); WebSocketApi.subPrice(mForex.enName, false);//取消订阅 } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/forex/ui/ForexListActivity.java ================================================ package com.tophold.example.demo.kview.forex.ui; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import java.util.ArrayList; import java.util.List; import com.tophold.example.R; import com.tophold.example.demo.kview.forex.model.Forex; import com.tophold.example.base.BaseActivity; public class ForexListActivity extends BaseActivity { RecyclerView mAflRlListview; BaseQuickAdapter mQuickAdapter; List mForexList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_forex_list); initView(); initData(); initAdapter(); loadData(); initListener(); } private void initView() { mAflRlListview = (RecyclerView) findViewById(R.id.afl_rl_listview); } private void initData() { mForexList = new ArrayList<>(); mForexList.add(new Forex("1", "EURUSD", "欧元/美元")); mForexList.add(new Forex("2", "USDJPY", "美元/日元")); mForexList.add(new Forex("3", "AUDUSD", "澳元/美元")); mForexList.add(new Forex("4", "GBPUSD", "英镑/美元")); mForexList.add(new Forex("5", "USDCHF", "美元/瑞郎")); mForexList.add(new Forex("6", "USDSGD", "美元/新加坡元")); mForexList.add(new Forex("7", "USDCAD", "美元/加元")); mForexList.add(new Forex("8", "EURJPY", "欧元/日元")); mForexList.add(new Forex("9", "EURGBP", "欧元/英镑")); mForexList.add(new Forex("10", "NZDUSD", "纽元/美元")); mForexList.add(new Forex("11", "GBPJYP", "英镑/日元")); mForexList.add(new Forex("12", "USDMXN", "美元/墨西哥比索")); mForexList.add(new Forex("13", "GOLD", "黄金")); mForexList.add(new Forex("14", "SILVER", "白银")); } private void initAdapter() { mQuickAdapter = new BaseQuickAdapter(R.layout.item_activity_forex_list, mForexList) { @Override protected void convert(BaseViewHolder helper, Forex item) { helper.setText(R.id.iafl_tv_enName, item.enName); helper.setText(R.id.iafl_tv_znName, item.cnName); } }; mAflRlListview.setLayoutManager(new LinearLayoutManager(mContext)); mAflRlListview.setAdapter(mQuickAdapter); } private void loadData() { } private void initListener() { mQuickAdapter.setOnItemClickListener((adapter, v, p) -> { Forex forex = mForexList.get(p); Bundle bundle = new Bundle(); bundle.putSerializable(ForexActivity.KEY_FOREX, forex); go(ForexActivity.class, bundle); }); } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/forex/ui/KViewAdapter.java ================================================ package com.tophold.example.demo.kview.forex.ui; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import java.util.List; import com.tophold.example.demo.kview.forex.ForexTab; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/22 14:38 * 描 述 : * ============================================================ **/ public class KViewAdapter extends FragmentPagerAdapter { private List mFragmentList; List mForexTabList; public KViewAdapter(FragmentManager fm, List fragmentList, List mForexTabList) { super(fm); this.mFragmentList = fragmentList; this.mForexTabList = mForexTabList; } @Override public Fragment getItem(int position) { return mFragmentList.get(position); } @Override public int getCount() { return mFragmentList.size(); } @Override public CharSequence getPageTitle(int position) { return mForexTabList.get(position).tabName; } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/kview/forex/ui/KViewFragment.java ================================================ package com.tophold.example.demo.kview.forex.ui; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import com.tophold.example.base.BaseFragment; import com.tophold.example.R; import com.tophold.example.demo.kview.forex.api.RetrofitManager; import com.tophold.example.demo.kview.forex.api.XcfdService; import com.tophold.example.demo.kview.forex.model.Forex; import com.tophold.example.demo.kview.forex.model.WsPrice; import com.tophold.example.demo.kview.forex.model.XcfdQuotes; import com.tophold.trade.utils.StringUtils; import com.tophold.example.demo.kview.forex.ForexTab; import com.tophold.trade.view.kview.KView; import com.tophold.trade.view.kview.KViewListener; import com.tophold.trade.view.kview.Quotes; public class KViewFragment extends BaseFragment { private static final String ARG_PARAM1 = "param1"; private static final String ARG_PARAM2 = "param2"; public static final int DEF_COUNT = 100; private View mRootView; private KView mFkKvKview; ForexTab mForexTab; Forex mForex; //net List mQuotesList; public KViewFragment() { } public static KViewFragment newInstance(ForexTab mForexTab, Forex forex) { KViewFragment fragment = new KViewFragment(); Bundle args = new Bundle(); args.putSerializable(ARG_PARAM1, mForexTab); args.putSerializable(ARG_PARAM2, forex); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { mForexTab = (ForexTab) getArguments().getSerializable(ARG_PARAM1); mForex = (Forex) getArguments().getSerializable(ARG_PARAM2); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mRootView = inflater.inflate(R.layout.fragment_kview, container, false); initView(); initData(); initAdapter(); loadData(null, false); initListener(); return mRootView; } private void initView() { mFkKvKview = (KView) mRootView.findViewById(R.id.fk_kv_kview); mFkKvKview.setDigit(5); if (mForexTab.mForexType == ForexTab.ForexType._timeShring) { mFkKvKview.setShowTimSharing(true); } else { mFkKvKview.setShowTimSharing(false); } if (((ForexActivity) getActivity()).isHorizontal()) { mFkKvKview.setShowMinor(true); } else { mFkKvKview.setShowMinor(false); } } private void initData() { mQuotesList = new ArrayList<>(); } private void initAdapter() { } private void loadData(String start_time, final boolean isLoadMore) { Map map = new HashMap<>(); map.put("count", DEF_COUNT); if (start_time != null) map.put("st", start_time); call(RetrofitManager.getInstance().create(XcfdService.class).chartQuotes(mForex.enName, mForexTab.getType(), map), new Observer>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(List xcfdQuotesList) { if (StringUtils.isEmpty(xcfdQuotesList)) { Log.d(TAG, "onNext: 数据为空"); return; } adapterData(xcfdQuotesList); drawKView(isLoadMore); } @Override public void onError(Throwable e) { e.printStackTrace(); Toast.makeText(mContext, "" + e.getMessage(), Toast.LENGTH_SHORT).show(); } @Override public void onComplete() { } }); } private void drawKView(boolean isLoadMore) { if (!isLoadMore) { mFkKvKview.setKViewData(mQuotesList, new KViewListener.MasterTouchListener() { @Override public void onLongTouch(Quotes preQuotes, Quotes currentQuotes) { ((ForexActivity) getActivity()).showContanier(preQuotes, currentQuotes); } @Override public void onUnLongTouch() { ((ForexActivity) getActivity()).hidenContainer(); } @Override public void needLoadMore() { if (StringUtils.isEmpty(mQuotesList)) { mFkKvKview.loadMoreNoData(); return; } Quotes quotes = mQuotesList.get(0); String showTime = quotes.getShowTime(); loadData(showTime, true); } }); } else { mFkKvKview.loadKViewData(mQuotesList); } } private void adapterData(List xcfdQuotesList) { List quotesList = new ArrayList<>(); for (XcfdQuotes xcfdQuotes : xcfdQuotesList) { Quotes quotes = new Quotes(xcfdQuotes.o, xcfdQuotes.h, xcfdQuotes.l, xcfdQuotes.c, xcfdQuotes.s, xcfdQuotes.e); quotesList.add(quotes); } mQuotesList.addAll(0, quotesList);//注意时序问题 } private void initListener() { } @Override public boolean isBindEventBusHere() { return true; } @Subscribe(threadMode = ThreadMode.MAIN) public void onRevicePrice(WsPrice wsPrice) { if (wsPrice == null || !wsPrice.productName.equals(mForex.enName)) return; double currPrice = (wsPrice.askPrice + wsPrice.bidPrice) / 2.0;//均价 String currPriceStr = String.valueOf(currPrice); Quotes quotes = new Quotes(currPriceStr, currPriceStr, currPriceStr, currPriceStr, wsPrice.lastUpdateTime, wsPrice.lastUpdateTime); mFkKvKview.pushKViewData(quotes, mForexTab.getTypeLength() * 1000); } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/pie/PieChartActivity.kt ================================================ package com.tophold.example.demo.pie import android.os.Bundle import android.support.annotation.ColorInt import android.support.v4.content.ContextCompat import com.tophold.example.base.BaseActivity import com.tophold.example.R import com.tophold.trade.view.pie.PieEntrys import kotlinx.android.synthetic.main.activity_pie_chart.* class PieChartActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_pie_chart) initPieChart() loadPieChart() } private fun loadPieChart() { val pieEntrysList: MutableList = ArrayList() pieEntrysList.add(PieEntrys(10f, "80%", getColorId(R.color.trade_analyze_pie_1), false, "澳元/美元")) pieEntrysList.add(PieEntrys(50f, "胜率 86.96%", getColorId(R.color.trade_analyze_pie_2), true, "英镑/美元")) pieEntrysList.add(PieEntrys(1f, "60.71%", getColorId(R.color.trade_analyze_pie_3), false, "黄金")) pieEntrysList.add(PieEntrys(1f, "76.47%", getColorId(R.color.trade_analyze_pie_4), false, "欧元/美元")) hatab_tapc_chart.pieEntryList = pieEntrysList } private fun initPieChart() { hatab_tapc_chart.basePaddingTop = 40f hatab_tapc_chart.basePaddingBottom = 40f } @ColorInt private fun getColorId(colorId: Int): Int { return ContextCompat.getColor(mContext,colorId) } } ================================================ FILE: app/src/main/java/com/tophold/example/demo/seekbar/DoubleThumbSeekBarActivity.kt ================================================ package com.tophold.example.demo.seekbar import android.os.Bundle import android.support.annotation.NonNull import com.tophold.example.base.BaseActivity import com.tophold.example.R import kotlinx.android.synthetic.main.activity_double_thumb_seek_bar.* import com.tophold.trade.utils.RenderUtils.dp2px import com.tophold.trade.view.seekbar.DoubleTumb class DoubleThumbSeekBarActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_double_thumb_seek_bar) renderView1() } private fun renderView1() { /** * def */ am_dtsv_seek0.init(loadTpSeekBar()) /** * 加载单个thumb,从左边开始且最小值从最左边开始 */ am_dtsv_seek1.init(loadTpSeekBar( false, -44.0, 66.0, true, 4, true, false, 0.2, greenA = false)) /** * 单个thumb,从右边开始且从左边开始最小值 */ am_dtsv_seek2.init(loadTpSeekBar( false, -44.0, 66.0, true, 4, false, true, 0.2, greenA = true)) /** * 双thumb同向,最小值从左边开始 */ am_dtsv_seek3.init(loadTpSeekBar( true, -44.0, 66.0, true, 4, true, true, 0.2, false, true, true, 0.33, false)) /** * 双thumb同向,最小值从右边开始 */ am_dtsv_seek4.init(loadTpSeekBar( true, -44.0, 66.0, false, 4, false, true, 0.2, true, false, true, 0.33, true)) /** * 交叉方式显示 */ am_dtsv_seek5.init(loadTpSeekBar( true, -44.0, 66.0, false, 4, true, true, 0.2, false, false, true, 0.33, true)) } /** * @param doubleThumb 是否启动双thumb * @param min 最小值 * @param max 最大值 * @param minFromLeft 最小值是否从左边开始(注意和从哪边开始滑动无关) * @param digit 格式化的小数位数 * * @param fromLeftA 是否从左边开始滑动 * @param showTipsA 是否实时展示当前值 * @param progressA 默认进度(0~1) * @param greenA thumbA的背景色 * * @param fromLeftB 是否从左边开始滑动 * @param showTipsB 是否实时展示当前值 * @param progressB 默认进度(0~1) * @param greenB thumbA的背景色 * */ @NonNull fun loadTpSeekBar(doubleThumb: Boolean = false, min: Double = 0.0, max: Double = 100.0, minFromLeft: Boolean = true, digit: Int = 2, fromLeftA: Boolean = true, showTipsA: Boolean = true, progressA: Double = 0.0, greenA: Boolean = false, fromLeftB: Boolean = true, showTipsB: Boolean = true, progressB: Double = 0.0, greenB: Boolean = false): DoubleTumb { val thumbAForeground = if (!greenA) { getCompatColor(R.color.dtsb_thumb1Color) } else { getCompatColor(R.color.dtsb_thumb2Color) } val thumbADrawable = if (!greenA) { getCompatDrawable(R.drawable.layer_seekbar_thumb_red) } else { getCompatDrawable(R.drawable.layer_seekbar_thumb_green) } val thumbA = DoubleTumb.Thumb(thumbAForeground) thumbA.progress = progressA//默认位置,百分比值(0~1) thumbA.mFromLeft = fromLeftA//是否从左边开始滑动 thumbA.mShowTips = showTipsA thumbA.setmThumb(thumbADrawable) thumbA.setmThumbWidth(dp2px(mContext, 20f)) thumbA.setmThumbHight(dp2px(mContext, 25f)) var thumbB: DoubleTumb.Thumb? = null //复杂模式显示两个thumb if (doubleThumb) { val thumbBForeground = if (!greenB) { getCompatColor(R.color.dtsb_thumb11Color) } else { getCompatColor(R.color.dtsb_thumb22Color) } val thumbBDrawable = if (!greenB) { getCompatDrawable(R.drawable.layer_seekbar_thumb_red) } else { getCompatDrawable(R.drawable.layer_seekbar_thumb_green) } thumbB = DoubleTumb.Thumb(thumbBForeground) thumbB.progress = progressB thumbB.mFromLeft = fromLeftB thumbB.mShowTips = showTipsB thumbB.setmThumb(thumbBDrawable) thumbB.setmThumbWidth(dp2px(mContext, 20f)) thumbB.setmThumbHight(dp2px(mContext, 25f)) } val doubleTumb = DoubleTumb(min, max, dp2px(mContext, 4f).toFloat(), getCompatColor(R.color.dtsb_bgColor), thumbA, thumbB) //注意这里!!! doubleTumb.mMinLeft = minFromLeft doubleTumb.mDigit = digit //根据总高度取设置 doubleTumb.mLineTop = dp2px(mContext, 40f) doubleTumb.mLineBottom = dp2px(mContext, 10f) doubleTumb.mLineLeft = dp2px(mContext, 8f) doubleTumb.mLineRight = dp2px(mContext, 8f) return doubleTumb } } ================================================ FILE: app/src/main/java/com/tophold/example/utils/GsonUtil.java ================================================ package com.tophold.example.utils; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; import java.util.Map; /** *

GSON工具类

* * @author * @version $Id: GsonUtil.java */ public class GsonUtil { private static Gson gson = null; private static Gson prettyGson = null; static { gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd HH:mm:ss").create(); prettyGson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss") .setPrettyPrinting() .create(); } /** * 小写下划线的格式解析JSON字符串到对象 *

例如 is_success->isSuccess

* * @param json * @param classOfT * @return */ public static T fromJsonUnderScoreStyle(String json, Class classOfT) { return gson.fromJson(json, classOfT); } /** * JSON字符串转为Map * * @param json * @return */ @SuppressWarnings("all") public static T fronJson2Map(String json) { return gson.fromJson(json, new TypeToken>() { }.getType()); } /** * 小写下划线的格式将对象转换成JSON字符串 * * @param src * @return */ public static String toJson(Object src) { return gson.toJson(src); } public static String toPrettyString(Object src) { return prettyGson.toJson(src); } public static T fromJson2Object(String src, Class t) { return gson.fromJson(src, t); } public static T fromJson2Object(String src, Type typeOfT) { return gson.fromJson(src, typeOfT); } } ================================================ FILE: app/src/main/java/com/tophold/example/utils/NoScrollViewPager.java ================================================ package com.tophold.example.utils; import android.content.Context; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; /** * ============================================================ * 作 者 : wgyscsf@163.com * 创建日期 :2018/03/22 14:55 * 描 述 : * ============================================================ **/ public class NoScrollViewPager extends ViewPager { public NoScrollViewPager(Context context) { super(context); } public NoScrollViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onTouchEvent(MotionEvent arg0) { return false; } @Override public boolean onInterceptTouchEvent(MotionEvent arg0) { return false; } } ================================================ FILE: app/src/main/java/com/tophold/example/utils/RxUtils.java ================================================ package com.tophold.example.utils; import io.reactivex.FlowableTransformer; import io.reactivex.Observable; import io.reactivex.ObservableTransformer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers; /** * Created by chao.qu at 2017/10/20 * * @author quchao */ public class RxUtils { /** * 统一线程处理 * * @param 指定的泛型类型 * @return FlowableTransformer */ public static FlowableTransformer rxFlSchedulerHelper() { return flowable -> flowable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } /** * 统一线程处理 * * @param 指定的泛型类型 * @return ObservableTransformer */ public static ObservableTransformer rxSchedulerHelper() { return observable -> observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } /** * 统一线程处理 * * @param 指定的泛型类型 * @return ObservableTransformer */ public static ObservableTransformer rxApiSchedulerHelper() { return observable -> observable.subscribeOn(Schedulers.io()) .unsubscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } /** * 得到 Observable * * @param 指定的泛型类型 * @return Observable */ private static Observable createData(final T t) { return Observable.create(emitter -> { try { emitter.onNext(t); emitter.onComplete(); } catch (Exception e) { emitter.onError(e); } }); } } ================================================ FILE: app/src/main/res/drawable/layer_seekbar_thumb_green.xml ================================================ ================================================ FILE: app/src/main/res/drawable/layer_seekbar_thumb_red.xml ================================================ ================================================ FILE: app/src/main/res/layout/activity_double_thumb_seek_bar.xml ================================================ ================================================ FILE: app/src/main/res/layout/activity_forex.xml ================================================ ================================================ FILE: app/src/main/res/layout/activity_forex_list.xml ================================================ ================================================ FILE: app/src/main/res/layout/activity_fund.xml ================================================ ================================================ FILE: app/src/main/res/layout/activity_huobi.xml ================================================ ================================================ FILE: app/src/main/res/layout/activity_huobi_list.xml ================================================ ================================================ FILE: app/src/main/res/layout/activity_kview.xml ================================================