43 lines
831 B
Go
43 lines
831 B
Go
package max
|
|
|
|
import (
|
|
"git.qtrade.icu/lychiyu/qbtrade/pkg/types"
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
// BBGO is a broker on MAX
|
|
const spotBrokerID = "bbgo"
|
|
|
|
func NewClientOrderID(originalID string, tags ...string) (clientOrderID string) {
|
|
// skip blank client order ID
|
|
if originalID == types.NoClientOrderID {
|
|
return ""
|
|
}
|
|
|
|
prefix := "x-" + spotBrokerID + "-"
|
|
|
|
for _, tag := range tags {
|
|
prefix += tag + "-"
|
|
}
|
|
|
|
prefixLen := len(prefix)
|
|
|
|
if originalID != "" {
|
|
// try to keep the whole original client order ID if user specifies it.
|
|
if prefixLen+len(originalID) > 32 {
|
|
return originalID
|
|
}
|
|
|
|
clientOrderID = prefix + originalID
|
|
return clientOrderID
|
|
}
|
|
|
|
clientOrderID = uuid.New().String()
|
|
clientOrderID = prefix + clientOrderID
|
|
if len(clientOrderID) > 32 {
|
|
return clientOrderID[0:32]
|
|
}
|
|
|
|
return clientOrderID
|
|
}
|