fix(stock): 同步时价格四舍五入到2位并自己计算 change_pct
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"math"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
@@ -95,18 +96,27 @@ func (s *StockSyncService) doSync(ctx context.Context) (int, error) {
|
||||
records := make([]models.StockDailyQuote, 0, len(quotes))
|
||||
for _, q := range quotes {
|
||||
tradeDate := msToDate(q.Timestamp)
|
||||
open := round2(q.Open)
|
||||
high := round2(q.High)
|
||||
low := round2(q.Low)
|
||||
close := round2(q.Close)
|
||||
prevClose := round2(q.PrevClose)
|
||||
var changePct float64
|
||||
if prevClose != 0 {
|
||||
changePct = (close - prevClose) / prevClose
|
||||
}
|
||||
records = append(records, models.StockDailyQuote{
|
||||
Symbol: q.Symbol,
|
||||
Name: q.DisplayName(),
|
||||
TradeDate: tradeDate,
|
||||
Open: q.Open,
|
||||
High: q.High,
|
||||
Low: q.Low,
|
||||
Close: q.Close,
|
||||
PrevClose: q.PrevClose,
|
||||
Open: open,
|
||||
High: high,
|
||||
Low: low,
|
||||
Close: close,
|
||||
PrevClose: prevClose,
|
||||
Volume: q.Volume,
|
||||
Amount: q.Amount,
|
||||
ChangePct: q.ChangePct(),
|
||||
ChangePct: changePct,
|
||||
TurnoverRate: q.TurnoverRate(),
|
||||
Region: q.Region,
|
||||
})
|
||||
@@ -140,3 +150,7 @@ func today() time.Time {
|
||||
func msToDate(ms int64) time.Time {
|
||||
return time.UnixMilli(ms).In(chinaLoc).Truncate(24 * time.Hour)
|
||||
}
|
||||
|
||||
func round2(v float64) float64 {
|
||||
return math.Round(v*100) / 100
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user