62 lines
2.0 KiB
Go
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"
|
|
}
|