-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathcandle.go
51 lines (41 loc) · 1.24 KB
/
candle.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package gominitrader
import (
"time"
)
type Candles []Candle
type Candle struct {
Volume int64
Timestamp int64
Open BidAskPrice
High BidAskPrice
Low BidAskPrice
Close BidAskPrice
}
type BidAskPrice struct {
Bid float64
Ask float64
}
func (candles *Candles) MarshalCapitalPrices(capitalPrices []CapitalPrice) error {
for index, capitalPrice := range capitalPrices {
// pushing empty candle
*candles = append(*candles, Candle{})
// marshalling volume and timestamp fields
time, err := time.Parse("2006-01-02T15:04:05", capitalPrice.SnapshotTimeUTC)
if err != nil {
return err
}
timestamp := time.Unix()
(*candles)[index].Timestamp = timestamp
(*candles)[index].Volume = int64(capitalPrice.LastTradedVolume)
// mapping prices
(*candles)[index].Open.Bid = capitalPrice.OpenPrice.Bid
(*candles)[index].Open.Ask = capitalPrice.OpenPrice.Ask
(*candles)[index].High.Bid = capitalPrice.HighPrice.Bid
(*candles)[index].High.Ask = capitalPrice.HighPrice.Ask
(*candles)[index].Low.Bid = capitalPrice.LowPrice.Bid
(*candles)[index].Low.Ask = capitalPrice.LowPrice.Ask
(*candles)[index].Close.Bid = capitalPrice.ClosePrice.Bid
(*candles)[index].Close.Ask = capitalPrice.ClosePrice.Ask
}
return nil
}