/
strategy.go
45 lines (40 loc) · 1.57 KB
/
strategy.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
package dola
import (
"context"
"time"
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
"github.com/thrasher-corp/gocryptotrader/exchanges/account"
"github.com/thrasher-corp/gocryptotrader/exchanges/fill"
"github.com/thrasher-corp/gocryptotrader/exchanges/order"
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
"github.com/thrasher-corp/gocryptotrader/exchanges/stream"
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
"github.com/thrasher-corp/gocryptotrader/exchanges/trade"
)
// +----------+
// | Strategy |
// +----------+
type Trade struct {
Timestamp time.Time
BaseCurrency string
QuoteCurrency string
OrderID string
AveragePrice float64
Quantity float64
Fee float64
FeeCurrency string
}
type Strategy interface {
Init(ctx context.Context, k *Keep, e exchange.IBotExchange) error
OnFunding(k *Keep, e exchange.IBotExchange, x stream.FundingData) error
OnPrice(k *Keep, e exchange.IBotExchange, x ticker.Price) error
OnKline(k *Keep, e exchange.IBotExchange, x stream.KlineData) error
OnOrderBook(k *Keep, e exchange.IBotExchange, x orderbook.Base) error
OnOrder(k *Keep, e exchange.IBotExchange, x order.Detail) error
OnModify(k *Keep, e exchange.IBotExchange, x order.Modify) error
OnBalanceChange(k *Keep, e exchange.IBotExchange, x account.Change) error
OnTrade(k *Keep, e exchange.IBotExchange, x []trade.Data) error
OnFill(k *Keep, e exchange.IBotExchange, x []fill.Data) error
OnUnrecognized(k *Keep, e exchange.IBotExchange, x interface{}) error
Deinit(k *Keep, e exchange.IBotExchange) error
}