Alpa.Trading.Orders (AlpaEx v1.0.3)
View SourceOrder operations for the Alpaca Trading API.
Summary
Functions
Helper to place a market buy order.
Cancel an order by ID.
Cancel all open orders.
Get an order by ID.
Get an order by client order ID.
Get all orders.
Place a new order.
Replace (modify) an existing order.
Helper to place a market sell order.
Functions
@spec buy(String.t(), pos_integer() | String.t(), keyword()) :: {:ok, Alpa.Models.Order.t()} | {:error, Alpa.Error.t()}
Helper to place a market buy order.
@spec cancel( String.t(), keyword() ) :: {:ok, :deleted} | {:error, Alpa.Error.t()}
Cancel an order by ID.
Examples
iex> Alpa.Trading.Orders.cancel("order-id")
{:ok, :deleted}
@spec cancel_all(keyword()) :: {:ok, [map()]} | {:error, Alpa.Error.t()}
Cancel all open orders.
Examples
iex> Alpa.Trading.Orders.cancel_all()
{:ok, [%{"id" => "...", "status" => 200}, ...]}
@spec get( String.t(), keyword() ) :: {:ok, Alpa.Models.Order.t()} | {:error, Alpa.Error.t()}
Get an order by ID.
Examples
iex> Alpa.Trading.Orders.get("order-id-here")
{:ok, %Alpa.Models.Order{...}}
@spec get_by_client_id( String.t(), keyword() ) :: {:ok, Alpa.Models.Order.t()} | {:error, Alpa.Error.t()}
Get an order by client order ID.
Examples
iex> Alpa.Trading.Orders.get_by_client_id("my-custom-id")
{:ok, %Alpa.Models.Order{...}}
@spec list(keyword()) :: {:ok, [Alpa.Models.Order.t()]} | {:error, Alpa.Error.t()}
Get all orders.
Options
:status- Order status ("open", "closed", "all"):limit- Max number of orders (default 50, max 500):after- Filter orders after this timestamp:until- Filter orders until this timestamp:direction- Sort direction ("asc", "desc"):nested- Include nested orders (boolean):symbols- List of symbols to filter
Examples
iex> Alpa.Trading.Orders.list(status: "open")
{:ok, [%Alpa.Models.Order{...}]}
@spec place(keyword()) :: {:ok, Alpa.Models.Order.t()} | {:error, Alpa.Error.t()}
Place a new order.
Required Parameters
:symbol- Symbol or asset ID to trade:side- "buy" or "sell":type- "market", "limit", "stop", "stop_limit", "trailing_stop":time_in_force- "day", "gtc", "opg", "cls", "ioc", "fok"
Quantity (one required)
:qty- Number of shares (integer or decimal string):notional- Dollar amount to trade (for fractional trading)
Optional Parameters
:limit_price- Limit price (required for limit/stop_limit):stop_price- Stop price (required for stop/stop_limit):trail_price- Trail price in dollars (for trailing_stop):trail_percent- Trail percent (for trailing_stop):extended_hours- Allow trading in extended hours (boolean):client_order_id- Custom order ID (max 48 chars):order_class- "simple", "bracket", "oco", "oto":take_profit- Take profit config for bracket orders:stop_loss- Stop loss config for bracket orders
Examples
# Market order
iex> Alpa.Trading.Orders.place(symbol: "AAPL", qty: 10, side: "buy", type: "market", time_in_force: "day")
{:ok, %Alpa.Models.Order{...}}
# Limit order
iex> Alpa.Trading.Orders.place(symbol: "AAPL", qty: 10, side: "buy", type: "limit", limit_price: "150.00", time_in_force: "gtc")
{:ok, %Alpa.Models.Order{...}}
# Bracket order
iex> Alpa.Trading.Orders.place(
...> symbol: "AAPL",
...> qty: 10,
...> side: "buy",
...> type: "market",
...> time_in_force: "day",
...> order_class: "bracket",
...> take_profit: %{limit_price: "160.00"},
...> stop_loss: %{stop_price: "140.00", limit_price: "139.00"}
...> )
{:ok, %Alpa.Models.Order{...}}
@spec replace( String.t(), keyword() ) :: {:ok, Alpa.Models.Order.t()} | {:error, Alpa.Error.t()}
Replace (modify) an existing order.
Parameters
:qty- New quantity:time_in_force- New time in force:limit_price- New limit price:stop_price- New stop price:trail- New trail amount:client_order_id- New client order ID
Examples
iex> Alpa.Trading.Orders.replace("order-id", qty: 20, limit_price: "155.00")
{:ok, %Alpa.Models.Order{...}}
@spec sell(String.t(), pos_integer() | String.t(), keyword()) :: {:ok, Alpa.Models.Order.t()} | {:error, Alpa.Error.t()}
Helper to place a market sell order.