three_commas_types/
common.rs1use std::fmt;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
6pub enum TakeProfitType {
7 #[serde(rename = "base")]
8 Base,
9
10 #[serde(rename = "total")]
11 Total,
12}
13
14#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
15pub enum ProfitCurrency {
16 #[serde(rename = "quote_currency")]
17 Quote,
18
19 #[serde(rename = "base_currency")]
20 Base,
21}
22
23#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
24pub enum StopLossType {
25 #[serde(rename = "stop_loss")]
26 StopLoss,
27
28 #[serde(rename = "stop_loss_and_disable_bot")]
29 StopLossAndDisableBot,
30}
31
32#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
33pub enum VolumeType {
34 #[serde(rename = "quote_currency")]
35 QuoteCurrency,
36
37 #[serde(rename = "base_currency")]
38 BaseCurrency,
39
40 #[serde(rename = "percent")]
41 Percent,
42
43 #[serde(rename = "xbt")]
44 Xbt,
45}
46
47impl fmt::Display for VolumeType {
48 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
49 let repr = match self {
50 VolumeType::QuoteCurrency => "quote_currency",
51 VolumeType::BaseCurrency => "base_currency",
52 VolumeType::Percent => "percent",
53 VolumeType::Xbt => "xbt",
54 };
55
56 f.write_str(repr)
57 }
58}
59
60#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
61pub enum Strategy {
62 #[serde(rename = "long")]
63 Long,
64
65 #[serde(rename = "short")]
66 Short,
67}
68
69impl fmt::Display for Strategy {
70 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
71 let repr = match self {
72 Strategy::Long => "long",
73 Strategy::Short => "short",
74 };
75
76 f.write_str(repr)
77 }
78}
79
80#[cfg(test)]
81mod tests {
82 use super::*;
83
84 #[test]
85 fn test_profit_currency_serde() {
86 let json = "\"quote_currency\"";
87 let profit_currency: ProfitCurrency =
88 serde_json::from_str(json).expect("deserialized successfully");
89
90 assert_eq!(profit_currency, ProfitCurrency::Quote);
91
92 let serialized = serde_json::to_string(&profit_currency).expect("serialized successfully");
93 assert_eq!(&*serialized, json);
94 }
95}