Browse Source

抽象出public_params,废弃utils中的大部分参数。

skyfffire 2 years ago
parent
commit
fd12060c23
9 changed files with 54 additions and 20 deletions
  1. 2 1
      Cargo.toml
  2. 3 1
      README.md
  3. 4 0
      global/.gitignore
  4. 10 0
      global/Cargo.toml
  5. 1 0
      global/src/lib.rs
  6. 17 0
      global/src/public_params.rs
  7. 2 1
      strategy/Cargo.toml
  8. 5 5
      strategy/src/predictor.rs
  9. 10 12
      strategy/src/utils.rs

+ 2 - 1
Cargo.toml

@@ -12,5 +12,6 @@ members=[
     "main",
     "exchanges",
     "standard",
-    "strategy"
+    "strategy",
+    "global"
 ]

+ 3 - 1
README.md

@@ -9,7 +9,9 @@
 ├─ exchanges                            // 交易所层(网络层)
+├─ strategy                             // 策略层(主逻辑、风控等)
+│
 ├─ standard                             // 标准化层(中间件)
-└─ strategy                             // 策略层(主逻辑、风控等)
+└─ global                               // 一些全局变量或配置
 ```

+ 4 - 0
global/.gitignore

@@ -0,0 +1,4 @@
+/target
+/.idea
+
+Cargo.lock

+ 10 - 0
global/Cargo.toml

@@ -0,0 +1,10 @@
+[package]
+name = "global"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+rust_decimal = "1.32.0"
+rust_decimal_macros = "1.32.0"

+ 1 - 0
global/src/lib.rs

@@ -0,0 +1 @@
+pub mod public_params;

+ 17 - 0
global/src/public_params.rs

@@ -0,0 +1,17 @@
+use rust_decimal::Decimal;
+use rust_decimal_macros::dec;
+
+// TODO 市场数据汇总(market_info)的下标集合
+pub const LEVEL: usize = 1;
+pub const TRADE_LENGTH: usize = 2;                                          // 推测应该是交易交易所的数据长度
+pub const LENGTH: usize = LEVEL * 4 + TRADE_LENGTH;                         // 市场数据汇总的总长度
+pub const BID_PRICE_INDEX: usize = LEVEL * 0;                               // 买入价格下标
+pub const BID_QUANTITY_INDEX: usize = LEVEL * 0 + 1;                        // 买入数量下标
+pub const ASK_PRICE_INDEX: usize = LEVEL * 2;                               // 卖出价格下标
+pub const ASK_QUANTITY_INDEX: usize = LEVEL * 2 + 1;                        // 卖出数量下标
+// 上面是市场数据汇总的下标相关
+pub const MARKET_DELAY_LIMIT: i64 = 30*1000;                                // 市场信息延迟限制(单位:毫秒)
+pub const GRID: i64 = 1;                                                    // 策略资金分成多少份
+pub const STOP_LOSS: Decimal = dec!(0.02);                                  // 风控止损比例,0.02代表2%,是原文的STOPLOSS
+pub const GAMMA: Decimal = dec!(0.999);                                     // gamma默认值
+pub const EFF_RANGE: Decimal = dec!(0.001);                                 // 每1权重需要多少价格距离,0.001代表0.1%,每0.1%代表1权重

+ 2 - 1
strategy/Cargo.toml

@@ -14,5 +14,6 @@ tokio = { version = "1.31.0", features = ["full"] }
 rust_decimal = "1.32.0"
 rust_decimal_macros = "1.32.0"
 rand = "0.8.4"
+chrono = "0.4.26"
 standard = { path = "../standard" }
-chrono = "0.4.26"
+global = { path = "../global" }

+ 5 - 5
strategy/src/predictor.rs

@@ -2,7 +2,7 @@ use std::collections::BTreeMap;
 use rust_decimal::prelude::*;
 use rust_decimal_macros::dec;
 use standard::Ticker;
-use crate::utils;
+use global::public_params;
 
 #[derive(Debug)]
 pub struct Predictor {
@@ -51,16 +51,16 @@ impl Predictor {
         let last_market_info = self.market_info_list.last().unwrap();
 
         // 更新mid_price
-        let bid_price = last_market_info[utils::BID_PRICE_INDEX];
-        let ask_price = last_market_info[utils::BID_PRICE_INDEX];
+        let bid_price = last_market_info[public_params::BID_PRICE_INDEX];
+        let ask_price = last_market_info[public_params::BID_PRICE_INDEX];
         let mid_price = (bid_price + ask_price) * dec!(0.5);
         self.mid_price_list.push(mid_price);
 
         // 更新参考ref_mid_price
         let mut ref_mid_price_per_exchange = vec![];
         for ref_index in 0..self.ref_exchange_length {
-            let ref_bid_price = last_market_info[utils::LENGTH*(1+ref_index)+utils::BID_PRICE_INDEX];
-            let ref_ask_price = last_market_info[utils::LENGTH*(1+ref_index)+utils::ASK_PRICE_INDEX];
+            let ref_bid_price = last_market_info[public_params::LENGTH*(1+ref_index)+public_params::BID_PRICE_INDEX];
+            let ref_ask_price = last_market_info[public_params::LENGTH*(1+ref_index)+public_params::ASK_PRICE_INDEX];
             let ref_mid_price = (ref_bid_price + ref_ask_price) * dec!(0.5);
             // 依照交易所次序添加到ref_mid_price_per_exchange中
             ref_mid_price_per_exchange.push(ref_mid_price);

+ 10 - 12
strategy/src/utils.rs

@@ -2,22 +2,20 @@ use std::ops::{Div, Mul};
 use std::time::{SystemTime, UNIX_EPOCH};
 use rand::Rng;
 use rust_decimal::Decimal;
-use rust_decimal_macros::dec;
 
-// TODO 市场数据汇总(market_info)的下标集合
 pub const LEVEL: usize = 1;
 pub const TRADE_LENGTH: usize = 2;                                          // 推测应该是交易交易所的数据长度
 pub const LENGTH: usize = LEVEL * 4 + TRADE_LENGTH;                         // 市场数据汇总的总长度
-pub const BID_PRICE_INDEX: usize = LEVEL * 0;                               // 买入价格下标
-pub const BID_QUANTITY_INDEX: usize = LEVEL * 0 + 1;                        // 买入数量下标
-pub const ASK_PRICE_INDEX: usize = LEVEL * 2;                               // 卖出价格下标
-pub const ASK_QUANTITY_INDEX: usize = LEVEL * 2 + 1;                        // 卖出数量下标
-// 上面是市场数据汇总的下标相关
-pub const MARKET_DELAY_LIMIT: i64 = 30*1000;                                // 市场信息延迟限制(单位:毫秒)
-pub const GRID: i64 = 1;                                                    // 策略资金分成多少份
-pub const STOP_LOSS: Decimal = dec!(0.02);                                  // 风控止损比例,0.02代表2%,是原文的STOPLOSS
-pub const GAMMA: Decimal = dec!(0.999);                                     // gamma默认值
-pub const EFF_RANGE: Decimal = dec!(0.001);                                 // 每1权重需要多少价格距离,0.001代表0.1%,每0.1%代表1权重
+// pub const BID_PRICE_INDEX: usize = LEVEL * 0;                               // 买入价格下标
+// pub const BID_QUANTITY_INDEX: usize = LEVEL * 0 + 1;                        // 买入数量下标
+// pub const ASK_PRICE_INDEX: usize = LEVEL * 2;                               // 卖出价格下标
+// pub const ASK_QUANTITY_INDEX: usize = LEVEL * 2 + 1;                        // 卖出数量下标
+// // 上面是市场数据汇总的下标相关
+// pub const MARKET_DELAY_LIMIT: i64 = 30*1000;                                // 市场信息延迟限制(单位:毫秒)
+// pub const GRID: i64 = 1;                                                    // 策略资金分成多少份
+// pub const STOP_LOSS: Decimal = dec!(0.02);                                  // 风控止损比例,0.02代表2%,是原文的STOPLOSS
+// pub const GAMMA: Decimal = dec!(0.999);                                     // gamma默认值
+// pub const EFF_RANGE: Decimal = dec!(0.001);                                 // 每1权重需要多少价格距离,0.001代表0.1%,每0.1%代表1权重
 
 // 生成订单的id,可以根据交易所名字来
 pub fn generate_client_id(mut exchange_name_some: Option<&str>) -> String {