market.go 540 B

12345678910111213141516171819202122232425262728
  1. package sentio
  2. import (
  3. "context"
  4. "errors"
  5. )
  6. var (
  7. ErrMarketClosed = errors.New("market is closed")
  8. )
  9. type Market interface {
  10. Connect(done chan struct{}) (chan MarketConnection, error)
  11. Subscribe(symbol string) error
  12. IsMarketOpened() bool
  13. Time() Clock
  14. Buy(ctx context.Context, symbol string, amount float64) (Order, error)
  15. Sell(ctx context.Context, symbol string) (Order, error)
  16. CancelOrder(id string) error
  17. Orders() ([]Order, error)
  18. Portfolio() (Portfolio, error)
  19. AvailableCash() (float64, error)
  20. MaxBudget() float64
  21. }