Get Order Results (With Changing Logs)
GetOrderResultsDetail
Input Parameters
| Parameter | Type | Description |
|---|---|---|
| account | Account | Account |
Result Return
| Parameter | Type | Description |
|---|---|---|
| IsSuccess | bool | Whether successful |
| Data | *[]OrderResult | Returns order list (including changing logs) |
| Message | *string | Returns error message when IsSuccess = false |
Order Information OrderResult Fields
Return type : Object
| Parameter | Type | Description |
|---|---|---|
| FunctionType | *int64 | Function Type: 0 New Order, 10 Execute New Order, 15 Change Price, 20 Change Qty, 30 Cancel Order, 90 Fail |
| Date | *string | Transaction Date |
| SeqNo | *string | Order Sequence Number |
| BranchNo | *string | Branch Code |
| Account | *string | Account |
| OrderNo | *string | Order Number |
| AssetType | *int64 | Asset Type: 0 Securities |
| Market | *string | Market: TAIEX Listed Stocks, TAISDAQ OTC Stocks, TAIEMG Emerging Stocks |
| MarketType | MarketType | Market Type Category: MarketTypeCommon Regular Stock, MarketTypeFixing Fixing, MarketTypeIntradayOdd Intraday Odd Lot, MarketTypeOdd Post-market Odd Lot, MarketTypeEmg Emerging, MarketTypeEmgOdd Emerging Odd Lot |
| StockNo | *string | Stock Symbol |
| BuySell | *BsAction | Buy/Sell Action: BsActionBuy Buy, BsActionSell Sell |
| PriceType | *PriceType | Effective Price Type: PriceTypeLimit Limit, PriceTypeLimitUp Limit Up, PriceTypeLimitDown Limit Down, PriceTypeMarket Market, PriceTypeReference Reference |
| Price | *string | Price |
| Quantity | *int64 | Original Order Quantity |
| TimeInForce | *TimeInForce | Order Condition: TimeInForceRod ROD, TimeInForceFok FOK, TimeInForceIoc IOC |
| OrderType | *OrderType | Order Type: OrderTypeStock Common, OrderTypeMargin Margin, OrderTypeShort Short Sell, OrderTypeDayTrade Day Trade, OrderTypeSbl SBL |
| IsPreOrder | *bool | Is Pre-order |
| Status | *int64 | Order Status: 0 Pre-order, 4 Sending to Backend, 9 Connection Timeout, 10 Order Success, 30 Cancelled Unfilled, 40 Partial Fill/Rest Cancelled, 50 Fully Filled, 90 Fail |
| AfterPriceType | *PriceType | Effective Price Type: PriceTypeLimit Limit, PriceTypeLimitUp Limit Up, PriceTypeLimitDown Limit Down, PriceTypeMarket Market, PriceTypeReference Reference |
| AfterPrice | *string | Effective Order Price |
| Unit | *int64 | Unit |
| AfterQty | *int64 | Effective Order Quantity (including filled part) |
| FilledQty | *int64 | Filled Quantity |
| FilledMoney | *int64 | Filled Amount |
| BeforeQty | *int64 | Effective Qty Before Change |
| BeforePrice | *string | Effective Price Before Change |
| UserDef | *string | User Defined Field |
| LastTime | *string | Last Modified Time |
| ErrorMessage | *string | Error Message |
| Details | *[]OrderDetail | Order Changing Logs |
| >> FunctionType | *int64 | Function Type: 0 New Order, 10 Execute New Order, 15 Change Price, 20 Change Qty, 30 Cancel Order, 50 Fully Filled, 90 Fail |
| >> ModifiedTime | *string | Modified Time |
| >> BeforeQty | *int64 | Original Order Quantity |
| >> AfterQty | *int64 | Effective Order Quantity (including filled part) |
| >> BeforePrice | *string | Original Order Price |
| >> AfterPrice | *string | Effective Order Price |
| >> FilledMoney | *string | Filled Amount |
| >> Status | *int64 | Order Status |
| >> ErrorMessage | *string | Error Message |
Request Example
package main
import (
"fmt"
"fubon"
)
func main() {
// Initialize SDK and login
sdk := fubon.NewSDK()
// ... Login, connection, and other initialization steps ...
// Get Order Results (With Changing Logs)
ordResultDetail, err := sdk.Stock.GetOrderResultsDetail(account)
// Error Handling
if err != nil {
fmt.Printf("❌ Get Order Results Detail Error: %v (Type: %T)\n", err, err)
return
}
// Check Success
if !ordResultDetail.IsSuccess {
message := "No message"
if ordResultDetail.Message != nil {
message = *ordResultDetail.Message
}
fmt.Printf("Get order result detail failed. Message: %s\n", message)
return
}
// Output Order List and Changing Logs
if ordResultDetail.Data != nil && len(*ordResultDetail.Data) > 0 {
fmt.Printf("✅ Found %d orders with details\n", len(*ordResultDetail.Data))
for i, result := range *ordResultDetail.Data {
fmt.Printf("\n=== Order %d ===\n", i+1)
fmt.Printf("OrderNo: %s\n", *result.OrderNo)
fmt.Printf("StockNo: %s\n", *result.StockNo)
fmt.Printf("BuySell: %v\n", *result.BuySell)
fmt.Printf("Price: %s\n", *result.Price)
fmt.Printf("Quantity: %d\n", *result.Quantity)
fmt.Printf("Status: %d\n", *result.Status)
// Display Order Changing Logs
if result.Details != nil && len(*result.Details) > 0 {
fmt.Printf("\n Order Changing Logs (%d records):\n", len(*result.Details))
for j, detail := range *result.Details {
fmt.Printf(" [%d] FunctionType: %d\n", j+1, *detail.FunctionType)
fmt.Printf(" ModifiedTime: %s\n", *detail.ModifiedTime)
fmt.Printf(" BeforeQty: %d -> AfterQty: %d\n", *detail.BeforeQty, *detail.AfterQty)
fmt.Printf(" BeforePrice: %s -> AfterPrice: %s\n", *detail.BeforePrice, *detail.AfterPrice)
fmt.Printf(" Status: %d\n", *detail.Status)
}
} else {
fmt.Println(" No Order Changing Logs")
}
}
} else {
fmt.Println("Order result detail success but no data returned.")
}
}
Response Example
// OrderResultsDetail Return Structure
Result{
IsSuccess: true,
Message: nil,
Data: &[]OrderResult{
{
FunctionType: nil, // Function Type
Date: "2023/10/13", // Transaction Date
SeqNo: "00000000002", // Order Sequence Number
BranchNo: "6460", // Branch Code
Account: "26", // Account
OrderNo: "bA614", // Order Number
AssetType: 0, // Asset Type
Market: "TAIEX", // Market Type
MarketType: Common, // Market Type Category
StockNo: "2888", // Stock Symbol
BuySell: Buy, // Buy/Sell Action
PriceType: Limit, // Original Price Type
Price: "9.0", // Price
Quantity: 2000, // Original Order Quantity
TimeInForce: Rod, // Order Condition
OrderType: Stock, // Order Type
IsPreOrder: false, // Is Pre-order
Status: 10, // Order Status
AfterPriceType: Limit, // Effective Price Type
AfterPrice: "9.0", // Effective Price
Unit: 1000, // Unit
AfterQty: 2000, // Effective Order Quantity
FilledQty: 0, // Filled Quantity
FilledMoney: 0, // Filled Amount
BeforeQty: 0, // Effective Qty Before Change
BeforePrice: "9.0", // Effective Price Before Change
UserDef: "", // User Defined Field
LastTime: "10:05:54.608", // Last Modified Time
ErrorMessage: "", // Error Message
Details: &[]OrderDetail{ // Order Changing Logs
{
FunctionType: 10,
ModifiedTime: "10:05:54.608",
BeforeQty: 0,
AfterQty: 2000,
BeforePrice: "9.0",
AfterPrice: "9.0",
Status: 10,
ErrorMessage: "",
},
},
},
// ... more orders
},
}