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