debot_db/
trading_strategy.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash, Serialize, Deserialize)]
4pub enum TrendType {
5 Up,
6 Down,
7 Any,
8}
9
10#[derive(Clone, Copy, Debug, Eq, Hash, Serialize, Deserialize)]
11pub enum TradingStrategy {
12 Inago(TrendType),
13 RandomInago(TrendType),
14}
15
16impl TradingStrategy {
17 pub fn trend_type(&self) -> &TrendType {
18 match self {
19 TradingStrategy::RandomInago(t) | TradingStrategy::Inago(t) => t,
20 }
21 }
22}
23
24impl PartialEq for TradingStrategy {
25 fn eq(&self, other: &Self) -> bool {
26 match (self, other) {
27 (TradingStrategy::Inago(TrendType::Any), TradingStrategy::Inago(TrendType::Up))
28 | (TradingStrategy::Inago(TrendType::Up), TradingStrategy::Inago(TrendType::Any))
29 | (TradingStrategy::Inago(TrendType::Any), TradingStrategy::Inago(TrendType::Down))
30 | (TradingStrategy::Inago(TrendType::Down), TradingStrategy::Inago(TrendType::Any)) => {
31 true
32 }
33 (TradingStrategy::Inago(t1), TradingStrategy::Inago(t2)) if t1 == t2 => true,
34
35 (
36 TradingStrategy::RandomInago(TrendType::Any),
37 TradingStrategy::RandomInago(TrendType::Up),
38 )
39 | (
40 TradingStrategy::RandomInago(TrendType::Up),
41 TradingStrategy::RandomInago(TrendType::Any),
42 )
43 | (
44 TradingStrategy::RandomInago(TrendType::Any),
45 TradingStrategy::RandomInago(TrendType::Down),
46 )
47 | (
48 TradingStrategy::RandomInago(TrendType::Down),
49 TradingStrategy::RandomInago(TrendType::Any),
50 ) => true,
51 (TradingStrategy::RandomInago(t1), TradingStrategy::RandomInago(t2)) if t1 == t2 => {
52 true
53 }
54
55 _ => false,
56 }
57 }
58}