69 lines
1.4 KiB
Go
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
|
|
}
|