Packages
tai
0.0.75
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/orders/order.ex
defmodule Tai.Orders.Order do
use Ecto.Schema
import Ecto.Changeset
@type client_id :: Ecto.UUID.t()
@type venue_order_id :: String.t()
@type status :: atom
@type side :: atom
@type type :: atom
@type time_in_force :: atom
@type t :: %__MODULE__{}
@product_type ~w[spot future swap option]a
@status ~w[
enqueued
create_accepted
create_error
open
filled
pending_cancel
cancel_accepted
canceled
pending_amend
amend_accepted
expired
rejected
skipped
]a
@time_in_force ~w[gtc fok ioc]a
@side ~w[buy sell]a
@order_type ~w[limit]a
@primary_key {:client_id, Ecto.UUID, autogenerate: true}
@timestamps_opts [autogenerate: {Tai.DateTime, :timestamp, []}, type: :utc_datetime_usec]
schema "orders" do
field(:close, :boolean)
field(:credential, :string)
field(:cumulative_qty, :decimal)
field(:last_received_at, :utc_datetime)
field(:last_venue_timestamp, :utc_datetime)
field(:leaves_qty, :decimal)
field(:post_only, :boolean)
field(:price, :decimal)
field(:product_symbol, :string)
field(:product_type, Ecto.Enum, values: @product_type)
field(:qty, :decimal)
field(:side, Ecto.Enum, values: @side)
field(:status, Ecto.Enum, values: @status)
field(:time_in_force, Ecto.Enum, values: @time_in_force)
field(:type, Ecto.Enum, values: @order_type)
field(:venue, :string)
field(:venue_order_id, :string)
field(:venue_product_symbol, :string)
timestamps()
end
@doc false
def changeset(order, attrs) do
order
|> cast(attrs, [
:close,
:credential,
:cumulative_qty,
:last_received_at,
:last_venue_timestamp,
:leaves_qty,
:post_only,
:price,
:product_symbol,
:product_type,
:qty,
:side,
:status,
:time_in_force,
:type,
:venue,
:venue_order_id,
:venue_product_symbol
])
|> validate_required([
:credential,
:cumulative_qty,
:leaves_qty,
:post_only,
:price,
:product_symbol,
:product_type,
:qty,
:side,
:status,
:time_in_force,
:type,
:venue,
:venue_product_symbol
])
end
end