48 lines
782 B
Go
48 lines
782 B
Go
|
|
package trade
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"sync"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
var (
|
|||
|
|
AccountsAssets *Assets
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
type AccountsBalance struct {
|
|||
|
|
AccountEquity float64 // 账户权益(保证金币种),包含未实现盈亏(根据mark price计算)
|
|||
|
|
Available float64 // 账户可用数量
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// lock
|
|||
|
|
type Assets struct {
|
|||
|
|
sync.RWMutex
|
|||
|
|
Data map[string]*AccountsBalance
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func NewAccounts() {
|
|||
|
|
AccountsAssets = &Assets{
|
|||
|
|
Data: make(map[string]*AccountsBalance),
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func (ac *Assets) Set(assets string, balance *AccountsBalance) {
|
|||
|
|
ac.Lock()
|
|||
|
|
defer ac.Unlock()
|
|||
|
|
|
|||
|
|
ac.Data[assets] = balance
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func (ac *Assets) SetData(data map[string]*AccountsBalance) {
|
|||
|
|
ac.Lock()
|
|||
|
|
defer ac.Unlock()
|
|||
|
|
|
|||
|
|
ac.Data = data
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func (ac *Assets) Get(assets string) *AccountsBalance {
|
|||
|
|
ac.Lock()
|
|||
|
|
defer ac.Unlock()
|
|||
|
|
|
|||
|
|
return ac.Data[assets]
|
|||
|
|
}
|