2
1

More than 3 years have passed since last update.

Djangoでbitflyerの収支管理アプリを作ってみる(設計編)

Last updated at Posted at 2019-12-28

今年はあまりbotを稼働させられず、収支は微プラスで終了となりました。
来年からは、稼働とロットを上げて収益を伸ばして行きたいと考えているのですが、勝率や取引回数あたりの期待収支、積み重なった手数料などを一目できる画面を作りたいなぁ…と思い至りました。

そこで、実務でも使ってるしDjangoで作ってみれば勉強にもなってちょうどいいんじゃね?という浅はかな考えで、年末年始を使って取り組んでみることにします。

必要な画面は6個。

1.ログイン画面。(login.html)

ID入力フィールド
メールアドレス前提だと、英数と記号は-_@ぐらいっすかね。

パスワード入力フィールド
大文字小文字、数字、記号から「3種類以上組み合わせて8文字」とかそんな感じで。

「ログイン」ボタンも必要っすね。
ログインボタンが押されたら、入力されたIDをキーにデータベースを検索。
ヒットしたら、パスワードをIDに紐づくパスワードと入力されたパスワードを比較。

フィールドが空白の場合、文字数長を満たさない場合などは
ログインボタンが押されてもデータベースを見に行かず
バリデーションチェックで弾きましょう。

入力されたIDがデータベースから見つからない場合はログイン失敗。
パスワードが相違している場合もログイン失敗。

ログイン成功時はダッシュボード画面に遷移。
ログイン失敗時は「フィールドの入力内容を保持したまま」で、「IDかパスワードが間違っています」ぐらい表示しましょう。

また、ユーザー情報新規登録画面へのリンクも貼ります。

データベースについては次の「ユーザー情報新規登録画面」で考えます。

2.ユーザー情報新規登録画面。(registration.html)
ログインユーザーの情報とAPIキーを登録する画面です。
(今回は変更、削除の画面は作りません)

登録情報を格納するデータベースが必要ですね。
ユーザーID、パスワード、APIキーとAPI Secretはすべてユーザーと紐づくので
[users]という名前のテーブルを作ってやれば良いでしょう。
id
user_name
password
api_key
api_secret

こんなもんでしょうか。

Djangoでは、データベースにテーブルを作るのではなく
プロジェクトにデータベースにかかわるコードを書いておくことで
データベースにテーブルを自動生成してくれる…という仕組み。
このあたりの操作を通して、「モデル」の概念に対する理解を深めておきたいところ。

3.ダッシュボード画面。(dashboard.html)
ログインしたら飛んでくる画面。

左上に「現在の累計収支」を表示。
左下に「現在の資産情報」を表示。
どちらもLightningと現物、日本円それぞれの情報を一目できるように。

右側は縦ぶち抜きで「取引履歴」を表示。
bitflyerは両建てできないので、在庫ゼロになったところを「決済完了」として表示しましょうか。

それぞれの表示領域をクリックすると「収支確認画面」「資産情報確認画面」「取引履歴確認画面」に遷移。
ログアウト用のボタンも付けましょう。

これらに必要な情報はbitflyerのAPIを叩けば取得できるので、さくさく実装できる予定。
bot作るときにAPIは全部叩いたし、ドキュメントもわりとまじめに読んだし。

4.収支確認画面。(balance.html)
現在の収支を数字で表示。
過去の収支変動を「グラフで」表示。
グラフに表示する期間とか選択できるとかっこいいですね。
わぁ大変そう。
5.資産情報画面。(funds.html)
現在の資産を数字で表示。
過去の資産変動を「グラフで」表示。
グラフに表示する期間とか選択できるとかっこいいですね。
わぁ大変そう。
6.取引履歴確認画面。(result.html)
過去の取引履歴を表示。
日時、注文金額、約定金額、手数料、レバレッジetc
期間指定して絞り込みする機能を付ける。
絞り込み前、絞り込み後どちらもCSV出力をできるようにする。
もちろん確定申告用。

※確定申告するほど勝ってないです。

タスクを順に並べて行くと、こんな感じでしょうか。

01.URLマッピングを作成する。
02.ログイン画面を作る。
03.ユーザー情報新規登録画面を作る。
04.ダッシュボード画面を作成する。
05.ログイン画面からユーザー情報新規登録画面に遷移できることを確認する。
06.モデルを作成する。
07.ユーザー情報新規登録画面からデータが登録できることを確認する。
08.項番07で作成した情報を用いて、ログイン画面からログインできることを確認する。
09.ログイン後にダッシュボード画面に遷移することを確認する。
10.収支確認画面を作成する。
11.ダッシュボード画面から収支確認画面に遷移できることを確認する。
12.資産情報画面を作成する。
13.ダッシュボード画面から資産情報画面に遷移できることを確認する。
14.取引履歴画面を作成する。
15.ダッシュボード画面から取引履歴画面に遷移できることを確認する。
16.取引履歴画面の期間絞り込み機能を実装する。
17.取引履歴画面のCSV出力機能を実装する。
18.動作確認を行う。

グラフは余力があったらやる。

続きは明日から!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1