Skip to main content

非阻塞下單

首先,我們先理解阻塞與非阻塞的概念, 阻塞(Block)和非阻塞(Unblock)是用來描述事件、操作或通信方式的兩種不同方式,以下是它們的基本概念和區別:

阻塞(Block):

阻塞操作是指事件或操作按照預定的順序進行,並且一個操作完成後,才會回覆結果。

sync

非阻塞(Unblock):

非阻塞操作是指事件或操作不必按照固定的順序進行,可以並行執行,且一個操作不需要等待另一個操作的完成。 當您發出Request後就直接回覆,即為非阻塞。

async

使用阻塞機制下單

委託後,回覆的Order Response即會帶回完整的資料內容。

#建立委託單內容
order = Order(
buy_sell = BSAction.Buy,
symbol = "2881",
price = "66",
quantity = 2000,
market_type = MarketType.Common,
price_type = PriceType.Limit,
time_in_force = TimeInForce.ROD,
order_type = OrderType.Stock,
user_def = "From Python" # optional field
)

sdk.stock.place_order(accounts.data[0], order) #下單委託

#或採用
#sdk.stock.place_order(accounts.data[0], order, False)

使用非阻塞機制下單

委託後,回覆的Order Response可能會少帶出委託書號···等資訊。

#建立委託單內容
order = Order(
buy_sell = BSAction.Buy,
symbol = "2881",
price = "66",
quantity = 2000,
market_type = MarketType.Common,
price_type = PriceType.Limit,
time_in_force = TimeInForce.ROD,
order_type = OrderType.Stock,
user_def = "From Python" # optional field
)

sdk.stock.place_order(accounts.data[0], order, True) #下單委託

以下為支援非阻塞委託的函數

  • PlaceOrder - 下單委託
  • ModifyPrice - 修改委託價格
  • ModifyQuantity - 修改委託數量
  • CancelOrder - 取消委託