55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package backtest
|
|
|
|
import (
|
|
"encoding/csv"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"git.qtrade.icu/lychiyu/bbgo/pkg/fixedpoint"
|
|
"git.qtrade.icu/lychiyu/bbgo/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)
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|