Skip to main content

Batch Modify Order Quantity

BatchModifyQuantity

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 BatchModifyQuantity method.

Input Parameters

ParameterTypeDescription
accountAccountAccount
modifyQuantityObjs[]ModifyQuantityObjList of quantity modification objects

Result Return

ParameterTypeDescription
IsSuccessboolWhether successful
Data*[]OrderResultReturns modification information list
Message*stringReturns error message when IsSuccess = false

Request Example

package main

import (
"fmt"
"fubon"
)

func main() {
sdk := fubon.NewFubonSDK()
// ... Login, connection, and other initialization steps ...

// Method 1: modify quantity using the batch-detail response
batchList, _ := sdk.Stock.BatchOrderLists(account)
if batchList.Data != nil && len(*batchList.Data) > 0 {
batchRes := (*batchList.Data)[0]
batchDetail, _ := sdk.Stock.BatchOrderDetail(account, batchRes)

if batchDetail.Data != nil && len(*batchDetail.Data) >= 2 {
// MakeModifyQuantityObj returns (ModifyQuantity, error); receive it before constructing the slice
modifyObj1, err := sdk.Stock.MakeModifyQuantityObj((*batchDetail.Data)[0], 1000)
if err != nil {
fmt.Printf("❌ MakeModifyQuantityObj Error: %v\n", err)
return
}
modifyObj2, err := sdk.Stock.MakeModifyQuantityObj((*batchDetail.Data)[1], 1000)
if err != nil {
fmt.Printf("❌ MakeModifyQuantityObj Error: %v\n", err)
return
}
modifyObjs := []fubon.ModifyQuantity{modifyObj1, modifyObj2}

batchQty, err := sdk.Stock.BatchModifyQuantity(account, modifyObjs)
if err != nil {
fmt.Printf("❌ Batch Modify Quantity Format/Parse Error: %v\n", err)
return
}

if batchQty.IsSuccess && batchQty.Data != nil {
fmt.Printf("✅ Modified %d orders quantity\n", len(*batchQty.Data))
for i, result := range *batchQty.Data {
fmt.Printf("Order %d: BeforeQty=%d, AfterQty=%d\n",
i+1, *result.BeforeQty, *result.AfterQty)
}
}
}
}

// Method 2: modify quantity using individual orders
ordResult, _ := sdk.Stock.GetOrderResults(account)
if ordResult.Data != nil && len(*ordResult.Data) >= 2 {
modifyObj1, _ := sdk.Stock.MakeModifyQuantityObj((*ordResult.Data)[0], 1000)
modifyObj2, _ := sdk.Stock.MakeModifyQuantityObj((*ordResult.Data)[1], 1000)
modifyObjs := []fubon.ModifyQuantity{modifyObj1, modifyObj2}

batchQty, _ := sdk.Stock.BatchModifyQuantity(account, modifyObjs)
// ... processed results
}
}

Response Example

Result{
IsSuccess: true,
Message: nil,
Data: &[]OrderResult{
{
FunctionType: 20, // Function Type (20=Change Qty)
Date: "2024/03/08", // Transaction Date
SeqNo: "00000000042", // Order Sequence Number
OrderNo: "x0026", // Order Number
StockNo: "2881", // Stock Symbol
BeforeQty: 2000, // Effective Qty Before Change
AfterQty: 1000, // Effective Order Quantity (After modification)
UserDef: "batch2", // User Defined Field
// ... Other fields
},
// ... More modification results
},
}