62 lines
1.8 KiB
Go
62 lines
1.8 KiB
Go
package a
|
|
|
|
import (
|
|
"log"
|
|
"strings"
|
|
|
|
"git.apinb.com/dataset/stock/internal/impl"
|
|
"git.apinb.com/dataset/stock/internal/models"
|
|
)
|
|
|
|
func GetStockIndicator() {
|
|
s, e := ReturnLastDay()
|
|
for _, code := range GetStockCodes() {
|
|
params := map[string]string{
|
|
"ts_code": code,
|
|
"start_date": s,
|
|
"end_date": e,
|
|
}
|
|
|
|
var cnt int64
|
|
impl.DBService.Model(&models.StockDaily{}).Where("ts_code=? and trade_date in (?,?)", code, s, e).Count(&cnt)
|
|
if cnt == 2 {
|
|
continue
|
|
}
|
|
|
|
fields := strings.Split("ts_code,trade_date,close,turnover_rate,turnover_rate_f,volume_ratio,pe,pe_ttm,pb,ps,ps_ttm,dv_ratio,dv_ttm,total_share,float_share,free_share,total_mv,circ_mv", ",")
|
|
reply, err := TushareClient.Daily(params, fields)
|
|
if err != nil {
|
|
log.Println("ERROR", "GetStockIndicator", err)
|
|
return
|
|
}
|
|
|
|
for _, item := range reply.Data.Items {
|
|
var cnt int64
|
|
impl.DBService.Model(&models.StockIndicator{}).Where("ts_code=? and trade_date=?", item[0].(string), item[1].(string)).Count(&cnt)
|
|
if cnt == 0 {
|
|
impl.DBService.Create(&models.StockIndicator{
|
|
TsCode: item[0].(string),
|
|
TradeDate: item[1].(string),
|
|
Close: item[2].(float64),
|
|
TurnoverRate: item[3].(float64),
|
|
TurnoverRateF: item[4].(float64),
|
|
VolumeRatio: item[5].(float64),
|
|
Pe: item[6].(float64),
|
|
PeTtm: item[7].(float64),
|
|
Pb: item[8].(float64),
|
|
Ps: item[9].(float64),
|
|
PsTtm: item[10].(float64),
|
|
DvRatio: item[11].(float64),
|
|
DvTtm: item[12].(float64),
|
|
TotalShare: item[13].(float64),
|
|
FloatShare: item[14].(float64),
|
|
FreeShare: item[15].(float64),
|
|
TotalMv: item[16].(float64),
|
|
CircMv: item[17].(float64),
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|