Skip to main content

Modify Order Quantity

ModifyQuantity

First use MakeModifyQuantityObj to create a ModifyQuantityObj object​

ParameterTypeDescription
orderResultOrderResultThe order to be modified
quantityint64The modified quantity (Quantity after modification includes the filled part of this order)

Pass the returned object into the ModifyQuantity method.

Input Parameters​

ParameterTypeDescription
accountAccountAccount
modifyQuantityObjModifyQuantityObjOrder to modify
unblock*bool (optional) (default = false)Whether to use non-blocking

Result Return​

ParameterTypeDescription
IsSuccessboolWhether successful
Data*OrderResultReturns order information
Message*stringReturns error message when IsSuccess = false

Modification Information OrderResult Fields​

Return type : Object

ParameterTypeDescription
FunctionType*int64Function Type: 0 New Order, 10 Execute New Order, 15 Change Price, 20 Change Qty, 30 Cancel Order, 90 Fail
Date*stringTransaction Date
SeqNo*stringOrder Sequence Number
BranchNo*stringBranch Code
Account*stringAccount
OrderNo*stringOrder Number
AssetType*int64Asset Type: 0 Securities
Market*stringMarket: TAIEX Listed Stocks, TAISDAQ OTC Stocks, TAIEMG Emerging Stocks
MarketTypeMarketTypeMarket Type Category: MarketTypeCommon Regular Stock, MarketTypeFixing Fixing, MarketTypeIntradayOdd Intraday Odd Lot, MarketTypeOdd Post-market Odd Lot, MarketTypeEmg Emerging, MarketTypeEmgOdd Emerging Odd Lot
StockNo*stringStock Symbol
BuySell*BsActionBuy/Sell Action: BsActionBuy Buy, BsActionSell Sell
PriceType*PriceTypeEffective Price Type: PriceTypeLimit Limit, PriceTypeLimitUp Limit Up, PriceTypeLimitDown Limit Down, PriceTypeMarket Market, PriceTypeReference Reference
Price*stringPrice
Quantity*int64Original Order Quantity
TimeInForce*TimeInForceOrder Condition: TimeInForceRod ROD, TimeInForceFok FOK, TimeInForceIoc IOC
OrderType*OrderTypeOrder Type: OrderTypeStock Common, OrderTypeMargin Margin, OrderTypeShort Short Sell, OrderTypeDayTrade Day Trade, OrderTypeSbl SBL
IsPreOrder*boolIs Pre-order
Status*int64Order 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*PriceTypeEffective Price Type: PriceTypeLimit Limit, PriceTypeLimitUp Limit Up, PriceTypeLimitDown Limit Down, PriceTypeMarket Market, PriceTypeReference Reference
AfterPrice*stringEffective Order Price
Unit*int64Unit
AfterQty*int64Effective Order Quantity (including filled part)
FilledQty*int64Filled Quantity
FilledMoney*int64Filled Amount
BeforeQty*int64Effective Qty Before Change
BeforePrice*stringEffective Price Before Change
UserDef*stringUser Defined Field
LastTime*stringLast Modified Time
Details*stringOrder History (Value exists only when querying OrderResultDetail or OrderHistory)
ErrorMessage*stringError Message

Request Example​

package main

import (
"fmt"
"fubon"
)

func main() {
// Initialize SDK and login
sdk := fubon.NewFubonSDK()

// ... Login, connection, and other initialization steps ...

// Get the order to modify first
ordResult, err := sdk.Stock.GetOrderResults(account)
if err != nil {
fmt.Printf("❌ Get Order Results Format/Parse Error: %v\n", err)
return
}

var modifyOrder fubon.OrderResult
if ordResult.Data != nil && len(*ordResult.Data) > 0 {
modifyOrder = (*ordResult.Data)[0]
fmt.Println("Selected order for quantity modification")
fmt.Printf("OrderNo: %s, Current Quantity: %d\n",
*modifyOrder.OrderNo, *modifyOrder.AfterQty)

// Create Modify Quantity Object (Can only reduce quantity)
newQuantity := int64(1000)
modifyQtyObj, err := sdk.Stock.MakeModifyQuantityObj(modifyOrder, newQuantity)
if err != nil {
fmt.Printf("❌ Make Modify Quantity Format/Parse Error: %v (Type: %T)\n", err, err)
return
}

// Execute Modify Quantity
unblock := false
modifyQtyRes, err := sdk.Stock.ModifyQuantity(account, modifyQtyObj, &unblock)
if err != nil {
fmt.Printf("❌ Modify Quantity Format/Parse Error: %v (Type: %T)\n", err, err)
return
}

// Check Success
if !modifyQtyRes.IsSuccess {
message := "No message"
if modifyQtyRes.Message != nil {
message = *modifyQtyRes.Message
}
fmt.Printf("Modify Quantity failed. Message: %s\n", message)
return
}

// Output Modification Result
if modifyQtyRes.Data != nil {
fmt.Println("✅ Quantity modified successfully!")
fmt.Printf("FunctionType: %d (20=改量)\n", *modifyQtyRes.Data.FunctionType)
fmt.Printf("BeforeQty: %d -> AfterQty: %d\n",
*modifyQtyRes.Data.BeforeQty, *modifyQtyRes.Data.AfterQty)
} else {
fmt.Println("Modify Quantity succeeded but no data returned.")
}
} else {
fmt.Println("⚠️ No orders found for quantity modification")
}
}

Response Example​

// ModifyQuantity Return Structure
Result{
IsSuccess: true,
Message: nil,
Data: &OrderResult{
FunctionType: 20, // Function Type (20=Change Qty)
Date: "2024/03/08", // Transaction Date
SeqNo: "00000308866", // Order Sequence Number
BranchNo: "6460", // Branch Code
Account: "26", // Account
OrderNo: "x0011", // Order Number
AssetType: 0, // Asset Type
Market: "TAIEX", // Market Type
MarketType: Common, // Market Type Category
StockNo: "1101", // Stock Symbol
BuySell: Sell, // Buy/Sell Action
PriceType: Limit, // Original Price Type
Price: "41.2", // Price
Quantity: 5000, // 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: "41.3", // Valid order price
Unit: 1000, // Unit
AfterQty: 1000, // Effective Order Quantity (After modification)
FilledQty: 0, // Filled Quantity
FilledMoney: 0, // Filled Amount
BeforeQty: 3000, // Effective Qty Before Change
BeforePrice: "41.2", // Effective Price Before Change
UserDef: "12345678", // User Defined Field
LastTime: "12:56:28.966", // Last Modified Time
Details: nil, // Order history
ErrorMessage: "", // Error Message
},
}