portfolio_test.go 1000 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package main
  2. import (
  3. "git.beejay.kim/Gshopper/sentio"
  4. "github.com/samber/lo"
  5. )
  6. type PortfolioStub []PositionStub
  7. func newStubPortfolio(elem ...PositionStub) sentio.Portfolio {
  8. var p PortfolioStub
  9. p = append(p, elem...)
  10. return p
  11. }
  12. func (p PortfolioStub) Get(symbol string) (sentio.Position, bool) {
  13. return lo.Find(p, func(item PositionStub) bool {
  14. return item.symbol == symbol
  15. })
  16. }
  17. func (p PortfolioStub) Positions() []sentio.Position {
  18. return lo.Map(p, func(item PositionStub, _ int) sentio.Position {
  19. return item
  20. })
  21. }
  22. type PositionStub struct {
  23. symbol string
  24. size float64
  25. price float64
  26. pnl float64
  27. currentPrice float64
  28. }
  29. func (p PositionStub) GetSize() float64 {
  30. return p.size
  31. }
  32. func (p PositionStub) GetAvgPrice() float64 {
  33. return p.price
  34. }
  35. func (p PositionStub) GetSymbol() string {
  36. return p.symbol
  37. }
  38. func (p PositionStub) GetPnL() float64 {
  39. return p.pnl
  40. }
  41. func (p PositionStub) GetCurrentPrice() float64 {
  42. return p.currentPrice
  43. }