|
|
@@ -311,6 +311,9 @@ impl Quant {
|
|
|
}
|
|
|
|
|
|
pub fn update_local_order(&mut self, data: OrderInfo) {
|
|
|
+ if data.filled != Decimal::ZERO {
|
|
|
+ info!("接收到订单信息①:{:?}", data);
|
|
|
+ }
|
|
|
/*
|
|
|
更新订单
|
|
|
首先直接复写本地订单
|
|
|
@@ -368,9 +371,10 @@ impl Quant {
|
|
|
// 只有开仓成交才触发onPosition
|
|
|
// 如果漏推送 rest补充的订单查询信息过来 可能会导致 kd kk 推送出现计算分母为0的情况
|
|
|
if filled > Decimal::ZERO {
|
|
|
- let filled_order = data.clone();
|
|
|
- info!("移除本地订单:{:?}", filled_order);
|
|
|
+ let mut filled_order = data.clone();
|
|
|
+ filled_order.side = side.clone();
|
|
|
|
|
|
+ info!("移除本地订单:{:?}, local_by_orders: {:?}", filled_order, self.local_position_by_orders);
|
|
|
if self.exchange.contains("spot") { // 如果是现货交易 还需要修改equity
|
|
|
// 现货必须考虑fee 买入fee单位为币 卖出fee单位为u
|
|
|
let fee = data.fee;
|
|
|
@@ -472,7 +476,7 @@ impl Quant {
|
|
|
self.local_position_by_orders.short_avg = Decimal::ZERO;
|
|
|
}
|
|
|
} else {
|
|
|
- info!("错误的仓位方向{}", side);
|
|
|
+ error!("错误的仓位方向{}", side);
|
|
|
}
|
|
|
// 统计合约交易手续费 正fee为扣手续费 负fee为返佣
|
|
|
if data.fee > Decimal::ZERO {
|
|
|
@@ -1021,8 +1025,7 @@ impl Quant {
|
|
|
}
|
|
|
match self.platform_rest.take_order("t-123", side, price, position.amount.abs()).await {
|
|
|
Ok(order)=>{
|
|
|
- info!("清仓下单!");
|
|
|
- info!(?order);
|
|
|
+ info!("清仓下单,{:?}", order);
|
|
|
// 执行完当前币对 结束循环
|
|
|
break;
|
|
|
},
|
|
|
@@ -1069,6 +1072,7 @@ impl Quant {
|
|
|
info!("停机退出 停机原因: {}", self.exit_msg);
|
|
|
// 发送交易状态 await self._post_params()
|
|
|
// TODO: 向中控发送信号
|
|
|
+ self.running.store(false, Ordering::Relaxed);
|
|
|
info!("退出进程!");
|
|
|
}
|
|
|
|
|
|
@@ -1293,15 +1297,9 @@ pub fn on_timer(quant_arc: Arc<Mutex<Quant>>) -> JoinHandle<()> {
|
|
|
|
|
|
#[cfg(test)]
|
|
|
mod tests {
|
|
|
- use std::collections::BTreeMap;
|
|
|
- use std::io::Error;
|
|
|
use rust_decimal::Decimal;
|
|
|
use rust_decimal_macros::dec;
|
|
|
- use tokio::sync::mpsc::{channel, Receiver, Sender};
|
|
|
use tracing::info;
|
|
|
- use standard::Order;
|
|
|
-
|
|
|
- use crate::quant::Quant;
|
|
|
|
|
|
#[tokio::test]
|
|
|
async fn test_new_exchange() {
|