刪除委託單
CancelOrder
輸入參數
| 參數 | 類別 | 說明 |
|---|---|---|
| account | Account | 帳號 |
| orderResult | OrderResult | 欲取消的委託單物件 |
| unblock | *bool (optional) (default = false) | 是否採用非阻塞 |
Result 回傳
| 參數 | 類別 | 說明 |
|---|---|---|
| IsSuccess | bool | 是否成功 |
| Data | *OrderResult | 回傳委託資訊 |
| Message | *string | 當 IsSuccess = false 回傳錯誤訊息 |
刪單資訊 OrderResult 欄位
Return type : Object
| 參數 | 類別 | 說明 |
|---|---|---|
| FunctionType | *int64 | 功能別 : 0 新單 、 10 新單執行 、 15 改價 、 20 改量 、 30 刪單 、 90 失敗 |
| Date | *string | 交易日期 |
| SeqNo | *string | 委託單流水序號 |
| BranchNo | *string | 分公司代號 |
| Account | *string | 帳號 |
| OrderNo | *string | 委託書號 |
| AssetType | *int64 | 資產類別 : 0 證券 |
| Market | *string | 市場類型 : TAIEX 上市股票 、 TAISDAQ 上櫃股票 、 TAIEMG 興櫃股票 |
| MarketType | MarketType | 盤別種類 : MarketTypeCommon 整股 、 MarketTypeFixing 定盤 、 MarketTypeIntradayOdd 盤 中零股 、 MarketTypeOdd 盤後零股 、 MarketTypeEmg 興櫃 、 MarketTypeEmgOdd 興櫃零股 |
| StockNo | *string | 股票代號 |
| BuySell | *BsAction | 買賣別 : BsActionBuy 買 、 BsActionSell 賣 |
| PriceType | *PriceType | 有效委託價格別 : PriceTypeLimit 限價 、 PriceTypeLimitUp 漲停 、 PriceTypeLimitDown 跌停 、 PriceTypeMarket 市價 、 PriceTypeReference 參考價 |
| Price | *string | 價格 |
| Quantity | *int64 | 原始委託股數 |
| TimeInForce | *TimeInForce | 委託條件別 : TimeInForceRod ROD 、 TimeInForceFok FOK 、 TimeInForceIoc IOC |
| OrderType | *OrderType | 委託單類型 : OrderTypeStock 現股 、 OrderTypeMargin 融資 、 OrderTypeShort 融券 、 OrderTypeDayTrade 現股當沖 、 OrderTypeSbl 借券 |
| IsPreOrder | *bool | 是否為預約單 |
| Status | *int64 | 委託單狀態 : 0 預約單 、 4 系統將委託送往後台 、 9 連線逾時 、10 委託成功 、 30 未成交刪單成功 、 40 部分成交,剩餘取消 、 50 完全成交 、 90 失敗 |
| AfterPriceType | *PriceType | 有效委託價格別 : PriceTypeLimit 限價 、 PriceTypeLimitUp 漲停 、 PriceTypeLimitDown 跌停 、 PriceTypeMarket 市價 、 PriceTypeReference 參考價 |
| AfterPrice | *string | 有效委託價格 |
| Unit | *int64 | 單位數 |
| AfterQty | *int64 | 有效委託股數(包含已成交部分) |
| FilledQty | *int64 | 成交股數 |
| FilledMoney | *int64 | 成交價金 |
| BeforeQty | *int64 | 改單前有效量 |
| BeforePrice | *string | 改單前有效價 |
| UserDef | *string | 自訂欄位 |
| LastTime | *string | 最後異動時間 |
| Details | *string | 委託歷程 (查詢 OrderResultDetail 或 OrderHistory 才有值) |
| ErrorMessage | *string | 錯誤訊息 |
請求範例
package main
import (
"fmt"
"fubon"
)
func main() {
// 初始化 SDK 並登入
sdk := fubon.NewSDK()
// ... 登入、連線等初始化步驟 ...
// 取得委託單列表
ordResult, err := sdk.Stock.OrderResults(account)
if err != nil {
fmt.Printf("❌ Get Order Results Error: %v\n", err)
return
}
// 選擇要刪除的委託單
var cancelOrder fubon.OrderResult
if ordResult.Data != nil && len(*ordResult.Data) > 0 {
cancelOrder = (*ordResult.Data)[0]
fmt.Println("Selected order for cancellation")
fmt.Printf("OrderNo: %s, StockNo: %s\n", *cancelOrder.OrderNo, *cancelOrder.StockNo)
// 刪除委託單
unblock := false
cancelRes, err := sdk.Stock.CancelOrder(account, cancelOrder, &unblock)
if err != nil {
fmt.Printf("❌ Cancel Order Error: %v (Type: %T)\n", err, err)
return
}
// 檢查是否成功
if !cancelRes.IsSuccess {
message := "No message"
if cancelRes.Message != nil {
message = *cancelRes.Message
}
fmt.Printf("Cancel failed. Message: %s\n", message)
return
}
// 輸出刪單結果
if cancelRes.Data != nil {
fmt.Println("✅ Order cancelled successfully!")
fmt.Printf("FunctionType: %d (30=刪單)\n", *cancelRes.Data.FunctionType)
fmt.Printf("Status: %d (30=未成交刪單成功)\n", *cancelRes.Data.Status)
fmt.Printf("OrderNo: %s\n", *cancelRes.Data.OrderNo)
fmt.Printf("AfterQty: %d\n", *cancelRes.Data.AfterQty)
} else {
fmt.Println("Order cancelled but no data returned.")
}
} else {
fmt.Println("⚠️ No orders found for cancellation")
}
}
回傳範例
// CancelOrder 回傳結構
Result{
IsSuccess: true,
Message: nil,
Data: &OrderResult{
FunctionType: 30, // 功能別 (30=刪單)
Date: "2024/03/08", // 交易日期
SeqNo: "00000308948", // 委託單流水序號
BranchNo: "6460", // 分公司代號
Account: "26", // 帳號
OrderNo: "x0023", // 委託書號
AssetType: 0, // 資產類別
Market: "TAIEX", // 市場類型
MarketType: Common, // 盤別種類
StockNo: "1101", // 股票代號
BuySell: Sell, // 買賣別
PriceType: Limit, // 原始委託價格別
Price: "41.2", // 價格
Quantity: 5000, // 原始委託股數
TimeInForce: Rod, // 委託條件別
OrderType: Stock, // 委託單類型
IsPreOrder: false, // 是否為預約單
Status: 30, // 委託單狀態 (30=未成交刪單成功)
AfterPriceType: Limit, // 有效委託價格別
AfterPrice: "41.2", // 有效委託價格
Unit: 1000, // 單位數
AfterQty: 0, // 有效委託股數 (刪單後為0)
FilledQty: 0, // 成交股數
FilledMoney: 0, // 成交價金
BeforeQty: 5000, // 改單前有效量
BeforePrice: "41.2", // 改單前有效價
UserDef: "12345678", // 自訂欄位
LastTime: "12:53:57.536", // 最後異動時間
Details: nil, // 委託歷程
ErrorMessage: "", // 錯誤訊息
},
}
注意事項
- 刪單條件: 只能刪除未成交或部分成交的委託單,已完全成交的委託單無法刪除
- FunctionType: 刪單成功時
FunctionType為30 - Status: 刪單成功時
Status為30(未成交刪單成功) 或40(部分成交,剩餘取消) - AfterQty: 刪單成功後,
AfterQty會變成0,表示沒有有效委託量 - 委託單物件: 需先透過
OrderResults()取得委託單列表,再從中選擇要刪除的委託單 - 非阻塞模式: 使用
&unblock參數可設定是否採用非阻塞模式,預設為false(阻塞模式)