Преглед на файлове

可以下单,还有一些细节逻辑未处理。

skyfffire преди 2 години
родител
ревизия
ec4999fcbb
променени са 4 файла, в които са добавени 32 реда и са изтрити 10 реда
  1. 24 4
      src/main.rs
  2. 1 1
      strategy/src/lib.rs
  3. 3 3
      strategy/src/quant.rs
  4. 4 2
      strategy/src/strategy.rs

+ 24 - 4
src/main.rs

@@ -8,6 +8,7 @@ use tokio::sync::{mpsc, Mutex};
 use tokio::try_join;
 use tracing::{error, info};
 use standard::Order;
+use strategy::model::OrderInfo;
 use strategy::params::Params;
 use strategy::quant;
 use strategy::quant::Quant;
@@ -54,8 +55,26 @@ async fn main() {
         loop {
             match order_receiver.recv().await {
                 Some(order) => {
-                    let quant_obj = order_handler_quant_arc.lock().await;
-                    info!("你好{:?}", order);
+                    let mut quant = order_handler_quant_arc.lock().await;
+
+                    let mut order_info = OrderInfo {
+                        symbol: "".to_string(),
+                        amount: Default::default(),
+                        side: "".to_string(),
+                        price: Default::default(),
+                        client_id: order.custom_id,
+                        filled_price: Default::default(),
+                        filled: Default::default(),
+                        order_id: order.id,
+                        local_time: 0,
+                        create_time: 0,
+                        status: order.status,
+                        fee: Default::default(),
+                    };
+
+                    quant.update_local_order(order_info.clone());
+
+                    info!("收到新的order{:?}", order_info.clone());
                 },
                 None => {
                     error!("Order channel has been closed!");
@@ -69,8 +88,9 @@ async fn main() {
         loop {
             match error_receiver.recv().await {
                 Some(error) => {
-                    let quant_obj = error_handler_quant_arc.lock().await;
-                    error!("你好{:?}", error);
+                    let quant = error_handler_quant_arc.lock().await;
+
+                    error!("出现错误{:?}", error);
                 },
                 None => {
                     error!("Error channel has been closed!");

+ 1 - 1
strategy/src/lib.rs

@@ -1,6 +1,6 @@
 pub mod params;
 pub mod quant;
-mod model;
+pub mod model;
 mod strategy;
 mod predictor;
 mod utils;

+ 3 - 3
strategy/src/quant.rs

@@ -975,7 +975,7 @@ impl Quant {
         self.update_equity_rest().await;
         // 初始资金
         let start_cash = self.local_cash.clone();
-        let start_coin = self.local_cash.clone();
+        let start_coin = self.local_coin.clone();
         if start_cash.is_zero() && start_coin.is_zero() {
             self.exit_msg = format!("{}{}{}{}", "初始为零 cash: ", start_cash, " coin: ", start_coin);
             // 停止程序
@@ -999,12 +999,12 @@ impl Quant {
         self.strategy.total_amount = self.strategy.equity * self.strategy.lever_rate / self.strategy.mp;
         // 获取数量精度
         self.strategy.step_size = self.market.amount_size.clone();
-        if self.strategy.step_size < Decimal::ONE {
+        if self.strategy.step_size > Decimal::ONE {
             self.strategy.step_size = self.strategy.step_size.trunc();
         }
         // 获取价格精度
         self.strategy.tick_size = self.market.tick_size.clone();
-        if self.strategy.tick_size < Decimal::ONE {
+        if self.strategy.tick_size > Decimal::ONE {
             self.strategy.tick_size = self.strategy.tick_size.trunc();
         }
         if self.strategy.step_size.is_zero() || self.strategy.tick_size.is_zero() {

+ 4 - 2
strategy/src/strategy.rs

@@ -9,6 +9,7 @@ use crate::model::{LocalPosition, OrderInfo, TraderMsg};
 use crate::params::Params;
 use crate::utils;
 use tracing::{info, instrument, error, debug};
+use tracing::field::debug;
 use tracing_subscriber;
 use standard::OrderCommand;
 
@@ -184,8 +185,8 @@ impl Strategy {
             max_short_value: Default::default(),
             open_dist: vec![],
             close_dist: vec![],
-            trade_close_dist: dec!(0.00001),
-            trade_open_dist: dec!(0.01),
+            trade_close_dist: params.close,
+            trade_open_dist: params.open,
             ref_index: 0,
             predict: Default::default(),
             predict_alpha: Default::default(),
@@ -1037,6 +1038,7 @@ impl Strategy {
                 let value = min(one_hand_long_value, long_free_value);
                 let amount = utils::fix_amount(value / self.mp, self.step_size);
                 let amount_value = amount * self.mp;
+                debug!(?one_hand_long_value, ?long_free_value, ?amount);
 
                 // 下单价值不能太大,也不能太小
                 if amount_value >= self._min_amount_value && amount_value <= long_free_value {