model.rs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. use std::collections::{HashMap};
  2. use rust_decimal::Decimal;
  3. use rust_decimal_macros::dec;
  4. use serde_derive::{Deserialize, Serialize};
  5. use global::trace_stack::TraceStack;
  6. #[derive(Debug, Clone, PartialEq, Eq)]
  7. pub struct LocalPosition {
  8. // 做多仓位
  9. pub long_pos: Decimal,
  10. // 做空仓位
  11. pub short_pos: Decimal,
  12. //
  13. pub long_avg: Decimal,
  14. //
  15. pub short_avg: Decimal
  16. }
  17. impl LocalPosition {
  18. pub fn new() -> LocalPosition {
  19. LocalPosition{
  20. long_pos: dec!(0),
  21. short_pos: dec!(0),
  22. long_avg: dec!(0),
  23. short_avg: dec!(0),
  24. }
  25. }
  26. }
  27. #[derive(Debug, Clone)]
  28. pub struct TraderMsg {
  29. pub position: LocalPosition,
  30. pub cash: Decimal,
  31. pub coin: Decimal,
  32. pub orders: HashMap<String, OrderInfo>,
  33. pub ref_price: Vec<Vec<Decimal>>,
  34. pub market: Vec<Decimal>,
  35. pub predict: Decimal
  36. }
  37. impl TraderMsg {
  38. pub fn new() -> TraderMsg {
  39. TraderMsg{
  40. position: LocalPosition {
  41. long_pos: Default::default(),
  42. short_pos: Default::default(),
  43. long_avg: Default::default(),
  44. short_avg: Default::default(),
  45. },
  46. cash: Default::default(),
  47. coin: Default::default(),
  48. orders: Default::default(),
  49. ref_price: Default::default(),
  50. market: vec![],
  51. predict: Default::default(),
  52. }
  53. }
  54. }
  55. #[derive(Debug, Clone)]
  56. pub struct OrderInfo {
  57. pub symbol: String,
  58. pub amount: Decimal,
  59. // 方向 kd kk
  60. pub side: String,
  61. // 价格
  62. pub price: Decimal,
  63. // 自定义订单号
  64. pub client_id: String,
  65. // 实际价格
  66. pub filled_price: Decimal,
  67. //
  68. pub filled: Decimal,
  69. // 订单号
  70. pub order_id: String,
  71. // 时间
  72. pub local_time: i64,
  73. // 时间
  74. pub create_time: i64,
  75. pub status: String,
  76. pub fee: Decimal,
  77. pub trace_stack: TraceStack
  78. }
  79. #[derive(Serialize, Deserialize)]
  80. pub struct OriginalTradeBa {
  81. // 成交价格
  82. pub p: Decimal,
  83. // 买方是否是做市方。如true,则此次成交是一个主动卖出单,否则是一个主动买入单。
  84. pub m: bool
  85. }
  86. #[derive(Serialize, Deserialize)]
  87. pub struct OriginalTradeGa {
  88. // 成交价格
  89. pub size: Decimal,
  90. // 买方是否是做市方。如true,则此次成交是一个主动卖出单,否则是一个主动买入单。
  91. pub price: Decimal
  92. }
  93. #[allow(non_snake_case)]
  94. #[derive(Serialize, Deserialize, Debug)]
  95. pub struct OriginalTicker {
  96. // 更新ID
  97. pub u: i64,
  98. // 买单最优挂单价格
  99. pub b: Decimal,
  100. // 买单最优挂单数量
  101. pub B: Decimal,
  102. // 卖单最优挂单价格
  103. pub a: Decimal,
  104. // 卖单最优挂单数量
  105. pub A: Decimal
  106. }