2 Star 4 Fork 10

王布衣/engine

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
safetyscore.go 1.64 KB
一键复制 编辑 原始数据 按行查看 历史
王布衣 提交于 2024-01-11 11:15 . 适配exchange工具包
package tdxweb
import (
"fmt"
"gitee.com/quant1x/engine/market"
"gitee.com/quant1x/exchange"
"gitee.com/quant1x/gox/concurrent"
"gitee.com/quant1x/gox/http"
"gitee.com/quant1x/gox/logger"
"gitee.com/quant1x/pkg/fastjson"
)
const (
urlRiskAssessment = "http://page3.tdx.com.cn:7615/site/pcwebcall_static/bxb/json/"
defaultSafetyScore = 100
defaultSafetyScoreOfNotFound = 100
defaultSafetyScoreOfIgnore = 0
)
var (
__mapSafetyScore = concurrent.NewTreeMap[string, int]()
)
func GetSafetyScore(securityCode string) (score int) {
if !exchange.AssertStockBySecurityCode(securityCode) {
return defaultSafetyScore
}
if market.IsNeedIgnore(securityCode) {
return defaultSafetyScoreOfIgnore
}
score = defaultSafetyScore
_, _, code := exchange.DetectMarket(securityCode)
if len(code) == 6 {
url := fmt.Sprintf("%s%s.json", urlRiskAssessment, code)
data, err := http.Get(url)
if err != nil || err == http.NotFound {
score = defaultSafetyScoreOfNotFound
} else {
obj, err := fastjson.ParseBytes(data)
if err != nil {
logger.Errorf("%+v\n", err)
tmpScore, ok := __mapSafetyScore.Get(securityCode)
if ok {
score = tmpScore
} else {
score = defaultSafetyScore
}
} else {
result := obj.GetArray("data")
if result != nil && len(result) > 0 {
tmpScore := 100
for _, v := range result {
rows := v.GetArray("rows")
for _, row := range rows {
trig := row.GetInt("trig")
if trig == 1 {
tmpScore = tmpScore - row.GetInt("fs")
}
}
}
score = tmpScore
__mapSafetyScore.Put(securityCode, score)
}
}
}
}
return score
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/quant1x/engine.git
git@gitee.com:quant1x/engine.git
quant1x
engine
engine
v1.6.4

搜索帮助

Cb406eda 1850385 E526c682 1850385