gepangpang 2 سال پیش
والد
کامیت
d75ad6817f
2فایلهای تغییر یافته به همراه120 افزوده شده و 13 حذف شده
  1. 12 3
      standard/src/exchange.rs
  2. 108 10
      standard/src/lib.rs

+ 12 - 3
standard/src/exchange.rs

@@ -28,11 +28,13 @@ pub enum ExchangeEnum {
 /// 方法:
 /// - 创建Exchange:
 ///
-/// new(platform: [ExchangeEnum], is_colo: bool, is_login:bool, params: BTreeMap<String, String>) -> Box\<dyn Platform\>
+/// new(platform: [ExchangeEnum], symbol: `String`, is_colo: `bool`, params: `BTreeMap<String, String>`, order_sender: `Sender<Order>`, error_sender: `Sender<Error>`) -> `Box<dyn Platform + Send + Sync>`
 /// - `platform(`[ExchangeEnum]`)`: 交易所平台枚举
 /// - `symbol(String)`: 币对
 /// - `is_colo(bool)`: 是否开始告诉模式
 /// - `params(BTreeMap<String, String>)`: 登录所需参数
+/// - `order_sender(Sender<Order>)`: 订单消息发送者
+/// - `error_sender(Sender<Error>)`: 错误消息发送者
 ///
 /// 示例参数值:
 ///
@@ -42,14 +44,21 @@ pub enum ExchangeEnum {
 /// | BinanceSpot | {"access_key":"your_access_key","secret_key":"your_secret_key"} |
 /// | GateSwap | {"access_key":"your_access_key","secret_key":"your_secret_key"} |
 /// | GateSpot | {"access_key":"your_access_key","secret_key":"your_secret_key"} |
+/// | KucoinSwap | {"access_key":"your_access_key","secret_key":"your_secret_key","pass_key":"your_pass_key"} |
 ///  ```rust
 /// use std::collections::BTreeMap;
+/// use std::io::Error;
+/// use tokio::sync::mpsc;
 /// use standard::exchange::{Exchange, ExchangeEnum};
+/// use standard::Order;
 ///
 /// let mut params:BTreeMap<String,String> = BTreeMap::new();
 /// params.insert("access_key".to_string(), "your_access_key".to_string());
-/// params.insert("access_key".to_string(), "your_secret_key".to_string());
-/// let exchange = Exchange::new(ExchangeEnum::BinanceSwap, "BTC_USDT".to_string(), false, params);
+/// params.insert("secret_key".to_string(), "your_secret_key".to_string());
+/// let (order_sender, _order_receiver): (mpsc::Sender<Order>, mpsc::Receiver<Order>) = mpsc::channel(1024);
+/// let (error_sender, _error_receiver): (mpsc::Sender<Error>, mpsc::Receiver<Error>) = mpsc::channel(1024);
+///
+/// let exchange = Exchange::new(ExchangeEnum::BinanceSwap, "BTC_USDT".to_string(), false, params, order_sender, error_sender);
 #[derive(Debug, Clone)]
 pub struct Exchange;
 

+ 108 - 10
standard/src/lib.rs

@@ -21,7 +21,10 @@ mod kucoin_swap;
 pub mod kucoin_handle;
 pub mod handle_info;
 
-///
+/// 持仓模式枚举
+/// - `Both`:单持仓方向
+/// - `LONG`:多仓
+/// - `SHORT`:空仓
 #[derive(Debug, Clone, PartialEq, Eq)]
 pub enum PositionModeEnum {
     Both,
@@ -29,15 +32,6 @@ pub enum PositionModeEnum {
     Short,
 }
 
-#[derive(Debug, Clone, PartialEq, Eq)]
-pub enum OrderCommandEnum {
-    Cancel,
-    Limits,
-    Check,
-    LimitsOpen,
-    LimitsClose,
-}
-
 /// OrderCommand结构体(下单指令)
 /// - `cancel(HashMap<String, Vec<String>)`: 取消订单指令 `{"order_name": [c_id, o_id]}`;
 /// - `check(HashMap<String, Vec<String>>)`: balance挂单的冻结数量 `{"order_name": [数量,方向,价格,c_id]}`;
@@ -111,6 +105,16 @@ pub struct Depth {
     pub bids: Vec<MarketOrder>,
 }
 
+impl Depth {
+    pub fn new() -> Depth {
+        Depth {
+            time: 0,
+            asks: vec![],
+            bids: vec![],
+        }
+    }
+}
+
 /// 特殊Depth结构体(市场深度)
 /// - `name<String>`: 平台信息;
 /// - `depth(Vec<Decimal>)`: 深度信息;
@@ -122,6 +126,16 @@ pub struct SpecialDepth {
     pub ticker: SpecialTicker,
 }
 
+impl SpecialDepth {
+    pub fn new() -> SpecialDepth {
+        SpecialDepth {
+            name: "".to_string(),
+            depth: vec![],
+            ticker: SpecialTicker::new(),
+        }
+    }
+}
+
 /// 特殊Ticker结构体(市场行情)
 /// - `sell(Decimal)`: 卖一价
 /// - `buy(Decimal)`: 买一价
@@ -133,6 +147,15 @@ pub struct SpecialTicker {
     pub mid_price: Decimal,
 }
 
+impl SpecialTicker {
+    pub fn new() -> SpecialTicker {
+        SpecialTicker {
+            sell: Default::default(),
+            buy: Default::default(),
+            mid_price: Default::default(),
+        }
+    }
+}
 
 /// MarketOrder结构体(市场深度单)
 /// - `price(Decimal)`: 价格
@@ -143,6 +166,15 @@ pub struct MarketOrder {
     pub amount: Decimal,
 }
 
+impl MarketOrder {
+    pub fn new() -> MarketOrder {
+        MarketOrder {
+            price: Default::default(),
+            amount: Default::default(),
+        }
+    }
+}
+
 /// Record结构体(标准的OHLC结构)
 /// - `time(i64)`: 时间戳;
 /// - `open(Decimal)`: 开盘价;
@@ -160,6 +192,19 @@ pub struct Record {
     pub volume: Decimal,
 }
 
+impl Record {
+    pub fn new() -> Record {
+        Record {
+            time: 0,
+            open: Default::default(),
+            high: Default::default(),
+            low: Default::default(),
+            close: Default::default(),
+            volume: Default::default(),
+        }
+    }
+}
+
 /// 特殊Order结构体(订单)
 /// - `name<String>`: 平台信息;
 /// - `order<Vec<Order>>`: 订单信息数组;
@@ -169,6 +214,15 @@ pub struct SpecialOrder {
     pub order: Vec<Order>,
 }
 
+impl SpecialOrder {
+    pub fn new() -> SpecialOrder {
+        SpecialOrder {
+            name: "".to_string(),
+            order: vec![],
+        }
+    }
+}
+
 /// Order结构体(订单)
 /// - `id(String)`: 交易单唯一标识
 /// - `custom_id(String)`: 自定义Id
@@ -190,6 +244,21 @@ pub struct Order {
     pub order_type: String,
 }
 
+impl Order {
+    pub fn new() -> Order {
+        Order {
+            id: "".to_string(),
+            custom_id: "".to_string(),
+            price: Default::default(),
+            amount: Default::default(),
+            deal_amount: Default::default(),
+            avg_price: Default::default(),
+            status: "".to_string(),
+            order_type: "".to_string(),
+        }
+    }
+}
+
 /// Ticker结构体(市场行情)
 /// - `time(i64)`: 毫秒级别时间戳
 /// - `high(Decimal)`: 最高价
@@ -209,6 +278,20 @@ pub struct Ticker {
     pub volume: Decimal,
 }
 
+impl Ticker {
+    pub fn new() -> Ticker {
+        Ticker {
+            time: 0,
+            high: Default::default(),
+            low: Default::default(),
+            sell: Default::default(),
+            buy: Default::default(),
+            last: Default::default(),
+            volume: Default::default(),
+        }
+    }
+}
+
 /// Market结构体(交易品种的市场信息)
 /// - `symbol(String)`: 交易对
 /// - `base_asset(String)`: 交易币
@@ -278,6 +361,21 @@ pub struct Position {
     pub margin: Decimal,
 }
 
+impl Position {
+    pub fn new() -> Position {
+        Position {
+            symbol: "".to_string(),
+            margin_level: Default::default(),
+            amount: Default::default(),
+            frozen_amount: Default::default(),
+            price: Default::default(),
+            profit: Default::default(),
+            position_mode: PositionModeEnum::Both,
+            margin: Default::default(),
+        }
+    }
+}
+
 /// 交易所统一方法接口
 ///
 /// 使用方法前需实例化