Files
coin/trade/types.go
2026-01-09 15:48:31 +08:00

62 lines
2.0 KiB
Go

package trade
import (
"git.apinb.com/quant/strategy/internal/core/market"
"git.apinb.com/quant/strategy/internal/models"
)
type Spec struct {
AllowSymbols []string
PlanKeyName string
Api *models.ExchangeApi
StrategyConf *models.StrategyConf
SymbolsSetting map[string]*market.PairSetting
BinanceClient *BinanceClient `json:"-"`
BitgetClient *BitgetClient `json:"-"`
}
type Positions struct {
Long []*PositionData `json:"long"`
Short []*PositionData `json:"short"`
Data []*PositionData `json:"data"`
}
type PositionData struct {
Symbol string `json:"symbol"` // 交易对
Side string `json:"side"` // 持仓方向
Amt float64 `json:"amt"` // 持仓数量
AvgPrice float64 `json:"avgPrice"` // 持仓均价
MarkPrice float64 `json:"markPrice"` // 当前标记价格
UnRealizedProfit float64 `json:"unRealizedProfit"` // 未实现盈亏
UnRealizedProfitRate float64 `json:"unRealizedProfitRate"` // 未实现盈亏率
MarginType string `json:"marginType"` // 保证金模式
MarginSize float64 `json:"marginSize"` // 保证金
Leverage int `json:"leverage"` // 杠杆倍数
IsMaxMarginSize bool `json:"isMaxMarginSize"` // 是否达到最大保证金
}
// 持仓状态
type PositionStatus int
const (
NoPositions PositionStatus = iota // 空头,多头均无持仓
LongOnly // 多头持仓
ShortOnly // 空头持仓
BothPositions // 双向持仓
Unknown // 未知状态
)
func (ps PositionStatus) String() string {
switch ps {
case NoPositions:
return "NoPositions"
case LongOnly:
return "LONG"
case ShortOnly:
return "SHORT"
case BothPositions:
return "BothPositions"
}
return "Unknown"
}