diff --git a/protocol/model_kline.go b/protocol/model_kline.go index 9e9e495..2ce4ae0 100644 --- a/protocol/model_kline.go +++ b/protocol/model_kline.go @@ -137,8 +137,26 @@ func (kline) Decode(bs []byte, Type uint8) (*KlineResp, error) { k.Low = (open + last + low) / 10 last = last + open + _close - k.Volume = int64(getVolume(Uint32(bs[:4])) / 100) - k.Amount = Price(getVolume(Uint32(bs[4:8])) * 100) //转为分,并去除多余的小数 + /* + 发现不同的K线数据处理不一致,测试如下: + 1分: 需要除以100 + 5分: 需要除以100 + 15分: 需要除以100 + 30分: 需要除以100 + 60分: 需要除以100 + 日: 不需要操作 + 周: 不需要操作 + 月: 不需要操作 + 季: 不需要操作 + 年: 不需要操作 + + */ + k.Volume = int64(getVolume(Uint32(bs[:4]))) + switch Type { + case TypeKlineMinute, TypeKline5Minute, TypeKline15Minute, TypeKline30Minute, TypeKlineHour: + k.Volume /= 100 + } + k.Amount = Price(getVolume(Uint32(bs[4:8])) * 100) //从元转为分,并去除多余的小数 bs = bs[8:] resp.List = append(resp.List, k) diff --git a/protocol/types.go b/protocol/types.go index d323bac..a809f64 100644 --- a/protocol/types.go +++ b/protocol/types.go @@ -51,11 +51,11 @@ const ( TypeKline15Minute uint8 = 1 // 15分钟K 线 TypeKline30Minute uint8 = 2 // 30分钟K 线 TypeKlineHour uint8 = 3 // 1小时K 线 - TypeKlineDay2 uint8 = 4 // 日K 线 + TypeKlineDay2 uint8 = 4 // 日K 线,未知 TypeKlineWeek uint8 = 5 // 周K 线 TypeKlineMonth uint8 = 6 // 月K 线 TypeKlineMinute uint8 = 7 // 1分钟 - TypeKlineMinute2 uint8 = 8 // 1分钟K 线 + TypeKlineMinute2 uint8 = 8 // 1分钟K 线,未知 TypeKlineDay uint8 = 9 // 日K 线 TypeKlineQuarter uint8 = 10 // 季K 线 TypeKlineYear uint8 = 11 // 年K 线