Add stop loss order submission logic to client
This commit is contained in:
parent
fe99f740a2
commit
2e26d40884
@ -1,7 +1,7 @@
|
||||
import pandas as pd
|
||||
|
||||
from datetime import datetime
|
||||
from ib_insync import ComboLeg, Contract, IB, Index, Option, Order
|
||||
from ib_insync import ComboLeg, Contract, IB, Index, Option, Order, Trade
|
||||
from ib_insync.util import isNan
|
||||
from typing import Callable, List
|
||||
|
||||
@ -9,6 +9,7 @@ from .currency import USD
|
||||
from .exchange import SMART
|
||||
from .market_data_type import LIVE
|
||||
from .option_leg import OptionLeg
|
||||
from .order_action import BUY, SELL
|
||||
|
||||
class Client:
|
||||
|
||||
@ -77,7 +78,7 @@ class Client:
|
||||
self.ib.qualifyContracts(option_contract)
|
||||
return option_contract
|
||||
|
||||
def submit_combo_option_order(self, legs: List[OptionLeg], quantity: int) -> None:
|
||||
def submit_combo_option_order(self, legs: List[OptionLeg], quantity: int) -> Trade:
|
||||
combo_legs = []
|
||||
for leg in legs:
|
||||
option_contract = self.get_option_contract(leg)
|
||||
@ -96,9 +97,18 @@ class Client:
|
||||
combo_contract.comboLegs = combo_legs
|
||||
|
||||
combo_order = Order()
|
||||
combo_order.action = 'BUY' # TODO: Document the logic behind this.
|
||||
combo_order.action = BUY # TODO: Document the logic behind this.
|
||||
combo_order.orderType = 'MKT' # TODO: Limit order support.
|
||||
combo_order.totalQuantity = quantity
|
||||
combo_order.transmit = True
|
||||
|
||||
self.ib.placeOrder(combo_contract, combo_order)
|
||||
return self.ib.placeOrder(combo_contract, combo_order)
|
||||
|
||||
def submit_stop_loss_order(self, trade: Trade, stop_loss_price):
|
||||
stop_loss_order = Order()
|
||||
stop_loss_order.action = SELL if trade.order.action == BUY else BUY
|
||||
stop_loss_order.orderType = 'STP'
|
||||
stop_loss_order.auxPrice = stop_loss_price
|
||||
stop_loss_order.totalQuantity = trade.order.totalQuantity
|
||||
stop_loss_order.transmit = True
|
||||
return self.ib.placeOrder(trade.contract, stop_loss_order)
|
Loading…
Reference in New Issue
Block a user