Packages
tai
0.0.39
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/events/order_updated.ex
defmodule Tai.Events.OrderUpdated do
@type client_id :: Tai.Trading.Order.client_id()
@type side :: Tai.Trading.Order.side()
@type type :: Tai.Trading.Order.type()
@type time_in_force :: Tai.Trading.Order.time_in_force()
@type status :: Tai.Trading.Order.status()
@type product_type :: Tai.Venues.Product.type()
@type t :: %Tai.Events.OrderUpdated{
client_id: client_id,
venue_id: atom,
account_id: atom,
venue_order_id: String.t() | nil,
product_symbol: atom,
product_type: product_type,
side: side,
type: type,
time_in_force: time_in_force,
status: status,
price: Decimal.t(),
qty: Decimal.t(),
leaves_qty: Decimal.t(),
cumulative_qty: Decimal.t(),
enqueued_at: DateTime.t(),
last_received_at: DateTime.t() | nil,
last_venue_timestamp: DateTime.t() | nil,
updated_at: DateTime.t() | nil,
close: boolean | nil
}
@enforce_keys ~w(
client_id
venue_id
account_id
product_symbol
product_type
side
type
time_in_force
status
price
qty
leaves_qty
cumulative_qty
enqueued_at
)a
defstruct ~w(
client_id
venue_id
account_id
product_symbol
product_type
venue_order_id
side
type
time_in_force
status
error_reason
price
qty
leaves_qty
cumulative_qty
enqueued_at
last_received_at
last_venue_timestamp
updated_at
close
)a
end
defimpl Tai.LogEvent, for: Tai.Events.OrderUpdated do
def to_data(event) do
keys =
event
|> Map.keys()
|> Enum.filter(&(&1 != :__struct__))
event
|> Map.take(keys)
|> Map.put(:error_reason, event.error_reason |> inspect)
|> Map.put(:price, event.price |> Decimal.to_string(:normal))
|> Map.put(:qty, event.qty |> Decimal.to_string(:normal))
|> Map.put(:leaves_qty, event.leaves_qty |> Decimal.to_string(:normal))
|> Map.put(:cumulative_qty, event.cumulative_qty |> Decimal.to_string(:normal))
|> Map.put(
:enqueued_at,
event.enqueued_at && event.enqueued_at |> DateTime.to_iso8601()
)
|> Map.put(
:last_received_at,
event.last_received_at && event.last_received_at |> DateTime.to_iso8601()
)
|> Map.put(
:last_venue_timestamp,
event.last_venue_timestamp && event.last_venue_timestamp |> DateTime.to_iso8601()
)
|> Map.put(
:updated_at,
event.updated_at && event.updated_at |> DateTime.to_iso8601()
)
end
end