|
|
@@ -40,26 +40,31 @@ type TradeAccountEx struct {
|
|
|
|
|
|
// TradePosition 持仓汇总
|
|
|
type TradePosition struct {
|
|
|
- ACCOUNTID int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 账户id
|
|
|
- GOODSID int32 `json:"goodsid" xorm:"'GOODSID'"` // 商品id
|
|
|
- HOLDERTYPE int32 `json:"holdertype" xorm:"'HOLDERTYPE'"` // 持仓类别 - 1:单边持仓 2:双边持仓
|
|
|
- TRADEPROPERTY int32 `json:"tradeproperty" xorm:"'TRADEPROPERTY'"` // 交易属性
|
|
|
- BUYORSELL int32 `json:"buyorsell" xorm:"'BUYORSELL'"` // 买卖方向 0-买 1-卖
|
|
|
- USEDMARGIN SFLOAT64 `json:"usedmargin" xorm:"'USEDMARGIN'"` // 占用保证金
|
|
|
- ORIQTY SFLOAT64 `json:"oriqty" xorm:"'ORIQTY'"` // 期初持仓数量
|
|
|
- QTY SFLOAT64 `json:"qty" xorm:"'QTY'"` // 持仓数量
|
|
|
- FROZENQTY SFLOAT64 `json:"frozenqty" xorm:"'FROZENQTY'"` // 冻结数量
|
|
|
- OTHERFROZENQTY SFLOAT64 `json:"otherfrozenqty" xorm:"'OTHERFROZENQTY'"` // 其它冻结数量
|
|
|
- CUROPENQTY SFLOAT64 `json:"curopenqty" xorm:"'CUROPENQTY'"` // 今日开仓数量
|
|
|
- CURCLOSEQTY SFLOAT64 `json:"curcloseqty" xorm:"'CURCLOSEQTY'"` // 今日平仓数量
|
|
|
- ORIAMOUNT SFLOAT64 `json:"oriamount" xorm:"'ORIAMOUNT'"` // 期初持仓金额
|
|
|
- AMOUNT SFLOAT64 `json:"amount" xorm:"'AMOUNT'"` // 持仓金额
|
|
|
+ ACCOUNTID int64 `json:"accountid" xorm:"'ACCOUNTID'"` // 账户id
|
|
|
+ GOODSID int32 `json:"goodsid" xorm:"'GOODSID'" form:"goodsid"` // 商品id
|
|
|
+ HOLDERTYPE int32 `json:"holdertype" xorm:"'HOLDERTYPE'"` // 持仓类别 - 1:单边持仓 2:双边持仓
|
|
|
+ TRADEPROPERTY int32 `json:"tradeproperty" xorm:"'TRADEPROPERTY'"` // 交易属性
|
|
|
+ BUYORSELL int32 `json:"buyorsell" xorm:"'BUYORSELL'" form:"buyorsell"` // 买卖方向 0-买 1-卖
|
|
|
+ USEDMARGIN SFLOAT64 `json:"usedmargin" xorm:"'USEDMARGIN'"` // 占用保证金
|
|
|
+ ORIQTY SFLOAT64 `json:"oriqty" xorm:"'ORIQTY'"` // 期初持仓数量
|
|
|
+ QTY SFLOAT64 `json:"qty" xorm:"'QTY'"` // 持仓数量
|
|
|
+ FROZENQTY SFLOAT64 `json:"frozenqty" xorm:"'FROZENQTY'"` // 冻结数量
|
|
|
+ OTHERFROZENQTY SFLOAT64 `json:"otherfrozenqty" xorm:"'OTHERFROZENQTY'"` // 其它冻结数量
|
|
|
+ CUROPENQTY SFLOAT64 `json:"curopenqty" xorm:"'CUROPENQTY'"` // 今日开仓数量
|
|
|
+ CURCLOSEQTY SFLOAT64 `json:"curcloseqty" xorm:"'CURCLOSEQTY'"` // 今日平仓数量
|
|
|
+ ORIAMOUNT SFLOAT64 `json:"oriamount" xorm:"'ORIAMOUNT'"` // 期初持仓金额
|
|
|
+ AMOUNT SFLOAT64 `json:"amount" xorm:"'AMOUNT'"` // 持仓金额
|
|
|
TradeGoodsEx `xorm:"extends"`
|
|
|
TradeAccountEx `xorm:"extends"`
|
|
|
|
|
|
HOLDERPRICE SFLOAT64 `json:"holderprice"` // 持仓均价 = 持仓金额 / 持仓数量 / 合约剩数 保留3位小数
|
|
|
LASTPRICE SFLOAT64 `json:"lastprice"` // 最新价 从盘面上获取
|
|
|
POSTIONPL SFLOAT64 `json:"postionpl"` // 持仓盈亏(浮动盈亏)
|
|
|
+ ENABLEQTY SFLOAT64 `json:"enableqty"` // 可用数量
|
|
|
+
|
|
|
+ FtAccountIDs string `json:"-" form:"accids"` // 资金账号,逗号隔开
|
|
|
+ FtTradeMode string `json:"-" form:"trademodes"` // 交易模式筛选, 逗号隔开
|
|
|
+ FtMarketIDs string `json:"-" form:"marketids"` // 市场id, 逗号隔开
|
|
|
}
|
|
|
|
|
|
func (r *TradePosition) calc() {
|
|
|
@@ -68,9 +73,10 @@ func (r *TradePosition) calc() {
|
|
|
vl[i].Power10(n * -1)
|
|
|
}
|
|
|
}
|
|
|
+ r.ENABLEQTY = r.QTY - r.FROZENQTY - r.OTHERFROZENQTY
|
|
|
// 数量 按成交量小数位缩小
|
|
|
fNegativePower10(r.QTYDECIMALPLACE, &r.ORIQTY, &r.QTY, &r.FROZENQTY,
|
|
|
- &r.OTHERFROZENQTY, &r.CUROPENQTY, &r.CURCLOSEQTY)
|
|
|
+ &r.OTHERFROZENQTY, &r.CUROPENQTY, &r.CURCLOSEQTY, &r.ENABLEQTY)
|
|
|
if r.AGREEUNIT > 1e-8 {
|
|
|
r.HOLDERPRICE = r.AMOUNT / r.QTY / SFLOAT64(r.AGREEUNIT)
|
|
|
r.HOLDERPRICE.Round(3)
|
|
|
@@ -155,6 +161,12 @@ select k.*, t1.*, t2.*
|
|
|
on k.accountid = t2.accountid
|
|
|
where 1 = 1
|
|
|
`
|
|
|
+ sqlId.AndEx("utmp.userid", r.USERID, r.USERID > 0)
|
|
|
+ sqlId.AndEx("t.goodsid", r.GOODSID, r.GOODSID > 0)
|
|
|
+ sqlId.AndEx("t.BUYORSELL", r.BUYORSELL, r.BUYORSELL != -1)
|
|
|
+ sqlId.JoinEx(r.FtTradeMode != "", fmt.Sprintf(" and t1.trademode in(%v)", r.FtTradeMode))
|
|
|
+ sqlId.JoinEx(r.FtMarketIDs != "", fmt.Sprintf(" and t1.marketid in(%v)", r.FtMarketIDs))
|
|
|
+ sqlId.JoinEx(r.FtAccountIDs != "", fmt.Sprintf(" and k.accountid in(%v)", r.FtAccountIDs))
|
|
|
return sqlId.String()
|
|
|
}
|
|
|
|