/ Exchanges / src / trades.jl
trades.jl
 1  @doc "Buy or Sell"
 2  @enum TradeSide buy sell
 3  @doc "Taker Or Maker"
 4  @enum TradeRole taker maker
 5  
 6  const FeesType = Union{Nothing,DFT,<:NamedTuple{(:cost, :currency), <:Tuple{<:Option{DFT},<:Option{DFT}}}}
 7  @doc """A named tuple representing a trade in the CCXT (CryptoCurrency eXchange Trading) library.
 8  
 9  $(FIELDS)
10  
11  """
12  const CcxtTrade = @NamedTuple begin
13      timestamp::DateTime
14      symbol::String
15      order::Option{String}
16      type::Option{String}
17      side::TradeSide
18      takerOrMaker::Option{TradeRole}
19      price::DFT
20      amount::DFT
21      cost::DFT
22      fee::FeesType
23      fees::Vector{FeesType}
24  end
25  
26  TradeSide(v) = getproperty(@__MODULE__, Symbol(v))
27  TradeRole(v) = getproperty(@__MODULE__, Symbol(v))
28  Base.convert(::Type{TradeSide}, v) = TradeSide(v)
29  Base.convert(::Type{TradeRole}, v) = TradeRole(v)
30  
31  export CcxtTrade, TradeSide, TradeRole, FeesType