兼容代码传参方式,个股可以忽略交易所标识,例sz000001,可以传000001

This commit is contained in:
钱纯净
2025-03-12 20:41:26 +08:00
parent 344b2f467d
commit 1f0958b53e
2 changed files with 19 additions and 0 deletions

View File

@@ -233,6 +233,7 @@ func (this *Client) GetMinute(code string) (*protocol.MinuteResp, error) {
// GetMinuteTrade 获取分时交易详情,服务器最多返回1800条,count-start<=1800
func (this *Client) GetMinuteTrade(code string, start, count uint16) (*protocol.MinuteTradeResp, error) {
code = protocol.AddPrefix(code)
f, err := protocol.MMinuteTrade.Frame(code, start, count)
if err != nil {
return nil, err
@@ -267,6 +268,7 @@ func (this *Client) GetMinuteTradeAll(code string) (*protocol.MinuteTradeResp, e
// 只能获取昨天及之前的数据,服务器最多返回2000条,count-start<=2000,如果日期输入错误,则返回0
// 历史数据sz000001在20241116只能查到21111112,13年差几天,3141天,或者其他规则
func (this *Client) GetHistoryMinuteTrade(date, code string, start, count uint16) (*protocol.HistoryMinuteTradeResp, error) {
code = protocol.AddPrefix(code)
f, err := protocol.MHistoryMinuteTrade.Frame(date, code, start, count)
if err != nil {
return nil, err
@@ -299,6 +301,7 @@ func (this *Client) GetHistoryMinuteTradeAll(date, code string) (*protocol.Histo
// GetKline 获取k线数据,推荐收盘之后获取,否则会获取到当天的数据
func (this *Client) GetKline(Type uint8, code string, start, count uint16) (*protocol.KlineResp, error) {
code = protocol.AddPrefix(code)
f, err := protocol.MKline.Frame(Type, code, start, count)
if err != nil {
return nil, err

View File

@@ -50,6 +50,7 @@ func UTF8ToGBK(text []byte) []byte {
}
func DecodeCode(code string) (Exchange, string, error) {
code = AddPrefix(code)
if len(code) != 8 {
return 0, "", fmt.Errorf("股票代码长度错误,例如:SZ000001")
}
@@ -212,3 +213,18 @@ func IsStock(code string) bool {
}
return false
}
// AddPrefix 添加股票代码前缀,针对股票生效,例如000001,会增加前缀sz000001(平安银行),而不是sh000001(上证指数)
func AddPrefix(code string) string {
if len(code) == 6 {
switch {
case code[:1] == "6":
code = ExchangeSH.String() + code
case code[:1] == "0":
code = ExchangeSZ.String() + code
case code[:2] == "30":
code = ExchangeSZ.String() + code
}
}
return code
}