Class: SnapTrade::TradingApi

Inherits:
Object
  • Object
show all
Defined in:
lib/snaptrade/api/trading_api.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_client = ApiClient.default) ⇒ TradingApi

Returns a new instance of TradingApi.



16
17
18
# File 'lib/snaptrade/api/trading_api.rb', line 16

def initialize(api_client = ApiClient.default)
  @api_client = api_client
end

Instance Attribute Details

#api_clientObject

Returns the value of attribute api_client.



14
15
16
# File 'lib/snaptrade/api/trading_api.rb', line 14

def api_client
  @api_client
end

Instance Method Details

#cancel_order(brokerage_order_id:, user_id:, user_secret:, account_id:, extra: {}) ⇒ Object

Cancel order

Cancels an order in the specified account. Accepts order IDs for all asset types.

Parameters:

  • brokerage_order_id (String)

    Order ID returned by brokerage. This is the unique identifier for the order in the brokerage system.

  • user_id (String)
  • user_secret (String)
  • account_id (String)
  • body (AccountInformationGetUserAccountOrderDetailRequest)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



30
31
32
33
34
35
36
# File 'lib/snaptrade/api/trading_api.rb', line 30

def cancel_order(brokerage_order_id:, user_id:, user_secret:, account_id:, extra: {})
  _body = {}
  _body[:brokerage_order_id] = brokerage_order_id if brokerage_order_id != SENTINEL
   = _body
  data, _status_code, _headers = cancel_order_with_http_info_impl(user_id, user_secret, , , extra)
  data
end

#cancel_order_with_http_info(brokerage_order_id:, user_id:, user_secret:, account_id:, extra: {}) ⇒ Object

Cancel order

Cancels an order in the specified account. Accepts order IDs for all asset types.

Parameters:

  • brokerage_order_id (String)

    Order ID returned by brokerage. This is the unique identifier for the order in the brokerage system.

  • user_id (String)
  • user_secret (String)
  • account_id (String)
  • body (AccountInformationGetUserAccountOrderDetailRequest)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



48
49
50
51
52
53
# File 'lib/snaptrade/api/trading_api.rb', line 48

def cancel_order_with_http_info(brokerage_order_id:, user_id:, user_secret:, account_id:, extra: {})
  _body = {}
  _body[:brokerage_order_id] = brokerage_order_id if brokerage_order_id != SENTINEL
   = _body
  cancel_order_with_http_info_impl(user_id, user_secret, , , extra)
end

#cancel_user_account_order(brokerage_order_id:, user_id:, user_secret:, account_id:, extra: {}) ⇒ Object

Cancel equity order

**This endpoint is deprecated. Please switch to [the new cancel order endpoint](/reference/Trading/Trading_cancelOrder) ** Attempts to cancel an open order with the brokerage. If the order is no longer cancellable, the request will be rejected.

Parameters:

  • brokerage_order_id (String)

    Order ID returned by brokerage. This is the unique identifier for the order in the brokerage system.

  • user_id (String)
  • user_secret (String)
  • account_id (String)
  • body (AccountInformationGetUserAccountOrderDetailRequest)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



155
156
157
158
159
160
161
# File 'lib/snaptrade/api/trading_api.rb', line 155

def (brokerage_order_id:, user_id:, user_secret:, account_id:, extra: {})
  _body = {}
  _body[:brokerage_order_id] = brokerage_order_id if brokerage_order_id != SENTINEL
   = _body
  data, _status_code, _headers = (user_id, user_secret, , , extra)
  data
end

#cancel_user_account_order_with_http_info(brokerage_order_id:, user_id:, user_secret:, account_id:, extra: {}) ⇒ Object

Cancel equity order

**This endpoint is deprecated. Please switch to [the new cancel order endpoint](/reference/Trading/Trading_cancelOrder) ** Attempts to cancel an open order with the brokerage. If the order is no longer cancellable, the request will be rejected.

Parameters:

  • brokerage_order_id (String)

    Order ID returned by brokerage. This is the unique identifier for the order in the brokerage system.

  • user_id (String)
  • user_secret (String)
  • account_id (String)
  • body (AccountInformationGetUserAccountOrderDetailRequest)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



174
175
176
177
178
179
# File 'lib/snaptrade/api/trading_api.rb', line 174

def (brokerage_order_id:, user_id:, user_secret:, account_id:, extra: {})
  _body = {}
  _body[:brokerage_order_id] = brokerage_order_id if brokerage_order_id != SENTINEL
   = _body
  (user_id, user_secret, , , extra)
end

#get_cryptocurrency_pair_quote(user_id:, user_secret:, account_id:, instrument_symbol:, extra: {}) ⇒ Object

Get crypto pair quote

Gets a quote for the specified account.

Parameters:

  • user_id (String)
  • user_secret (String)
  • account_id (String)
  • instrument_symbol (String)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



279
280
281
282
# File 'lib/snaptrade/api/trading_api.rb', line 279

def get_cryptocurrency_pair_quote(user_id:, user_secret:, account_id:, instrument_symbol:, extra: {})
  data, _status_code, _headers = get_cryptocurrency_pair_quote_with_http_info_impl(user_id, user_secret, , instrument_symbol, extra)
  data
end

#get_cryptocurrency_pair_quote_with_http_info(user_id:, user_secret:, account_id:, instrument_symbol:, extra: {}) ⇒ Object

Get crypto pair quote

Gets a quote for the specified account.

Parameters:

  • user_id (String)
  • user_secret (String)
  • account_id (String)
  • instrument_symbol (String)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



293
294
295
# File 'lib/snaptrade/api/trading_api.rb', line 293

def get_cryptocurrency_pair_quote_with_http_info(user_id:, user_secret:, account_id:, instrument_symbol:, extra: {})
  get_cryptocurrency_pair_quote_with_http_info_impl(user_id, user_secret, , instrument_symbol, extra)
end

#get_option_impact(order_type:, time_in_force:, legs:, user_id:, user_secret:, account_id:, limit_price: SENTINEL, stop_price: SENTINEL, price_effect: SENTINEL, extra: {}) ⇒ Object

Get option order impact

Simulates an option order with up to 4 legs and returns the estimated cost and transaction fees without placing it. Only supported for certain enabled brokerages. Please refer to the [brokerage trading support page](support.snaptrade.com/brokerages) for more information on which brokerages support this endpoint.

Parameters:

  • order_type (MlegOrderTypeStrict)

    The type of order to place.

  • time_in_force (TimeInForceStrict)

    The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. Here are the supported values: - ‘Day` - Day. The order is valid only for the trading day on which it is placed. - `GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled.

  • legs (Array<MlegLeg>)
  • user_id (String)
  • user_secret (String)
  • account_id (String)
  • limit_price (Float) (defaults to: SENTINEL)

    The limit price. Required if the order type is ‘LIMIT`, `STOP_LOSS_LIMIT`.

  • stop_price (Float) (defaults to: SENTINEL)

    The stop price. Required if the order type is ‘STOP_LOSS_MARKET`, `STOP_LOSS_LIMIT`.

  • price_effect (MlegPriceEffectStrict) (defaults to: SENTINEL)
  • body (MlegTradeForm)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



397
398
399
400
401
402
403
404
405
406
407
408
# File 'lib/snaptrade/api/trading_api.rb', line 397

def get_option_impact(order_type:, time_in_force:, legs:, user_id:, user_secret:, account_id:, limit_price: SENTINEL, stop_price: SENTINEL, price_effect: SENTINEL, extra: {})
  _body = {}
  _body[:order_type] = order_type if order_type != SENTINEL
  _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
  _body[:limit_price] = limit_price if limit_price != SENTINEL
  _body[:stop_price] = stop_price if stop_price != SENTINEL
  _body[:price_effect] = price_effect if price_effect != SENTINEL
  _body[:legs] = legs if legs != SENTINEL
  mleg_trade_form = _body
  data, _status_code, _headers = get_option_impact_with_http_info_impl(user_id, user_secret, , mleg_trade_form, extra)
  data
end

#get_option_impact_with_http_info(order_type:, time_in_force:, legs:, user_id:, user_secret:, account_id:, limit_price: SENTINEL, stop_price: SENTINEL, price_effect: SENTINEL, extra: {}) ⇒ Object

Get option order impact

Simulates an option order with up to 4 legs and returns the estimated cost and transaction fees without placing it. Only supported for certain enabled brokerages. Please refer to the [brokerage trading support page](support.snaptrade.com/brokerages) for more information on which brokerages support this endpoint.

Parameters:

  • order_type (MlegOrderTypeStrict)

    The type of order to place.

  • time_in_force (TimeInForceStrict)

    The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. Here are the supported values: - ‘Day` - Day. The order is valid only for the trading day on which it is placed. - `GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled.

  • legs (Array<MlegLeg>)
  • user_id (String)
  • user_secret (String)
  • account_id (String)
  • limit_price (Float) (defaults to: SENTINEL)

    The limit price. Required if the order type is ‘LIMIT`, `STOP_LOSS_LIMIT`.

  • stop_price (Float) (defaults to: SENTINEL)

    The stop price. Required if the order type is ‘STOP_LOSS_MARKET`, `STOP_LOSS_LIMIT`.

  • price_effect (MlegPriceEffectStrict) (defaults to: SENTINEL)
  • body (MlegTradeForm)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



426
427
428
429
430
431
432
433
434
435
436
# File 'lib/snaptrade/api/trading_api.rb', line 426

def get_option_impact_with_http_info(order_type:, time_in_force:, legs:, user_id:, user_secret:, account_id:, limit_price: SENTINEL, stop_price: SENTINEL, price_effect: SENTINEL, extra: {})
  _body = {}
  _body[:order_type] = order_type if order_type != SENTINEL
  _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
  _body[:limit_price] = limit_price if limit_price != SENTINEL
  _body[:stop_price] = stop_price if stop_price != SENTINEL
  _body[:price_effect] = price_effect if price_effect != SENTINEL
  _body[:legs] = legs if legs != SENTINEL
  mleg_trade_form = _body
  get_option_impact_with_http_info_impl(user_id, user_secret, , mleg_trade_form, extra)
end

#get_order_impact(account_id:, action:, universal_symbol_id:, order_type:, time_in_force:, user_id:, user_secret:, price: SENTINEL, stop: SENTINEL, units: SENTINEL, notional_value: SENTINEL, extra: {}) ⇒ Object

Check equity order impact

Simulates an order and its impact on the account. This endpoint does not place the order with the brokerage. If successful, it returns a ‘Trade` object and the ID of the object can be used to place the order with the brokerage using the [place checked order endpoint](/reference/Trading/Trading_placeOrder). Please note that the `Trade` object returned expires after 5 minutes. Any order placed using an expired `Trade` will be rejected.

Parameters:

  • account_id (String)

    Unique identifier for the connected brokerage account. This is the UUID used to reference the account in SnapTrade.

  • action (ActionStrict)

    The action describes the intent or side of a trade. This is either ‘BUY` or `SELL`.

  • universal_symbol_id (String)

    Unique identifier for the symbol within SnapTrade. This is the ID used to reference the symbol in SnapTrade API calls.

  • order_type (OrderTypeStrict)

    The type of order to place. - For ‘Limit` and `StopLimit` orders, the `price` field is required. - For `Stop` and `StopLimit` orders, the `stop` field is required.

  • time_in_force (TimeInForceStrict)

    The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. Here are the supported values: - ‘Day` - Day. The order is valid only for the trading day on which it is placed. - `GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled.

  • user_id (String)
  • user_secret (String)
  • price (Float) (defaults to: SENTINEL)

    The limit price for ‘Limit` and `StopLimit` orders.

  • stop (Float) (defaults to: SENTINEL)

    The price at which a stop order is triggered for ‘Stop` and `StopLimit` orders.

  • units (Float) (defaults to: SENTINEL)
  • notional_value (ManualTradeFormNotionalValue) (defaults to: SENTINEL)
  • body (ManualTradeForm)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
# File 'lib/snaptrade/api/trading_api.rb', line 544

def get_order_impact(account_id:, action:, universal_symbol_id:, order_type:, time_in_force:, user_id:, user_secret:, price: SENTINEL, stop: SENTINEL, units: SENTINEL, notional_value: SENTINEL, extra: {})
  _body = {}
  _body[:account_id] =  if  != SENTINEL
  _body[:action] = action if action != SENTINEL
  _body[:universal_symbol_id] = universal_symbol_id if universal_symbol_id != SENTINEL
  _body[:order_type] = order_type if order_type != SENTINEL
  _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
  _body[:price] = price if price != SENTINEL
  _body[:stop] = stop if stop != SENTINEL
  _body[:units] = units if units != SENTINEL
  _body[:notional_value] = notional_value if notional_value != SENTINEL
  manual_trade_form = _body
  data, _status_code, _headers = get_order_impact_with_http_info_impl(user_id, user_secret, manual_trade_form, extra)
  data
end

#get_order_impact_with_http_info(account_id:, action:, universal_symbol_id:, order_type:, time_in_force:, user_id:, user_secret:, price: SENTINEL, stop: SENTINEL, units: SENTINEL, notional_value: SENTINEL, extra: {}) ⇒ Object

Check equity order impact

Simulates an order and its impact on the account. This endpoint does not place the order with the brokerage. If successful, it returns a ‘Trade` object and the ID of the object can be used to place the order with the brokerage using the [place checked order endpoint](/reference/Trading/Trading_placeOrder). Please note that the `Trade` object returned expires after 5 minutes. Any order placed using an expired `Trade` will be rejected.

Parameters:

  • account_id (String)

    Unique identifier for the connected brokerage account. This is the UUID used to reference the account in SnapTrade.

  • action (ActionStrict)

    The action describes the intent or side of a trade. This is either ‘BUY` or `SELL`.

  • universal_symbol_id (String)

    Unique identifier for the symbol within SnapTrade. This is the ID used to reference the symbol in SnapTrade API calls.

  • order_type (OrderTypeStrict)

    The type of order to place. - For ‘Limit` and `StopLimit` orders, the `price` field is required. - For `Stop` and `StopLimit` orders, the `stop` field is required.

  • time_in_force (TimeInForceStrict)

    The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. Here are the supported values: - ‘Day` - Day. The order is valid only for the trading day on which it is placed. - `GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled.

  • user_id (String)
  • user_secret (String)
  • price (Float) (defaults to: SENTINEL)

    The limit price for ‘Limit` and `StopLimit` orders.

  • stop (Float) (defaults to: SENTINEL)

    The price at which a stop order is triggered for ‘Stop` and `StopLimit` orders.

  • units (Float) (defaults to: SENTINEL)
  • notional_value (ManualTradeFormNotionalValue) (defaults to: SENTINEL)
  • body (ManualTradeForm)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



577
578
579
580
581
582
583
584
585
586
587
588
589
590
# File 'lib/snaptrade/api/trading_api.rb', line 577

def get_order_impact_with_http_info(account_id:, action:, universal_symbol_id:, order_type:, time_in_force:, user_id:, user_secret:, price: SENTINEL, stop: SENTINEL, units: SENTINEL, notional_value: SENTINEL, extra: {})
  _body = {}
  _body[:account_id] =  if  != SENTINEL
  _body[:action] = action if action != SENTINEL
  _body[:universal_symbol_id] = universal_symbol_id if universal_symbol_id != SENTINEL
  _body[:order_type] = order_type if order_type != SENTINEL
  _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
  _body[:price] = price if price != SENTINEL
  _body[:stop] = stop if stop != SENTINEL
  _body[:units] = units if units != SENTINEL
  _body[:notional_value] = notional_value if notional_value != SENTINEL
  manual_trade_form = _body
  get_order_impact_with_http_info_impl(user_id, user_secret, manual_trade_form, extra)
end

#get_user_account_option_quotes(user_id:, user_secret:, account_id:, symbol:, extra: {}) ⇒ Object

Get option quote

Returns a quote for a single option contract. The option contract is specified using in the 21 character OCC format. For example ‘AAPL 251114C00240000` represents a call option on AAPL expiring on 2025-11-14 with a strike price of $240. For more information on the OCC format, see [here](en.wikipedia.org/wiki/Option_symbol#OCC_format) Note: These are derived values and are not suitable for trading purposes.

Parameters:

  • user_id (String)
  • user_secret (String)
  • account_id (String)
  • symbol (String)

    The OCC-formatted option symbol.

  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



685
686
687
688
# File 'lib/snaptrade/api/trading_api.rb', line 685

def (user_id:, user_secret:, account_id:, symbol:, extra: {})
  data, _status_code, _headers = (user_id, user_secret, , symbol, extra)
  data
end

#get_user_account_option_quotes_with_http_info(user_id:, user_secret:, account_id:, symbol:, extra: {}) ⇒ Object

Get option quote

Returns a quote for a single option contract. The option contract is specified using in the 21 character OCC format. For example ‘AAPL 251114C00240000` represents a call option on AAPL expiring on 2025-11-14 with a strike price of $240. For more information on the OCC format, see [here](en.wikipedia.org/wiki/Option_symbol#OCC_format) Note: These are derived values and are not suitable for trading purposes.

Parameters:

  • user_id (String)
  • user_secret (String)
  • account_id (String)
  • symbol (String)

    The OCC-formatted option symbol.

  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



700
701
702
# File 'lib/snaptrade/api/trading_api.rb', line 700

def (user_id:, user_secret:, account_id:, symbol:, extra: {})
  (user_id, user_secret, , symbol, extra)
end

#get_user_account_quotes(user_id:, user_secret:, symbols:, account_id:, use_ticker: SENTINEL, extra: {}) ⇒ Object

Get equity symbol quotes

Returns quotes from the brokerage for the specified symbols and account.

The quotes returned can be delayed depending on the brokerage the account belongs to. It is highly recommended that you use your own market data provider for real-time quotes instead of relying on this endpoint.

**This endpoint is not a substitute for a market data provider. Frequent polling of this endpoint may result in the disabling of your keys**

This endpoint does not work for options quotes.

This endpoint is disabled for free plans by default. Please contact support to enable this endpoint if needed.

Parameters:

  • user_id (String)
  • user_secret (String)
  • symbols (String)

    List of Universal Symbol IDs or tickers to get quotes for. When providing multiple values, use a comma as separator

  • account_id (String)
  • use_ticker (Boolean) (defaults to: SENTINEL)

    Should be set to ‘True` if `symbols` are comprised of tickers. Defaults to `False` if not provided.

  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



807
808
809
810
811
# File 'lib/snaptrade/api/trading_api.rb', line 807

def (user_id:, user_secret:, symbols:, account_id:, use_ticker: SENTINEL, extra: {})
  extra[:use_ticker] = use_ticker if use_ticker != SENTINEL
  data, _status_code, _headers = (user_id, user_secret, symbols, , extra)
  data
end

#get_user_account_quotes_with_http_info(user_id:, user_secret:, symbols:, account_id:, use_ticker: SENTINEL, extra: {}) ⇒ Object

Get equity symbol quotes

Returns quotes from the brokerage for the specified symbols and account.

The quotes returned can be delayed depending on the brokerage the account belongs to. It is highly recommended that you use your own market data provider for real-time quotes instead of relying on this endpoint.

**This endpoint is not a substitute for a market data provider. Frequent polling of this endpoint may result in the disabling of your keys**

This endpoint does not work for options quotes.

This endpoint is disabled for free plans by default. Please contact support to enable this endpoint if needed.

Parameters:

  • user_id (String)
  • user_secret (String)
  • symbols (String)

    List of Universal Symbol IDs or tickers to get quotes for. When providing multiple values, use a comma as separator

  • account_id (String)
  • use_ticker (Boolean) (defaults to: SENTINEL)

    Should be set to ‘True` if `symbols` are comprised of tickers. Defaults to `False` if not provided.

  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



831
832
833
834
# File 'lib/snaptrade/api/trading_api.rb', line 831

def (user_id:, user_secret:, symbols:, account_id:, use_ticker: SENTINEL, extra: {})
  extra[:use_ticker] = use_ticker if use_ticker != SENTINEL
  (user_id, user_secret, symbols, , extra)
end

#place_bracket_order(action:, instrument:, order_type:, time_in_force:, stop_loss:, take_profit:, account_id:, user_id:, user_secret:, price: SENTINEL, stop: SENTINEL, units: SENTINEL, extra: {}) ⇒ Object

Place bracket order

Places a bracket order (entry order + OCO of stop loss and take profit). Disabled by default please contact support for use. Only supported on certain brokerages

Parameters:

  • action (ActionStrictWithOptions)

    The action describes the intent or side of a trade. This is either ‘BUY` or `SELL` for Equity symbols or `BUY_TO_OPEN`, `BUY_TO_CLOSE`, `SELL_TO_OPEN` or `SELL_TO_CLOSE` for Options.

  • instrument (TradingInstrument)
  • order_type (OrderTypeStrict)

    The type of order to place. - For ‘Limit` and `StopLimit` orders, the `price` field is required. - For `Stop` and `StopLimit` orders, the `stop` field is required.

  • time_in_force (TimeInForceStrict)

    The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. Here are the supported values: - ‘Day` - Day. The order is valid only for the trading day on which it is placed. - `GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled.

  • stop_loss (StopLoss)
  • take_profit (TakeProfit)
  • account_id (String)

    The ID of the account to execute the trade on.

  • user_id (String)
  • user_secret (String)
  • price (Float) (defaults to: SENTINEL)

    The limit price for ‘Limit` and `StopLimit` orders.

  • stop (Float) (defaults to: SENTINEL)

    The price at which a stop order is triggered for ‘Stop` and `StopLimit` orders.

  • units (Float) (defaults to: SENTINEL)

    Number of shares for the order. This can be a decimal for fractional orders. Must be ‘null` if `notional_value` is provided.

  • body (ManualTradeFormBracket)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
# File 'lib/snaptrade/api/trading_api.rb', line 943

def place_bracket_order(action:, instrument:, order_type:, time_in_force:, stop_loss:, take_profit:, account_id:, user_id:, user_secret:, price: SENTINEL, stop: SENTINEL, units: SENTINEL, extra: {})
  _body = {}
  _body[:action] = action if action != SENTINEL
  _body[:instrument] = instrument if instrument != SENTINEL
  _body[:order_type] = order_type if order_type != SENTINEL
  _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
  _body[:price] = price if price != SENTINEL
  _body[:stop] = stop if stop != SENTINEL
  _body[:units] = units if units != SENTINEL
  _body[:stop_loss] = stop_loss if stop_loss != SENTINEL
  _body[:take_profit] = take_profit if take_profit != SENTINEL
  manual_trade_form_bracket = _body
  data, _status_code, _headers = place_bracket_order_with_http_info_impl(, user_id, user_secret, manual_trade_form_bracket, extra)
  data
end

#place_bracket_order_with_http_info(action:, instrument:, order_type:, time_in_force:, stop_loss:, take_profit:, account_id:, user_id:, user_secret:, price: SENTINEL, stop: SENTINEL, units: SENTINEL, extra: {}) ⇒ Object

Place bracket order

Places a bracket order (entry order + OCO of stop loss and take profit). Disabled by default please contact support for use. Only supported on certain brokerages

Parameters:

  • action (ActionStrictWithOptions)

    The action describes the intent or side of a trade. This is either ‘BUY` or `SELL` for Equity symbols or `BUY_TO_OPEN`, `BUY_TO_CLOSE`, `SELL_TO_OPEN` or `SELL_TO_CLOSE` for Options.

  • instrument (TradingInstrument)
  • order_type (OrderTypeStrict)

    The type of order to place. - For ‘Limit` and `StopLimit` orders, the `price` field is required. - For `Stop` and `StopLimit` orders, the `stop` field is required.

  • time_in_force (TimeInForceStrict)

    The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. Here are the supported values: - ‘Day` - Day. The order is valid only for the trading day on which it is placed. - `GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled.

  • stop_loss (StopLoss)
  • take_profit (TakeProfit)
  • account_id (String)

    The ID of the account to execute the trade on.

  • user_id (String)
  • user_secret (String)
  • price (Float) (defaults to: SENTINEL)

    The limit price for ‘Limit` and `StopLimit` orders.

  • stop (Float) (defaults to: SENTINEL)

    The price at which a stop order is triggered for ‘Stop` and `StopLimit` orders.

  • units (Float) (defaults to: SENTINEL)

    Number of shares for the order. This can be a decimal for fractional orders. Must be ‘null` if `notional_value` is provided.

  • body (ManualTradeFormBracket)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



978
979
980
981
982
983
984
985
986
987
988
989
990
991
# File 'lib/snaptrade/api/trading_api.rb', line 978

def place_bracket_order_with_http_info(action:, instrument:, order_type:, time_in_force:, stop_loss:, take_profit:, account_id:, user_id:, user_secret:, price: SENTINEL, stop: SENTINEL, units: SENTINEL, extra: {})
  _body = {}
  _body[:action] = action if action != SENTINEL
  _body[:instrument] = instrument if instrument != SENTINEL
  _body[:order_type] = order_type if order_type != SENTINEL
  _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
  _body[:price] = price if price != SENTINEL
  _body[:stop] = stop if stop != SENTINEL
  _body[:units] = units if units != SENTINEL
  _body[:stop_loss] = stop_loss if stop_loss != SENTINEL
  _body[:take_profit] = take_profit if take_profit != SENTINEL
  manual_trade_form_bracket = _body
  place_bracket_order_with_http_info_impl(, user_id, user_secret, manual_trade_form_bracket, extra)
end

#place_complex_order(type:, orders:, account_id:, user_id:, user_secret:, client_order_id: SENTINEL, extra: {}) ⇒ Object

Place complex order

Places a complex conditional order (OCO, OTO, or OTOCO). Disabled by default — contact support to enable. Only supported on certain brokerages.

  • OCO (One Cancels the Other): Two peer orders; when one fills the other is cancelled.

  • OTO (One Triggers the Other): A trigger order that, when filled, activates a conditional order.

  • OTOCO (One Triggers a One Cancels the Other): A trigger order that, when filled, activates an OCO pair of two peer orders.

Parameters:

  • type (ManualTradeFormComplexType)

    The complex order type. - ‘OCO`: One Cancels the Other — two peer orders. - `OTO`: One Triggers the Other — a trigger order and a conditional order. - `OTOCO`: One Triggers a One Cancels the Other — a trigger order and two peer orders.

  • orders (Array<ComplexOrderLeg>)

    The orders that make up the complex order. Required counts and roles per type: - ‘OCO`: exactly 2 orders, both `PEER` - `OTO`: exactly 2 orders, one `TRIGGER` and one `CONDITIONAL` - `OTOCO`: exactly 3 orders, one `TRIGGER` and two `PEER`

  • account_id (String)

    The ID of the account to execute the trade on.

  • user_id (String)
  • user_secret (String)
  • client_order_id (String) (defaults to: SENTINEL)

    An optional client-provided identifier for this complex order. Passed through to the brokerage and returned in the response.

  • body (ManualTradeFormComplex)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



1099
1100
1101
1102
1103
1104
1105
1106
1107
# File 'lib/snaptrade/api/trading_api.rb', line 1099

def place_complex_order(type:, orders:, account_id:, user_id:, user_secret:, client_order_id: SENTINEL, extra: {})
  _body = {}
  _body[:type] = type if type != SENTINEL
  _body[:orders] = orders if orders != SENTINEL
  _body[:client_order_id] = client_order_id if client_order_id != SENTINEL
  manual_trade_form_complex = _body
  data, _status_code, _headers = place_complex_order_with_http_info_impl(, user_id, user_secret, manual_trade_form_complex, extra)
  data
end

#place_complex_order_with_http_info(type:, orders:, account_id:, user_id:, user_secret:, client_order_id: SENTINEL, extra: {}) ⇒ Object

Place complex order

Places a complex conditional order (OCO, OTO, or OTOCO). Disabled by default — contact support to enable. Only supported on certain brokerages.

  • OCO (One Cancels the Other): Two peer orders; when one fills the other is cancelled.

  • OTO (One Triggers the Other): A trigger order that, when filled, activates a conditional order.

  • OTOCO (One Triggers a One Cancels the Other): A trigger order that, when filled, activates an OCO pair of two peer orders.

Parameters:

  • type (ManualTradeFormComplexType)

    The complex order type. - ‘OCO`: One Cancels the Other — two peer orders. - `OTO`: One Triggers the Other — a trigger order and a conditional order. - `OTOCO`: One Triggers a One Cancels the Other — a trigger order and two peer orders.

  • orders (Array<ComplexOrderLeg>)

    The orders that make up the complex order. Required counts and roles per type: - ‘OCO`: exactly 2 orders, both `PEER` - `OTO`: exactly 2 orders, one `TRIGGER` and one `CONDITIONAL` - `OTOCO`: exactly 3 orders, one `TRIGGER` and two `PEER`

  • account_id (String)

    The ID of the account to execute the trade on.

  • user_id (String)
  • user_secret (String)
  • client_order_id (String) (defaults to: SENTINEL)

    An optional client-provided identifier for this complex order. Passed through to the brokerage and returned in the response.

  • body (ManualTradeFormComplex)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



1126
1127
1128
1129
1130
1131
1132
1133
# File 'lib/snaptrade/api/trading_api.rb', line 1126

def place_complex_order_with_http_info(type:, orders:, account_id:, user_id:, user_secret:, client_order_id: SENTINEL, extra: {})
  _body = {}
  _body[:type] = type if type != SENTINEL
  _body[:orders] = orders if orders != SENTINEL
  _body[:client_order_id] = client_order_id if client_order_id != SENTINEL
  manual_trade_form_complex = _body
  place_complex_order_with_http_info_impl(, user_id, user_secret, manual_trade_form_complex, extra)
end

#place_crypto_order(instrument:, side:, type:, time_in_force:, amount:, user_id:, user_secret:, account_id:, limit_price: SENTINEL, stop_price: SENTINEL, post_only: SENTINEL, expiration_date: SENTINEL, extra: {}) ⇒ Object

Place crypto order

Places an order in the specified account. This endpoint does not compute the impact to the account balance from the order before submitting the order.

Parameters:

  • instrument (CryptoTradingInstrument)
  • side (ActionStrict)

    The action describes the intent or side of a trade. This is either ‘BUY` or `SELL`.

  • type (CryptoOrderFormType)

    The type of order to place.

  • time_in_force (CryptoOrderFormTimeInForce)

    The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. - ‘GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled. - `GTD` - Good Til Date. The order is valid until the specified date.

  • amount (Float)

    The amount of the base currency to buy or sell.

  • user_id (String)
  • user_secret (String)
  • account_id (String)
  • limit_price (Float) (defaults to: SENTINEL)

    The limit price. Required if the order type is ‘LIMIT`, `STOP_LOSS_LIMIT` or `TAKE_PROFIT_LIMIT`.

  • stop_price (Float) (defaults to: SENTINEL)

    The stop price. Required if the order type is ‘STOP_LOSS_MARKET`, `STOP_LOSS_LIMIT`, `TAKE_PROFIT_MARKET` or `TAKE_PROFIT_LIMIT`.

  • post_only (Boolean) (defaults to: SENTINEL)

    Valid and required only for order type ‘LIMIT`. If true orders that would be filled immediately are rejected to avoid incurring TAKER fees.

  • expiration_date (Time) (defaults to: SENTINEL)

    The expiration date of the order. Required if the time_in_force is ‘GTD`.

  • body (CryptoOrderForm)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
# File 'lib/snaptrade/api/trading_api.rb', line 1243

def place_crypto_order(instrument:, side:, type:, time_in_force:, amount:, user_id:, user_secret:, account_id:, limit_price: SENTINEL, stop_price: SENTINEL, post_only: SENTINEL, expiration_date: SENTINEL, extra: {})
  _body = {}
  _body[:instrument] = instrument if instrument != SENTINEL
  _body[:side] = side if side != SENTINEL
  _body[:type] = type if type != SENTINEL
  _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
  _body[:amount] = amount if amount != SENTINEL
  _body[:limit_price] = limit_price if limit_price != SENTINEL
  _body[:stop_price] = stop_price if stop_price != SENTINEL
  _body[:post_only] = post_only if post_only != SENTINEL
  _body[:expiration_date] = expiration_date if expiration_date != SENTINEL
  crypto_order_form = _body
  data, _status_code, _headers = place_crypto_order_with_http_info_impl(user_id, user_secret, , crypto_order_form, extra)
  data
end

#place_crypto_order_with_http_info(instrument:, side:, type:, time_in_force:, amount:, user_id:, user_secret:, account_id:, limit_price: SENTINEL, stop_price: SENTINEL, post_only: SENTINEL, expiration_date: SENTINEL, extra: {}) ⇒ Object

Place crypto order

Places an order in the specified account. This endpoint does not compute the impact to the account balance from the order before submitting the order.

Parameters:

  • instrument (CryptoTradingInstrument)
  • side (ActionStrict)

    The action describes the intent or side of a trade. This is either ‘BUY` or `SELL`.

  • type (CryptoOrderFormType)

    The type of order to place.

  • time_in_force (CryptoOrderFormTimeInForce)

    The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. - ‘GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled. - `GTD` - Good Til Date. The order is valid until the specified date.

  • amount (Float)

    The amount of the base currency to buy or sell.

  • user_id (String)
  • user_secret (String)
  • account_id (String)
  • limit_price (Float) (defaults to: SENTINEL)

    The limit price. Required if the order type is ‘LIMIT`, `STOP_LOSS_LIMIT` or `TAKE_PROFIT_LIMIT`.

  • stop_price (Float) (defaults to: SENTINEL)

    The stop price. Required if the order type is ‘STOP_LOSS_MARKET`, `STOP_LOSS_LIMIT`, `TAKE_PROFIT_MARKET` or `TAKE_PROFIT_LIMIT`.

  • post_only (Boolean) (defaults to: SENTINEL)

    Valid and required only for order type ‘LIMIT`. If true orders that would be filled immediately are rejected to avoid incurring TAKER fees.

  • expiration_date (Time) (defaults to: SENTINEL)

    The expiration date of the order. Required if the time_in_force is ‘GTD`.

  • body (CryptoOrderForm)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
# File 'lib/snaptrade/api/trading_api.rb', line 1278

def place_crypto_order_with_http_info(instrument:, side:, type:, time_in_force:, amount:, user_id:, user_secret:, account_id:, limit_price: SENTINEL, stop_price: SENTINEL, post_only: SENTINEL, expiration_date: SENTINEL, extra: {})
  _body = {}
  _body[:instrument] = instrument if instrument != SENTINEL
  _body[:side] = side if side != SENTINEL
  _body[:type] = type if type != SENTINEL
  _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
  _body[:amount] = amount if amount != SENTINEL
  _body[:limit_price] = limit_price if limit_price != SENTINEL
  _body[:stop_price] = stop_price if stop_price != SENTINEL
  _body[:post_only] = post_only if post_only != SENTINEL
  _body[:expiration_date] = expiration_date if expiration_date != SENTINEL
  crypto_order_form = _body
  place_crypto_order_with_http_info_impl(user_id, user_secret, , crypto_order_form, extra)
end

#place_force_order(account_id:, action:, order_type:, time_in_force:, user_id:, user_secret:, universal_symbol_id: SENTINEL, symbol: SENTINEL, trading_session: 'REGULAR', price: SENTINEL, stop: SENTINEL, units: SENTINEL, notional_value: SENTINEL, extra: {}) ⇒ Object

Place equity order

Places a brokerage order in the specified account. The order could be rejected by the brokerage if it is invalid or if the account does not have sufficient funds.

This endpoint does not compute the impact to the account balance from the order and any potential commissions before submitting the order to the brokerage. If that is desired, you can use the [check order impact endpoint](/reference/Trading/Trading_getOrderImpact).

It’s recommended to trigger a manual refresh of the account after placing an order to ensure the account is up to date. You can use the [manual refresh](/reference/Connections/Connections_refreshBrokerageAuthorization) endpoint for this.

Parameters:

  • account_id (String)

    Unique identifier for the connected brokerage account. This is the UUID used to reference the account in SnapTrade.

  • action (ActionStrictWithOptions)

    The action describes the intent or side of a trade. This is either ‘BUY` or `SELL` for Equity symbols or `BUY_TO_OPEN`, `BUY_TO_CLOSE`, `SELL_TO_OPEN` or `SELL_TO_CLOSE` for Options.

  • order_type (OrderTypeStrict)

    The type of order to place. - For ‘Limit` and `StopLimit` orders, the `price` field is required. - For `Stop` and `StopLimit` orders, the `stop` field is required.

  • time_in_force (TimeInForceStrict)

    The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. Here are the supported values: - ‘Day` - Day. The order is valid only for the trading day on which it is placed. - `GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled.

  • user_id (String)
  • user_secret (String)
  • universal_symbol_id (String) (defaults to: SENTINEL)

    The universal symbol ID of the security to trade. Must be ‘null’ if ‘symbol` is provided, otherwise must be provided.

  • symbol (String) (defaults to: SENTINEL)

    The security’s trading ticker symbol. If ‘symbol’ is provided, then ‘universal_symbol_id’ must be ‘null’.

  • trading_session (TradingSession) (defaults to: 'REGULAR')

    The trading session for the order. This field indicates which market session the order will be placed in. This is only available for certain brokerages. Defaults to REGULAR. Here are the supported values: - ‘REGULAR` - Regular trading hours. - `EXTENDED` - Extended trading hours.

  • price (Float) (defaults to: SENTINEL)

    The limit price for ‘Limit` and `StopLimit` orders.

  • stop (Float) (defaults to: SENTINEL)

    The price at which a stop order is triggered for ‘Stop` and `StopLimit` orders.

  • units (Float) (defaults to: SENTINEL)

    For Equity orders, this represents the number of shares for the order. This can be a decimal for fractional orders. Must be ‘null` if `notional_value` is provided. If placing an Option order, this field represents the number of contracts to buy or sell. (e.g., 1 contract = 100 shares).

  • notional_value (ManualTradeFormNotionalValue) (defaults to: SENTINEL)
  • body (ManualTradeFormWithOptions)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
# File 'lib/snaptrade/api/trading_api.rb', line 1405

def place_force_order(account_id:, action:, order_type:, time_in_force:, user_id:, user_secret:, universal_symbol_id: SENTINEL, symbol: SENTINEL, trading_session: 'REGULAR', price: SENTINEL, stop: SENTINEL, units: SENTINEL, notional_value: SENTINEL, extra: {})
  _body = {}
  _body[:account_id] =  if  != SENTINEL
  _body[:action] = action if action != SENTINEL
  _body[:universal_symbol_id] = universal_symbol_id if universal_symbol_id != SENTINEL
  _body[:symbol] = symbol if symbol != SENTINEL
  _body[:order_type] = order_type if order_type != SENTINEL
  _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
  _body[:trading_session] = trading_session if trading_session != SENTINEL
  _body[:price] = price if price != SENTINEL
  _body[:stop] = stop if stop != SENTINEL
  _body[:units] = units if units != SENTINEL
  _body[:notional_value] = notional_value if notional_value != SENTINEL
  manual_trade_form_with_options = _body
  data, _status_code, _headers = place_force_order_with_http_info_impl(user_id, user_secret, manual_trade_form_with_options, extra)
  data
end

#place_force_order_with_http_info(account_id:, action:, order_type:, time_in_force:, user_id:, user_secret:, universal_symbol_id: SENTINEL, symbol: SENTINEL, trading_session: 'REGULAR', price: SENTINEL, stop: SENTINEL, units: SENTINEL, notional_value: SENTINEL, extra: {}) ⇒ Object

Place equity order

Places a brokerage order in the specified account. The order could be rejected by the brokerage if it is invalid or if the account does not have sufficient funds.

This endpoint does not compute the impact to the account balance from the order and any potential commissions before submitting the order to the brokerage. If that is desired, you can use the [check order impact endpoint](/reference/Trading/Trading_getOrderImpact).

It’s recommended to trigger a manual refresh of the account after placing an order to ensure the account is up to date. You can use the [manual refresh](/reference/Connections/Connections_refreshBrokerageAuthorization) endpoint for this.

Parameters:

  • account_id (String)

    Unique identifier for the connected brokerage account. This is the UUID used to reference the account in SnapTrade.

  • action (ActionStrictWithOptions)

    The action describes the intent or side of a trade. This is either ‘BUY` or `SELL` for Equity symbols or `BUY_TO_OPEN`, `BUY_TO_CLOSE`, `SELL_TO_OPEN` or `SELL_TO_CLOSE` for Options.

  • order_type (OrderTypeStrict)

    The type of order to place. - For ‘Limit` and `StopLimit` orders, the `price` field is required. - For `Stop` and `StopLimit` orders, the `stop` field is required.

  • time_in_force (TimeInForceStrict)

    The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. Here are the supported values: - ‘Day` - Day. The order is valid only for the trading day on which it is placed. - `GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled.

  • user_id (String)
  • user_secret (String)
  • universal_symbol_id (String) (defaults to: SENTINEL)

    The universal symbol ID of the security to trade. Must be ‘null’ if ‘symbol` is provided, otherwise must be provided.

  • symbol (String) (defaults to: SENTINEL)

    The security’s trading ticker symbol. If ‘symbol’ is provided, then ‘universal_symbol_id’ must be ‘null’.

  • trading_session (TradingSession) (defaults to: 'REGULAR')

    The trading session for the order. This field indicates which market session the order will be placed in. This is only available for certain brokerages. Defaults to REGULAR. Here are the supported values: - ‘REGULAR` - Regular trading hours. - `EXTENDED` - Extended trading hours.

  • price (Float) (defaults to: SENTINEL)

    The limit price for ‘Limit` and `StopLimit` orders.

  • stop (Float) (defaults to: SENTINEL)

    The price at which a stop order is triggered for ‘Stop` and `StopLimit` orders.

  • units (Float) (defaults to: SENTINEL)

    For Equity orders, this represents the number of shares for the order. This can be a decimal for fractional orders. Must be ‘null` if `notional_value` is provided. If placing an Option order, this field represents the number of contracts to buy or sell. (e.g., 1 contract = 100 shares).

  • notional_value (ManualTradeFormNotionalValue) (defaults to: SENTINEL)
  • body (ManualTradeFormWithOptions)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
# File 'lib/snaptrade/api/trading_api.rb', line 1446

def place_force_order_with_http_info(account_id:, action:, order_type:, time_in_force:, user_id:, user_secret:, universal_symbol_id: SENTINEL, symbol: SENTINEL, trading_session: 'REGULAR', price: SENTINEL, stop: SENTINEL, units: SENTINEL, notional_value: SENTINEL, extra: {})
  _body = {}
  _body[:account_id] =  if  != SENTINEL
  _body[:action] = action if action != SENTINEL
  _body[:universal_symbol_id] = universal_symbol_id if universal_symbol_id != SENTINEL
  _body[:symbol] = symbol if symbol != SENTINEL
  _body[:order_type] = order_type if order_type != SENTINEL
  _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
  _body[:trading_session] = trading_session if trading_session != SENTINEL
  _body[:price] = price if price != SENTINEL
  _body[:stop] = stop if stop != SENTINEL
  _body[:units] = units if units != SENTINEL
  _body[:notional_value] = notional_value if notional_value != SENTINEL
  manual_trade_form_with_options = _body
  place_force_order_with_http_info_impl(user_id, user_secret, manual_trade_form_with_options, extra)
end

#place_mleg_order(order_type:, time_in_force:, legs:, user_id:, user_secret:, account_id:, limit_price: SENTINEL, stop_price: SENTINEL, price_effect: SENTINEL, extra: {}) ⇒ Object

Place option order

Places a multi-leg option order. Only supported on certain option trading brokerages. support.snaptrade.com/brokerages has information on brokerage trading support

Parameters:

  • order_type (MlegOrderTypeStrict)

    The type of order to place.

  • time_in_force (TimeInForceStrict)

    The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. Here are the supported values: - ‘Day` - Day. The order is valid only for the trading day on which it is placed. - `GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled.

  • legs (Array<MlegLeg>)
  • user_id (String)
  • user_secret (String)
  • account_id (String)
  • limit_price (Float) (defaults to: SENTINEL)

    The limit price. Required if the order type is ‘LIMIT`, `STOP_LOSS_LIMIT`.

  • stop_price (Float) (defaults to: SENTINEL)

    The stop price. Required if the order type is ‘STOP_LOSS_MARKET`, `STOP_LOSS_LIMIT`.

  • price_effect (MlegPriceEffectStrict) (defaults to: SENTINEL)
  • body (MlegTradeForm)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
# File 'lib/snaptrade/api/trading_api.rb', line 1561

def place_mleg_order(order_type:, time_in_force:, legs:, user_id:, user_secret:, account_id:, limit_price: SENTINEL, stop_price: SENTINEL, price_effect: SENTINEL, extra: {})
  _body = {}
  _body[:order_type] = order_type if order_type != SENTINEL
  _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
  _body[:limit_price] = limit_price if limit_price != SENTINEL
  _body[:stop_price] = stop_price if stop_price != SENTINEL
  _body[:price_effect] = price_effect if price_effect != SENTINEL
  _body[:legs] = legs if legs != SENTINEL
  mleg_trade_form = _body
  data, _status_code, _headers = place_mleg_order_with_http_info_impl(user_id, user_secret, , mleg_trade_form, extra)
  data
end

#place_mleg_order_with_http_info(order_type:, time_in_force:, legs:, user_id:, user_secret:, account_id:, limit_price: SENTINEL, stop_price: SENTINEL, price_effect: SENTINEL, extra: {}) ⇒ Object

Place option order

Places a multi-leg option order. Only supported on certain option trading brokerages. support.snaptrade.com/brokerages has information on brokerage trading support

Parameters:

  • order_type (MlegOrderTypeStrict)

    The type of order to place.

  • time_in_force (TimeInForceStrict)

    The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. Here are the supported values: - ‘Day` - Day. The order is valid only for the trading day on which it is placed. - `GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled.

  • legs (Array<MlegLeg>)
  • user_id (String)
  • user_secret (String)
  • account_id (String)
  • limit_price (Float) (defaults to: SENTINEL)

    The limit price. Required if the order type is ‘LIMIT`, `STOP_LOSS_LIMIT`.

  • stop_price (Float) (defaults to: SENTINEL)

    The stop price. Required if the order type is ‘STOP_LOSS_MARKET`, `STOP_LOSS_LIMIT`.

  • price_effect (MlegPriceEffectStrict) (defaults to: SENTINEL)
  • body (MlegTradeForm)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
# File 'lib/snaptrade/api/trading_api.rb', line 1589

def place_mleg_order_with_http_info(order_type:, time_in_force:, legs:, user_id:, user_secret:, account_id:, limit_price: SENTINEL, stop_price: SENTINEL, price_effect: SENTINEL, extra: {})
  _body = {}
  _body[:order_type] = order_type if order_type != SENTINEL
  _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
  _body[:limit_price] = limit_price if limit_price != SENTINEL
  _body[:stop_price] = stop_price if stop_price != SENTINEL
  _body[:price_effect] = price_effect if price_effect != SENTINEL
  _body[:legs] = legs if legs != SENTINEL
  mleg_trade_form = _body
  place_mleg_order_with_http_info_impl(user_id, user_secret, , mleg_trade_form, extra)
end

#place_order(trade_id:, user_id:, user_secret:, wait_to_confirm: SENTINEL, extra: {}) ⇒ Object

Place checked equity order

Places the previously checked order with the brokerage. The ‘tradeId` is obtained from the [check order impact endpoint](/reference/Trading/Trading_getOrderImpact). If you prefer to place the order without checking for impact first, you can use the [place order endpoint](/reference/Trading/Trading_placeForceOrder).

It’s recommended to trigger a manual refresh of the account after placing an order to ensure the account is up to date. You can use the [manual refresh](/reference/Connections/Connections_refreshBrokerageAuthorization) endpoint for this.

Parameters:

  • trade_id (String)

    Obtained from calling the [check order impact endpoint](/reference/Trading/Trading_getOrderImpact)

  • user_id (String)
  • user_secret (String)
  • wait_to_confirm (Boolean) (defaults to: SENTINEL)

    Optional, defaults to true. Determines if a wait is performed to check on order status. If false, latency will be reduced but orders returned will be more likely to be of status ‘PENDING` as we will not wait to check on the status before responding to the request.

  • body (ValidatedTradeBody)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



1702
1703
1704
1705
1706
1707
1708
# File 'lib/snaptrade/api/trading_api.rb', line 1702

def place_order(trade_id:, user_id:, user_secret:, wait_to_confirm: SENTINEL, extra: {})
  _body = {}
  _body[:wait_to_confirm] = wait_to_confirm if wait_to_confirm != SENTINEL
  extra[:validated_trade_body] = _body if !_body.empty?
  data, _status_code, _headers = place_order_with_http_info_impl(trade_id, user_id, user_secret, extra)
  data
end

#place_order_with_http_info(trade_id:, user_id:, user_secret:, wait_to_confirm: SENTINEL, extra: {}) ⇒ Object

Place checked equity order

Places the previously checked order with the brokerage. The ‘tradeId` is obtained from the [check order impact endpoint](/reference/Trading/Trading_getOrderImpact). If you prefer to place the order without checking for impact first, you can use the [place order endpoint](/reference/Trading/Trading_placeForceOrder).

It’s recommended to trigger a manual refresh of the account after placing an order to ensure the account is up to date. You can use the [manual refresh](/reference/Connections/Connections_refreshBrokerageAuthorization) endpoint for this.

Parameters:

  • trade_id (String)

    Obtained from calling the [check order impact endpoint](/reference/Trading/Trading_getOrderImpact)

  • user_id (String)
  • user_secret (String)
  • wait_to_confirm (Boolean) (defaults to: SENTINEL)

    Optional, defaults to true. Determines if a wait is performed to check on order status. If false, latency will be reduced but orders returned will be more likely to be of status ‘PENDING` as we will not wait to check on the status before responding to the request.

  • body (ValidatedTradeBody)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



1722
1723
1724
1725
1726
1727
# File 'lib/snaptrade/api/trading_api.rb', line 1722

def place_order_with_http_info(trade_id:, user_id:, user_secret:, wait_to_confirm: SENTINEL, extra: {})
  _body = {}
  _body[:wait_to_confirm] = wait_to_confirm if wait_to_confirm != SENTINEL
  extra[:validated_trade_body] = _body if !_body.empty?
  place_order_with_http_info_impl(trade_id, user_id, user_secret, extra)
end

#preview_crypto_order(instrument:, side:, type:, time_in_force:, amount:, user_id:, user_secret:, account_id:, limit_price: SENTINEL, stop_price: SENTINEL, post_only: SENTINEL, expiration_date: SENTINEL, extra: {}) ⇒ Object

Preview crypto order

Previews an order using the specified account.

Parameters:

  • instrument (CryptoTradingInstrument)
  • side (ActionStrict)

    The action describes the intent or side of a trade. This is either ‘BUY` or `SELL`.

  • type (CryptoOrderFormType)

    The type of order to place.

  • time_in_force (CryptoOrderFormTimeInForce)

    The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. - ‘GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled. - `GTD` - Good Til Date. The order is valid until the specified date.

  • amount (Float)

    The amount of the base currency to buy or sell.

  • user_id (String)
  • user_secret (String)
  • account_id (String)
  • limit_price (Float) (defaults to: SENTINEL)

    The limit price. Required if the order type is ‘LIMIT`, `STOP_LOSS_LIMIT` or `TAKE_PROFIT_LIMIT`.

  • stop_price (Float) (defaults to: SENTINEL)

    The stop price. Required if the order type is ‘STOP_LOSS_MARKET`, `STOP_LOSS_LIMIT`, `TAKE_PROFIT_MARKET` or `TAKE_PROFIT_LIMIT`.

  • post_only (Boolean) (defaults to: SENTINEL)

    Valid and required only for order type ‘LIMIT`. If true orders that would be filled immediately are rejected to avoid incurring TAKER fees.

  • expiration_date (Time) (defaults to: SENTINEL)

    The expiration date of the order. Required if the time_in_force is ‘GTD`.

  • body (CryptoOrderForm)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
# File 'lib/snaptrade/api/trading_api.rb', line 1832

def preview_crypto_order(instrument:, side:, type:, time_in_force:, amount:, user_id:, user_secret:, account_id:, limit_price: SENTINEL, stop_price: SENTINEL, post_only: SENTINEL, expiration_date: SENTINEL, extra: {})
  _body = {}
  _body[:instrument] = instrument if instrument != SENTINEL
  _body[:side] = side if side != SENTINEL
  _body[:type] = type if type != SENTINEL
  _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
  _body[:amount] = amount if amount != SENTINEL
  _body[:limit_price] = limit_price if limit_price != SENTINEL
  _body[:stop_price] = stop_price if stop_price != SENTINEL
  _body[:post_only] = post_only if post_only != SENTINEL
  _body[:expiration_date] = expiration_date if expiration_date != SENTINEL
  crypto_order_form = _body
  data, _status_code, _headers = preview_crypto_order_with_http_info_impl(user_id, user_secret, , crypto_order_form, extra)
  data
end

#preview_crypto_order_with_http_info(instrument:, side:, type:, time_in_force:, amount:, user_id:, user_secret:, account_id:, limit_price: SENTINEL, stop_price: SENTINEL, post_only: SENTINEL, expiration_date: SENTINEL, extra: {}) ⇒ Object

Preview crypto order

Previews an order using the specified account.

Parameters:

  • instrument (CryptoTradingInstrument)
  • side (ActionStrict)

    The action describes the intent or side of a trade. This is either ‘BUY` or `SELL`.

  • type (CryptoOrderFormType)

    The type of order to place.

  • time_in_force (CryptoOrderFormTimeInForce)

    The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. - ‘GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled. - `GTD` - Good Til Date. The order is valid until the specified date.

  • amount (Float)

    The amount of the base currency to buy or sell.

  • user_id (String)
  • user_secret (String)
  • account_id (String)
  • limit_price (Float) (defaults to: SENTINEL)

    The limit price. Required if the order type is ‘LIMIT`, `STOP_LOSS_LIMIT` or `TAKE_PROFIT_LIMIT`.

  • stop_price (Float) (defaults to: SENTINEL)

    The stop price. Required if the order type is ‘STOP_LOSS_MARKET`, `STOP_LOSS_LIMIT`, `TAKE_PROFIT_MARKET` or `TAKE_PROFIT_LIMIT`.

  • post_only (Boolean) (defaults to: SENTINEL)

    Valid and required only for order type ‘LIMIT`. If true orders that would be filled immediately are rejected to avoid incurring TAKER fees.

  • expiration_date (Time) (defaults to: SENTINEL)

    The expiration date of the order. Required if the time_in_force is ‘GTD`.

  • body (CryptoOrderForm)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
# File 'lib/snaptrade/api/trading_api.rb', line 1866

def preview_crypto_order_with_http_info(instrument:, side:, type:, time_in_force:, amount:, user_id:, user_secret:, account_id:, limit_price: SENTINEL, stop_price: SENTINEL, post_only: SENTINEL, expiration_date: SENTINEL, extra: {})
  _body = {}
  _body[:instrument] = instrument if instrument != SENTINEL
  _body[:side] = side if side != SENTINEL
  _body[:type] = type if type != SENTINEL
  _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
  _body[:amount] = amount if amount != SENTINEL
  _body[:limit_price] = limit_price if limit_price != SENTINEL
  _body[:stop_price] = stop_price if stop_price != SENTINEL
  _body[:post_only] = post_only if post_only != SENTINEL
  _body[:expiration_date] = expiration_date if expiration_date != SENTINEL
  crypto_order_form = _body
  preview_crypto_order_with_http_info_impl(user_id, user_secret, , crypto_order_form, extra)
end

#replace_order(brokerage_order_id:, action:, order_type:, time_in_force:, account_id:, user_id:, user_secret:, price: SENTINEL, symbol: SENTINEL, stop: SENTINEL, units: SENTINEL, extra: {}) ⇒ Object

Replace order

Replaces an existing pending order with a new one. The way this works is brokerage dependent, but usually involves cancelling the existing order and placing a new one. The order’s brokerage_order_id may or may not change, be sure to use the one returned in the response going forward. Only supported on some brokerages

Parameters:

  • brokerage_order_id (String)

    Order ID returned by brokerage. This is the unique identifier for the order in the brokerage system.

  • action (ActionStrict)

    The action describes the intent or side of a trade. This is either ‘BUY` or `SELL`.

  • order_type (OrderTypeStrict)

    The type of order to place. - For ‘Limit` and `StopLimit` orders, the `price` field is required. - For `Stop` and `StopLimit` orders, the `stop` field is required.

  • time_in_force (TimeInForceStrict)

    The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. Here are the supported values: - ‘Day` - Day. The order is valid only for the trading day on which it is placed. - `GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled.

  • account_id (String)

    The ID of the account to execute the trade on.

  • user_id (String)
  • user_secret (String)
  • price (Float) (defaults to: SENTINEL)

    The limit price for ‘Limit` and `StopLimit` orders.

  • symbol (String) (defaults to: SENTINEL)

    The security’s trading ticker symbol

  • stop (Float) (defaults to: SENTINEL)

    The price at which a stop order is triggered for ‘Stop` and `StopLimit` orders.

  • units (Float) (defaults to: SENTINEL)
  • body (ManualTradeReplaceForm)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
# File 'lib/snaptrade/api/trading_api.rb', line 1989

def replace_order(brokerage_order_id:, action:, order_type:, time_in_force:, account_id:, user_id:, user_secret:, price: SENTINEL, symbol: SENTINEL, stop: SENTINEL, units: SENTINEL, extra: {})
  _body = {}
  _body[:brokerage_order_id] = brokerage_order_id if brokerage_order_id != SENTINEL
  _body[:action] = action if action != SENTINEL
  _body[:order_type] = order_type if order_type != SENTINEL
  _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
  _body[:price] = price if price != SENTINEL
  _body[:symbol] = symbol if symbol != SENTINEL
  _body[:stop] = stop if stop != SENTINEL
  _body[:units] = units if units != SENTINEL
  manual_trade_replace_form = _body
  data, _status_code, _headers = replace_order_with_http_info_impl(, user_id, user_secret, manual_trade_replace_form, extra)
  data
end

#replace_order_with_http_info(brokerage_order_id:, action:, order_type:, time_in_force:, account_id:, user_id:, user_secret:, price: SENTINEL, symbol: SENTINEL, stop: SENTINEL, units: SENTINEL, extra: {}) ⇒ Object

Replace order

Replaces an existing pending order with a new one. The way this works is brokerage dependent, but usually involves cancelling the existing order and placing a new one. The order’s brokerage_order_id may or may not change, be sure to use the one returned in the response going forward. Only supported on some brokerages

Parameters:

  • brokerage_order_id (String)

    Order ID returned by brokerage. This is the unique identifier for the order in the brokerage system.

  • action (ActionStrict)

    The action describes the intent or side of a trade. This is either ‘BUY` or `SELL`.

  • order_type (OrderTypeStrict)

    The type of order to place. - For ‘Limit` and `StopLimit` orders, the `price` field is required. - For `Stop` and `StopLimit` orders, the `stop` field is required.

  • time_in_force (TimeInForceStrict)

    The Time in Force type for the order. This field indicates how long the order will remain active before it is executed or expires. Here are the supported values: - ‘Day` - Day. The order is valid only for the trading day on which it is placed. - `GTC` - Good Til Canceled. The order is valid until it is executed or canceled. - `FOK` - Fill Or Kill. The order must be executed in its entirety immediately or be canceled completely. - `IOC` - Immediate Or Cancel. The order must be executed immediately. Any portion of the order that cannot be filled immediately will be canceled.

  • account_id (String)

    The ID of the account to execute the trade on.

  • user_id (String)
  • user_secret (String)
  • price (Float) (defaults to: SENTINEL)

    The limit price for ‘Limit` and `StopLimit` orders.

  • symbol (String) (defaults to: SENTINEL)

    The security’s trading ticker symbol

  • stop (Float) (defaults to: SENTINEL)

    The price at which a stop order is triggered for ‘Stop` and `StopLimit` orders.

  • units (Float) (defaults to: SENTINEL)
  • body (ManualTradeReplaceForm)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
# File 'lib/snaptrade/api/trading_api.rb', line 2023

def replace_order_with_http_info(brokerage_order_id:, action:, order_type:, time_in_force:, account_id:, user_id:, user_secret:, price: SENTINEL, symbol: SENTINEL, stop: SENTINEL, units: SENTINEL, extra: {})
  _body = {}
  _body[:brokerage_order_id] = brokerage_order_id if brokerage_order_id != SENTINEL
  _body[:action] = action if action != SENTINEL
  _body[:order_type] = order_type if order_type != SENTINEL
  _body[:time_in_force] = time_in_force if time_in_force != SENTINEL
  _body[:price] = price if price != SENTINEL
  _body[:symbol] = symbol if symbol != SENTINEL
  _body[:stop] = stop if stop != SENTINEL
  _body[:units] = units if units != SENTINEL
  manual_trade_replace_form = _body
  replace_order_with_http_info_impl(, user_id, user_secret, manual_trade_replace_form, extra)
end

#search_cryptocurrency_pair_instruments(user_id:, user_secret:, account_id:, base: SENTINEL, quote: SENTINEL, extra: {}) ⇒ Object

Get crypto pairs

Searches cryptocurrency pairs instruments accessible to the specified account. Both ‘base` and `quote` are optional. Omit both for a full list of cryptocurrency pairs.

Parameters:

  • user_id (String)
  • user_secret (String)
  • account_id (String)
  • base (String) (defaults to: SENTINEL)
  • quote (String) (defaults to: SENTINEL)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



2136
2137
2138
2139
2140
2141
# File 'lib/snaptrade/api/trading_api.rb', line 2136

def search_cryptocurrency_pair_instruments(user_id:, user_secret:, account_id:, base: SENTINEL, quote: SENTINEL, extra: {})
  extra[:base] = base if base != SENTINEL
  extra[:quote] = quote if quote != SENTINEL
  data, _status_code, _headers = search_cryptocurrency_pair_instruments_with_http_info_impl(user_id, user_secret, , extra)
  data
end

#search_cryptocurrency_pair_instruments_with_http_info(user_id:, user_secret:, account_id:, base: SENTINEL, quote: SENTINEL, extra: {}) ⇒ Object

Get crypto pairs

Searches cryptocurrency pairs instruments accessible to the specified account. Both ‘base` and `quote` are optional. Omit both for a full list of cryptocurrency pairs.

Parameters:

  • user_id (String)
  • user_secret (String)
  • account_id (String)
  • base (String) (defaults to: SENTINEL)
  • quote (String) (defaults to: SENTINEL)
  • extra (Hash) (defaults to: {})

    additional parameters to pass along through :header_params, :query_params, or parameter name



2153
2154
2155
2156
2157
# File 'lib/snaptrade/api/trading_api.rb', line 2153

def search_cryptocurrency_pair_instruments_with_http_info(user_id:, user_secret:, account_id:, base: SENTINEL, quote: SENTINEL, extra: {})
  extra[:base] = base if base != SENTINEL
  extra[:quote] = quote if quote != SENTINEL
  search_cryptocurrency_pair_instruments_with_http_info_impl(user_id, user_secret, , extra)
end