Prechádzať zdrojové kódy

网对接好了。明天再看了。

skyffire 9 mesiacov pred
rodič
commit
87c5a61d4c
1 zmenil súbory, kde vykonal 51 pridanie a 8 odobranie
  1. 51 8
      strategy/src/predictor.rs

+ 51 - 8
strategy/src/predictor.rs

@@ -4,10 +4,12 @@ use std::sync::Arc;
 use chrono::{Utc};
 use futures_channel::mpsc::UnboundedSender;
 use futures_util::StreamExt;
+use reqwest::Client;
 use rust_decimal::prelude::*;
 use rust_decimal_macros::dec;
+use serde_json::{json, Value};
 use tokio::sync::{Mutex};
-use tracing::{info};
+use tracing::{error, info};
 use global::cci::CentralControlInfo;
 use global::fixed_time_range_deque::FixedTimeRangeDeque;
 use global::params::Params;
@@ -430,7 +432,7 @@ impl Predictor {
     pub fn update_spread(&mut self) {
     }
 
-    pub fn update_delta(&mut self) {
+    pub async fn update_delta(&mut self) {
         if self.fair_price.is_zero() {
             return;
         }
@@ -439,11 +441,12 @@ impl Predictor {
         // 根据马尔科夫链调整挂单策略
         let now = Decimal::from(Utc::now().timestamp_millis());
         if now - self.prev_flush_state_time > dec!(60_000) {
-            self.state_matrix = vec![
-                vec![dec!(0.33), dec!(0.33), dec!(0.33)],
-                vec![dec!(0.33), dec!(0.33), dec!(0.33)],
-                vec![dec!(0.33), dec!(0.33), dec!(0.33)],
-            ];
+            // self.state_matrix = vec![
+            //     vec![dec!(0.33), dec!(0.33), dec!(0.33)],
+            //     vec![dec!(0.33), dec!(0.33), dec!(0.33)],
+            //     vec![dec!(0.33), dec!(0.33), dec!(0.33)],
+            // ];
+            self.update_state_matrix().await;
 
             self.state = 0usize;
             let profit_list = vec![dec!(0.33), dec!(0.33), dec!(0.33)];
@@ -491,10 +494,12 @@ impl Predictor {
         let is_open_long = self.force_order_value < -self.params.open
             && (self.mid_price < self.prev_trade_price * dec!(0.999) || self.prev_trade_price.is_zero())
             && self.inventory < self.params.grid
+            && false
             && self.bid_delta == dec!(-2);
         let is_open_short = self.force_order_value > self.params.open
             && (self.mid_price > self.prev_trade_price * dec!(1.001) || self.prev_trade_price.is_zero())
             && self.inventory > -self.params.grid
+            && false
             && self.ask_delta == dec!(-2);
 
         if is_open_long {
@@ -567,7 +572,7 @@ impl Predictor {
         }
 
         self.update_t_diff();
-        self.update_delta();
+        self.update_delta().await;
         self.update_optimal_ask_and_bid();
 
         // let mut smm = Decimal::ZERO;
@@ -634,4 +639,42 @@ impl Predictor {
     pub fn get_ref_price(&mut self, _ref_ticker_map: &BTreeMap<String, Ticker>) -> Vec<Vec<Decimal>> {
         vec![]
     }
+
+    pub async fn update_state_matrix(&mut self) {
+        let url = "http://mms.skyfffire.com:9000/getStateData";
+        let symbol = self.params.ref_pair[0].to_lowercase();
+        let params = json!({
+            "symbol": symbol,
+        });
+
+        // 创建 HTTP 客户端
+        let client = Client::new();
+
+        // 发送 GET 请求
+        let response = client.get(url)
+            .query(&params)
+            .send()
+            .await.unwrap();
+
+        // 错误处理
+        if response.status().is_success() {
+            let response_text = response.text().await.unwrap();
+            let parsed: Value = serde_json::from_str(response_text.as_str()).unwrap();
+
+            self.state_matrix = parsed["state_matrix"]
+                .as_array()
+                .unwrap()
+                .iter()
+                .map(|row| {
+                    row.as_array()
+                        .unwrap()
+                        .iter()
+                        .map(|v| Decimal::from_str(v.as_str().unwrap()).unwrap())
+                        .collect()
+                })
+                .collect();
+        } else {
+            error!("状态转移链挂了:{}", response.status());
+        }
+    }
 }