Browse Source

1.0版本

JiahengHe 1 year ago
parent
commit
1cc6a95c8a
2 changed files with 25 additions and 25 deletions
  1. 8 8
      strategy/src/predictor_new.rs
  2. 17 17
      strategy/src/strategy.rs

+ 8 - 8
strategy/src/predictor_new.rs

@@ -1,7 +1,6 @@
 
 use rust_decimal::prelude::*;
 use rust_decimal_macros::dec;
-use tracing::{debug};
 use global::public_params;
 use crate::instant_volatility_indicator::InstantVolatilityIndicator;
 
@@ -86,11 +85,11 @@ impl PredictorNew {
             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);
-            debug!(?ref_bid_price, ?ref_ask_price, ?ref_mid_price);
+            // debug!(?ref_bid_price, ?ref_ask_price, ?ref_mid_price);
             // 依照交易所次序添加到ref_mid_price_per_exchange中
             ref_mid_price_per_exchange.push(ref_mid_price);
         }
-        debug!(?ref_mid_price_per_exchange);
+        // debug!(?ref_mid_price_per_exchange);
         let first_price = ref_mid_price_per_exchange[0].clone();
         self.ref_mid_price_per_exchange_per_frame.push(ref_mid_price_per_exchange);
 
@@ -249,7 +248,8 @@ impl PredictorNew {
     // }
     pub fn get_ref_price(&mut self) -> Vec<Vec<Decimal>>{
         let mut ref_price_list = Vec::new();
-        let std = self.vol.processing_calculation();
+        // let std = self.vol.processing_calculation();
+        let std = self.variance;
         if std == Decimal::ZERO {
             return Vec::new();
         }
@@ -292,14 +292,14 @@ mod tests {
     fn predictor_build_test() {
         let mut stdout = io::stdout();
 
-        let predictor1 = PredictorNew::new(2, Default::default(), Default::default(), Default::default(), Default::default())
+        let predictor1 = PredictorNew::new(2, Default::default(), Default::default(), Default::default(), Default::default(), Decimal::ONE)
             .alpha(vec![dec!(0.99); 100])
             .gamma(dec!(0.8));
         writeln!(stdout, "predictor1:").unwrap();
         writeln!(stdout, "{:?}", predictor1).unwrap();
         writeln!(stdout, "").unwrap();
 
-        let predictor2 = PredictorNew::new(2, Default::default(), Default::default(), Default::default(), Default::default());
+        let predictor2 = PredictorNew::new(2, Default::default(), Default::default(), Default::default(), Default::default(), Decimal::ONE);
         writeln!(stdout, "predictor2:").unwrap();
         writeln!(stdout, "{:?}", predictor2).unwrap();
         writeln!(stdout, "").unwrap();
@@ -307,7 +307,7 @@ mod tests {
 
     #[test]
     fn market_info_handler_test() {
-        let mut predictor = PredictorNew::new(1, Default::default(), Default::default(), Default::default(), Default::default());
+        let mut predictor = PredictorNew::new(1, Default::default(), Default::default(), Default::default(), Default::default(), Decimal::ONE);
         let market_info_0 = vec![dec!(0.99), dec!(1.0), dec!(0.89), dec!(0.79), dec!(0.99), dec!(1.0), dec!(0.89), dec!(0.79), dec!(0.89), dec!(0.79), dec!(0.99), dec!(1.0), dec!(0.89), dec!(0.79)];
         predictor.market_info_handler(&market_info_0);
         let market_info_1 = vec![dec!(0.98), dec!(0.99), dec!(0.56), dec!(0.49), dec!(0.99), dec!(1.0), dec!(0.89), dec!(0.79), dec!(0.89), dec!(0.79), dec!(0.99), dec!(1.0), dec!(0.89), dec!(0.79)];
@@ -316,7 +316,7 @@ mod tests {
 
     #[test]
     fn get_ref_price_test() {
-        let mut predictor = PredictorNew::new(1, Default::default(), Default::default(), Default::default(), Default::default())
+        let mut predictor = PredictorNew::new(1, Default::default(), Default::default(), Default::default(), Default::default(), Decimal::ONE)
             .alpha(vec![dec!(0.99); 100])
             .gamma(dec!(0.8));
         predictor.balance_value = Decimal::from_str("0.5").unwrap();

+ 17 - 17
strategy/src/strategy.rs

@@ -463,13 +463,13 @@ impl Strategy {
     // 生成各类挂单价格,原文是gen_dist
     #[instrument(skip(self), level="TRACE")]
     pub fn generate_dist(&mut self) {
-        // let open = self.trade_open_dist;
+        let open = self.trade_open_dist;
         let close = self.trade_close_dist;
-        // let pos_rate = vec![self.long_hold_rate, self.short_hold_rate];
+        let pos_rate = vec![self.long_hold_rate, self.short_hold_rate];
         let ref_bp = self.ref_bp;
         let ref_ap = self.ref_ap;
         let predict = self.predict;
-        // let grid = self.grid;
+        let grid = self.grid;
         let mode = self.maker_mode.clone();
 
         // let mut mp = (ref_bp + ref_ap) * dec!(0.5);
@@ -487,7 +487,7 @@ impl Strategy {
         let mp = (ref_bp + ref_ap) * dec!(0.5);
         let mut buy_start = mp;
         let mut sell_start = mp;
-        let avoid = min(dec!(0.0005), close * dec!(0.5));
+        let mut avoid = min(dec!(0.0005), close * dec!(0.5));
         let mut close_dist = vec![
             buy_start * (Decimal::ONE + predict - close + avoid),                    // buy upper
             buy_start * (Decimal::ONE + predict - close - avoid),                    // buy lower
@@ -515,21 +515,21 @@ impl Strategy {
         // info!(?mode, ?buy_start, ?sell_start, ?mp);
 
         // 开仓相关
-        // avoid = min(dec!(0.001), open * dec!(0.05));
-        // // 持仓偏移
-        // let buy_shift = Decimal::ONE + pos_rate[0] * grid;
-        // let sell_shift = Decimal::ONE + pos_rate[1] * grid;
+        avoid = min(dec!(0.001), open * dec!(0.05));
+        // 持仓偏移
+        let buy_shift = Decimal::ONE + pos_rate[0] * grid;
+        let sell_shift = Decimal::ONE + pos_rate[1] * grid;
         let mut open_dist = vec![
-            // buy_start * (Decimal::ONE + predict - open * buy_shift  + avoid),             // buy upper
-            // buy_start * (Decimal::ONE + predict - open * buy_shift  - avoid),             // buy lower
-            // sell_start * (Decimal::ONE + predict + open * sell_shift - avoid),            // sell lower
-            // sell_start * (Decimal::ONE + predict + open * sell_shift + avoid),            // sell upper
-            buy_start,
-            buy_start,
-            sell_start,
-            sell_start
+            buy_start * (Decimal::ONE + predict - open * buy_shift  + avoid),             // buy upper
+            buy_start * (Decimal::ONE + predict - open * buy_shift  - avoid),             // buy lower
+            sell_start * (Decimal::ONE + predict + open * sell_shift - avoid),            // sell lower
+            sell_start * (Decimal::ONE + predict + open * sell_shift + avoid),            // sell upper
+            // buy_start,
+            // buy_start,
+            // sell_start,
+            // sell_start
         ];
-        // debug!(?avoid, ?buy_shift, ?sell_shift, ?avoid, ?open_dist);
+        // info!(?predict, ?open,  ?buy_shift, ?sell_shift, ?avoid);
 
 
         // let mut open_dist = vec![