Browse Source

生成了价格没有执行逻辑……

skyffire 9 months ago
parent
commit
1c2ef129e4
2 changed files with 17 additions and 2 deletions
  1. 16 1
      strategy/src/core.rs
  2. 1 1
      strategy/src/strategy.rs

+ 16 - 1
strategy/src/core.rs

@@ -614,8 +614,23 @@ impl Core {
         }
     }
 
-    pub async fn on_trade(&mut self, trade: &Trade, _name_ref: &String, _trace_stack: &mut TraceStack, index: usize) {
+    pub async fn on_trade(&mut self, trade: &Trade, _name_ref: &String, trace_stack: &mut TraceStack, index: usize) {
         self.predictor.on_trade(trade, index).await;
+
+        // 产生交易信号
+        let mut orders = self.strategy.do_strategy(&mut self.predictor, &self.local_orders, &self.local_position, &self.local_coin, &self.local_cash);
+        trace_stack.on_after_strategy();
+
+        if orders.is_not_empty() {
+            let mut platform_rest_fb = self.platform_rest.clone_box();
+            // 先更新本地记录再发单。
+            self._update_local_orders(&mut orders);
+            // info!("订单指令:{:?}", orders);
+            let mut ts = trace_stack.clone();
+            spawn(async move {
+                platform_rest_fb.command_order(&mut orders, &mut ts).await;
+            });
+        }
     }
 
     pub async fn on_ticker(&mut self, ticker: &Ticker, _trace_stack: &mut TraceStack) {

+ 1 - 1
strategy/src/strategy.rs

@@ -869,7 +869,7 @@ impl Strategy {
                 // if (self.local_time - order.local_time <= 500) && (order.price <= long_upper && order.price >= long_lower) {
                 // if predictor.bid_price == order.price {
                 // if self.local_time - order.local_time <= 500 {
-                if predictor.bid_delta != dec!(-2) && (order.price <= long_upper && order.price >= long_lower) {
+                if predictor.bid_delta != dec!(-2) && (order.price >= long_lower && order.price <= long_upper) {
                     continue
                 }
                 command.cancel.insert(key, value);