probability.go 902 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package sentio
  2. import (
  3. "cmp"
  4. "slices"
  5. )
  6. func CompareProbabilityStamps(a, b *Probability_Stamp) int {
  7. return cmp.Compare(a.Time.AsTime().Unix(), b.Time.AsTime().Unix())
  8. }
  9. func (x *Probability) First() (*Probability_Stamp, bool) {
  10. return x.Next(0)
  11. }
  12. func (x *Probability) Next(n int) (*Probability_Stamp, bool) {
  13. if x.Stamps == nil || len(x.Stamps) <= n {
  14. return nil, false
  15. }
  16. slices.SortFunc(x.Stamps, CompareProbabilityStamps)
  17. return x.Stamps[n], true
  18. }
  19. func IsAction(action Action, oneOf ...Action) bool {
  20. if oneOf == nil || len(oneOf) == 0 {
  21. return false
  22. }
  23. for i := range oneOf {
  24. if action == oneOf[i] {
  25. return true
  26. }
  27. }
  28. return false
  29. }
  30. func ActionToSide(action Action) Side {
  31. switch action {
  32. case Action_DOUBLE_SELL:
  33. return SHORT
  34. case Action_SELL:
  35. return SHORT
  36. case Action_BUY:
  37. return LONG
  38. case Action_DOUBLE_BUY:
  39. return LONG
  40. default:
  41. return BASE
  42. }
  43. }