Packages
tai
0.0.20
0.0.75
0.0.74
0.0.73
0.0.72
0.0.71
0.0.70
0.0.69
0.0.68
0.0.67
0.0.66
0.0.65
0.0.64
0.0.63
0.0.62
0.0.61
0.0.60
0.0.59
0.0.58
0.0.57
0.0.56
0.0.55
0.0.54
0.0.53
0.0.52
0.0.51
0.0.50
0.0.49
0.0.48
0.0.47
0.0.46
0.0.45
0.0.44
0.0.43
0.0.42
0.0.41
0.0.40
0.0.39
0.0.38
0.0.37
0.0.36
0.0.35
0.0.34
0.0.33
0.0.32
0.0.31
0.0.30
0.0.29
0.0.28
0.0.27
0.0.26
0.0.25
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
A composable, real time, market data and trade execution toolkit
Current section
Files
Jump to
Current section
Files
lib/tai/commands/fees.ex
defmodule Tai.Commands.Fees do
@moduledoc """
Display the list of maker/taker fees for tradable products
"""
import Tai.Commands.Table, only: [render!: 2]
@header [
"Venue",
"Account ID",
"Symbol",
"Maker",
"Taker"
]
@spec fees :: no_return
def fees do
Tai.Venues.FeeStore.all()
|> Enum.sort(&(&1.venue_id < &2.venue_id))
|> format_rows
|> render!(@header)
end
defp format_rows(fees) do
fees
|> Enum.map(fn fee_info ->
[
fee_info.venue_id,
fee_info.account_id,
fee_info.symbol,
{fee_info.maker, fee_info.maker_type},
{fee_info.taker, fee_info.taker_type}
]
|> Enum.map(&format_col/1)
end)
end
defp format_col({val, :percent}) do
percent =
val
|> Decimal.mult(Decimal.new(100))
|> Decimal.reduce()
|> Decimal.to_string(:normal)
"#{percent}%"
end
defp format_col({val, _type}) do
val
|> Decimal.reduce()
|> Decimal.to_string(:normal)
end
defp format_col(val), do: val
end