self.submit_order¶
- lumibot.strategies.strategy.Strategy.submit_order(self, order: Order, **kwargs)¶
Submit an order or a list of orders for assets
Submits an order or a list of orders for processing by the active broker.
- Parameters:
order (Order object or list of Order objects) – Order object or a list of order objects containing the asset and instructions for executing the order.
is_multileg (bool) – Tradier only. A boolean value to indicate if the orders are part of one multileg order. Currently, this is only available for Tradier.
order_type (str) – Tradier only. The order type for the multileg order. Possible values are: (‘market’, ‘debit’, ‘credit’, ‘even’). Default is ‘market’.
duration (str) – Tradier only. The duration for the multileg order. Possible values are: (‘day’, ‘gtc’, ‘pre’, ‘post’). Default is ‘day’.
price (float) – Tradier only. The limit price for the multileg order. Required for ‘debit’ and ‘credit’ order types.
tag (str) – Tradier only. A tag for the multileg order.
- Returns:
Processed order object(s).
- Return type:
Order object or list of Order objects
Examples
Submitting a single order:
>>> # For a market buy order >>> order = self.create_order("SPY", 100, "buy") >>> self.submit_order(order)
>>> # For a limit buy order >>> order = self.create_order("SPY", 100, "buy", limit_price=100.00) >>> self.submit_order(order)
>>> # For a stop loss order >>> order = self.create_order("SPY", 100, "buy", stop_price=100.00) >>> self.submit_order(order)
>>> # For a stop limit order >>> order = self.create_order("SPY", 100, "buy", limit_price=100.00, stop_price=100.00) >>> self.submit_order(order)
>>> # For a market sell order >>> order = self.create_order("SPY", 100, "sell") >>> self.submit_order(order)
>>> # For buying a crypto with a market price >>> from lumibot.entities import Asset >>> >>> asset_base = Asset( >>> "BTC", >>> asset_type=Asset.AssetType.CRYPTO, >>> ) >>> asset_quote = Asset( >>> "USD", >>> asset_type=Asset.AssetType.CRYPTO, >>> ) >>> order = self.create_order(asset_base, 0.1, "buy", quote=asset_quote) >>> self.submit_order(order) >>> # or... >>> order = self.create_order((asset_base, asset_quote), 0.1, "buy") >>> self.submit_order(order)
Submitting multiple orders:
>>> # For 2 market buy orders >>> order1 = self.create_order("SPY", 100, "buy") >>> order2 = self.create_order("TLT", 200, "buy") >>> self.submit_order([order1, order2])
>>> # For 2 limit buy orders >>> order1 = self.create_order("SPY", 100, "buy", limit_price=100.00) >>> order2 = self.create_order("TLT", 200, "buy", limit_price=100.00) >>> self.submit_order([order1, order2])
>>> # For 2 CRYPTO buy orders >>> from lumibot.entities import Asset >>> >>> asset_BTC = Asset( >>> "BTC", >>> asset_type=Asset.AssetType.CRYPTO, >>> ) >>> asset_ETH = Asset( >>> "ETH", >>> asset_type=Asset.AssetType.CRYPTO, >>> ) >>> asset_quote = Asset( >>> "USD", >>> asset_type=Asset.AssetType.FOREX, >>> ) >>> order1 = self.create_order(asset_BTC, 0.1, "buy", quote=asset_quote) >>> order2 = self.create_order(asset_ETH, 10, "buy", quote=asset_quote) >>> self.submit_order([order1, order2]) >>> # or... >>> order1 = self.create_order((asset_BTC, asset_quote), 0.1, "buy") >>> order2 = self.create_order((asset_ETH, asset_quote), 10, "buy") >>> self.submit_order([order1, order2])