Android

Kotlin MPAndroidChartライブラリを使いボリンジャーバンドを描画してみる。

投稿日:2019年4月8日 更新日:

はじめに

こんにちはsuzukiです。今回はMPAndroidChartを使いボリンジャーバンドの描画に挑戦します。
前回記事で移動平均線を描画する際に少し詳しくMPAndroidChartライブラリの説明をしています。よければご覧ください。

ボリンジャーバンドとは

ボリンジャーバンドはローソク足を分析する際の手法です。詳しい内容自体はリンクを参照ください。
今回プログラムでは下記の三点と一部のデータだけ画面に表示するということを行っていきたいと思います。

  • 標準偏差σを求める
  • 移動平均線に±σを行いグラフのデータを作成する
  • CombineChartで描画を行う

ライブラリの導入

build.gradle(Project)

build.gradle(Module)

上記を追加してgradleのSyncを行いましょう。

描画の準備

次にLayoutFileでチャートの描画範囲を決めましょう。

  • CombinedChartを追加
  • 上下左右に制約を追加

ボリンジャーバンドを描画する

それでは実際にボリンジャーバンドを描画しましょう。
完成予定

CombinedChartの設定

combineChartの設定は、新たにデータ数を増やす影響もありX軸の表示数に制限を行います。
combinedChart.setVisibleXRangeMinimum(5.0f)
combinedChart.setVisibleXRangeMaximum(30.0f)
またスワイプの動作を行うためdragEnabledをtrueに変更します
isDragEnabled = true

CombinedChart用のデータ作成

ボリンジャーバンドを作成するためのデータを作成します。
ローソク足用のデータは移動平均線と同様の作成方法を行い
下記のendPointsに終値のデータを保持します。
private var endPoints = mutableListOf()
移動平均線は5日としてデータ作成したのですが、ボリンジャーバンドは期間が20or25と書いてあったため下記を宣言します。
private val periodCount = 20

続いてボリンジャーバンド用のデータです。
移動平均線は一つの折れ線でしたがボリンジャーバンドは下記の5つの折れ線です。

  • アッパーバンド2:単純移動平均線+2標準偏差(σ)
  • アッパーバンド1:単純移動平均線+1標準偏差(σ)
  • ミッドバンド:単純移動平均線
  • ロワーバンド1:単純移動平均線-1標準偏差(σ)
  • ロワーバンド2:単純移動平均線-2標準偏差(σ)

前回と同じようなコードだととても縦長になってしまうため。下記の関数を作成します。

続いてendPointからボリンジャーバンド用にデータを作成します。
引数でendPointsを明示的に渡すようにしました。
sliceでarrayを作ったのでそのまま書いていますが、標準偏差sigmaを求める関数作った方がシンプルに見えるかもしれません。

CombinedChartに描画

ローソク足の個数はとりあえず200で描画しています。

さいごに

AndroidStudioのcommand + option + l がとても便利ですね。ブログではコード量少ないため気にならないですが、参照されていない変数がわかるのも気に入っております。XCodeが一番使っているIDEなので使い慣れていますが、AndroidStudioも使いこなして生産性あげて行きたいです。

おすすめ書籍

Kotlinスタートブック -新しいAndroidプログラミング Kotlinイン・アクション 速習 Kotlin: Javaより簡単!新Android開発言語を今すぐマスター 速習シリーズ

blog-page_footer_336




blog-page_footer_336




-Android
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

Android CameraXプレビューを実装してみた

1 はじめに2 CameraXとは3 Android Jetpackについて4 Cameraパーミッションの追加5 ソースコード全容6 プレビューの実装7 さいごに8 おすすめ書籍 はじめに こんにち ...

【Kotlin】FirebaseAuthenticationでメールアドレスで認証機能を実装

1 はじめに2 レイアウト3 新規登録4 ログイン5 さいごに6 参考7 おすすめ書籍 はじめに こんにちは。miyagawaです。 前回は「FirebaseAuthenticationでGoogle ...

Android JavaでS3への画像アップロード

1 はじめに2 AWS上での事前準備3 Android StudioのGradleでAWS SDKをインストール4 ManifestにPermissionの追加5 カメラで写真を撮影し、保存先のPat ...

[Android] KotlinでTextToSpeech

1 はじめに2 環境3 MainActivity.kt4 SpeechListener.kt5 activity_main.xml6 さいごに はじめに こんにちは。最近ようやくKotlinに手を付け ...

SafetyNet Attestation APIでRoot化チェック【基本的な検証編】

1 はじめに2 SafetyNet Attestation APIとは2.1 注意点2.1.1 レスポンス結果はアプリ内で判定しない2.1.2 JWSのキーチェーンをチェックする2.1.3 レスポンス ...

フォロー

blog-page_side_responsive

2019年4月
 123456
78910111213
14151617181920
21222324252627
282930  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。