qbtrade/pkg/backtest/dumper_test.go

55 lines
1.3 KiB
Go
Raw Normal View History

2024-06-27 14:42:38 +00:00
package backtest
import (
"encoding/csv"
"os"
"testing"
"time"
"github.com/stretchr/testify/assert"
"git.qtrade.icu/lychiyu/qbtrade/pkg/fixedpoint"
"git.qtrade.icu/lychiyu/qbtrade/pkg/types"
)
func TestKLineDumper(t *testing.T) {
tempDir := os.TempDir()
_ = os.Mkdir(tempDir, 0755)
dumper := NewKLineDumper(tempDir)
t1 := time.Now()
err := dumper.Record(types.KLine{
Exchange: types.ExchangeBinance,
Symbol: "BTCUSDT",
StartTime: types.Time(t1),
EndTime: types.Time(t1.Add(time.Minute)),
Interval: types.Interval1m,
Open: fixedpoint.NewFromFloat(1000.0),
High: fixedpoint.NewFromFloat(2000.0),
Low: fixedpoint.NewFromFloat(3000.0),
Close: fixedpoint.NewFromFloat(4000.0),
Volume: fixedpoint.NewFromFloat(5000.0),
QuoteVolume: fixedpoint.NewFromFloat(6000.0),
NumberOfTrades: 10,
Closed: true,
})
assert.NoError(t, err)
err = dumper.Close()
assert.NoError(t, err)
filenames := dumper.Filenames()
assert.NotEmpty(t, filenames)
for _, filename := range filenames {
f, err := os.Open(filename)
if assert.NoError(t, err) {
reader := csv.NewReader(f)
records, err2 := reader.Read()
if assert.NoError(t, err2) {
assert.NotEmptyf(t, records, "%v", records)
}
}
}
}