tanya/okx/candleList.go
zhangkun9038@dingtalk.com 446185f780 up
2025-03-07 12:44:09 +08:00

69 lines
1.4 KiB
Go

package okx
import (
"encoding/csv"
"encoding/json"
"fmt"
"strings"
)
// CandleList 封装Candle数组并提供序列化方法
type CandleList struct {
Candles []*Candle
}
// ToJson 将Candle数组序列化为JSON字符串
func (cl *CandleList) ToJson() (string, error) {
// 调试信息
fmt.Printf("Number of candles: %d\n", len(cl.Candles))
for i, candle := range cl.Candles {
fmt.Printf("Writing candle %d: %+v\n", i, candle)
}
jsonData, err := json.Marshal(cl.Candles)
if err != nil {
return "", err
}
return string(jsonData), nil
}
// ToCsv 将Candle数组序列化为CSV字符串
func (cl *CandleList) ToCsv() (string, error) {
var sb strings.Builder
writer := csv.NewWriter(&sb)
// 写入CSV头
header := []string{"Timestamp", "Open", "High", "Low", "Close", "Volume", "VolumeCcy"}
if err := writer.Write(header); err != nil {
return "", err
}
// 调试信息
fmt.Printf("Number of candles: %d\n", len(cl.Candles))
for i, candle := range cl.Candles {
// fmt.Printf("Debug: Writing candle %d with Timestamp: %s\n", i, candle.Timestamp)
record := []string{
candle.Timestamp,
candle.Open,
candle.High,
candle.Low,
candle.Close,
candle.Volume,
candle.VolumeCcy,
}
if err := writer.Write(record); err != nil {
return "", err
}
// 调试信息
fmt.Printf("Writing candle %d: %+v\n", i, candle)
}
writer.Flush()
if err := writer.Error(); err != nil {
return "", err
}
return sb.String(), nil
}