🐁
(CLI)通貨取引アプリ作ってみた
概要
通貨取引のようなアプリ。
売買のオーダーができて、先入れ先出しでマッチするような機能があります。
はじめに
自分のアプリを作ってみたくなり、通貨の取引アプリを作ってみました。
まずは機能だけということでCLI(ターミナル上で動作)のアプリになります。
(branch:with_trading_functionです。)
動作環境
- windows 11
- Go 1.23.3
- CockroachDB v24.1.6
Build Time: 2024/10/14 17:21:12
使うイメージ
go run main.go
もしくは、build後、実行すると、まずはデータベースとの接続を試みます。
その後、コマンドの説明があり、実際に使っていくことができます。
使用感は以下のようになります。
$ go build -o tradeApp main.go
$ ./tradeApp
Connected to CockroachDB! # データベースへの接続確認
2024/11/27 10:30:16 Tables reset successfully # テーブルをリセット
Tables created successfully! # テーブルを作成
# ここからトレード開始
Welcome to the CLI Trading App! # コマンドヘルプ
Commands:
- create <user name> <balance>
- login <user name>
- buy <amount> <price>
- sell <amount> <price>
- orders
- trades
- logout
- help
- exit
> create gen 1000 # genというユーザーを1000通貨で登録
User created successfully!
> buy 10 100 # buyオーダーを通してみる
You must log in first. # オーダーにはログインが必要
> Invalid command.
> Invalid command. # 余分なインプットが2個入ってる。エラーハンドリングが必要。
> login gen # 作ったユーザーでログイン
> buy 10 100 # buyオーダー
Order added. No match found.
Order added to the open order book. # マッチするオーダーがないのでとりあえずオーダーブックに追記
> sell 100 100 # sell オーダー
Trade executed: gen sell 10.00 units at 100.00 with gen # マッチするオーダーがあったので、希望価格でトレード
> orders # 残っているオーダーを確認する。100通貨のsellのオーダーが数量90で残っているはず
Open Buy Orders:
Open Sell Orders:
User: gen | Amount: 90.00 | Price: 100.00 | Date: 2024-11-27T01:30:39.244091Z
> trades # 執行された取引履歴を確認する
Trades:
Trade ID: 1024329774704033793 | Buyer: gen (Order ID: 1024329765483085825) | Seller: gen (Order ID: 1024329774676869121) | Amount: 10.00 | Price: 100.00 | Date: 2024-11-27T01:30:39.246767Z
> exit # アプリ終了
Goodbye!
おわりに
今、実装できた機能としては、
- ユーザー登録
- ログイン
- オーダーを出す
- マッチングしたものがあれば取引を実行する
です。
取引の金額をユーザーに反映させたり、ユーザーの取引量を制限したり、新しく入金したりと、まだまだあったほうが良い機能はありそうですが、一旦、次はUIを作ってみようかなと思います。
Discussion