Packages
tai
0.0.72
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/trading/position.ex
defmodule Tai.Trading.Position do
alias __MODULE__
@type venue_id :: Tai.Venue.id()
@type credential_id :: Tai.Venue.credential_id()
@type product_symbol :: Tai.Venues.Product.symbol()
@type margin_mode :: :portfolio | :crossed | :fixed
@type t :: %Position{
venue_id: venue_id,
credential_id: credential_id,
product_symbol: product_symbol,
side: :long | :short,
qty: Decimal.t(),
entry_price: Decimal.t(),
leverage: Decimal.t() | nil,
margin_mode: margin_mode
}
@enforce_keys ~w(
venue_id
credential_id
product_symbol
side
qty
entry_price
margin_mode
)a
defstruct ~w(
venue_id
credential_id
product_symbol
side
qty
entry_price
leverage
margin_mode
)a
end
defimpl Stored.Item, for: Tai.Trading.Position do
@type position :: Tai.Trading.Position.t()
@type venue_id :: Tai.Venue.id()
@type credential_id :: Tai.Venue.credential_id()
@type product_symbol :: Tai.Venues.Product.symbol()
@spec key(position) :: {venue_id, credential_id, product_symbol}
def key(p), do: {p.venue_id, p.credential_id, p.product_symbol}
end