no concurrent requests, nonce issue has to be fixed
This commit is contained in:
parent
32419952a8
commit
f66d7ef142
@ -2,6 +2,7 @@ use std::collections::HashMap;
|
|||||||
use std::ops::Neg;
|
use std::ops::Neg;
|
||||||
|
|
||||||
use futures_util::stream::FuturesUnordered;
|
use futures_util::stream::FuturesUnordered;
|
||||||
|
use futures_util::StreamExt;
|
||||||
use log::{debug, error, info, trace};
|
use log::{debug, error, info, trace};
|
||||||
use merge::Merge;
|
use merge::Merge;
|
||||||
use tokio::sync::mpsc::channel;
|
use tokio::sync::mpsc::channel;
|
||||||
@ -16,7 +17,6 @@ use crate::models::{
|
|||||||
};
|
};
|
||||||
use crate::strategy::{FastOrderStrategy, OrderStrategy, PositionStrategy, TrailingStop};
|
use crate::strategy::{FastOrderStrategy, OrderStrategy, PositionStrategy, TrailingStop};
|
||||||
use crate::BoxError;
|
use crate::BoxError;
|
||||||
use futures_util::StreamExt;
|
|
||||||
|
|
||||||
pub type OptionUpdate = (Option<Vec<Event>>, Option<Vec<Message>>);
|
pub type OptionUpdate = (Option<Vec<Event>>, Option<Vec<Message>>);
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ impl PriceManagerHandle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn new(pair: SymbolPair, client: Client) -> Self {
|
pub fn new(pair: SymbolPair, client: Client) -> Self {
|
||||||
let (sender, receiver) = channel(8);
|
let (sender, receiver) = channel(1);
|
||||||
|
|
||||||
let price_manager = PriceManager::new(receiver, pair, client);
|
let price_manager = PriceManager::new(receiver, pair, client);
|
||||||
tokio::spawn(PriceManagerHandle::run_price_manager(price_manager));
|
tokio::spawn(PriceManagerHandle::run_price_manager(price_manager));
|
||||||
@ -164,7 +164,7 @@ impl PositionManagerHandle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn new(pair: SymbolPair, client: Client, strategy: Box<dyn PositionStrategy>) -> Self {
|
pub fn new(pair: SymbolPair, client: Client, strategy: Box<dyn PositionStrategy>) -> Self {
|
||||||
let (sender, receiver) = channel(8);
|
let (sender, receiver) = channel(1);
|
||||||
|
|
||||||
let manager = PositionManager::new(receiver, pair, client, strategy);
|
let manager = PositionManager::new(receiver, pair, client, strategy);
|
||||||
|
|
||||||
@ -184,7 +184,7 @@ impl PositionManagerHandle {
|
|||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let response = recv.await?;
|
let response = recv.await?;
|
||||||
|
println!("Got response: {:?}", response);
|
||||||
Ok(response)
|
Ok(response)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -228,6 +228,8 @@ impl PositionManager {
|
|||||||
_ => (None, None),
|
_ => (None, None),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
println!("Responding with {:?}", messages);
|
||||||
|
|
||||||
Ok(msg
|
Ok(msg
|
||||||
.respond_to
|
.respond_to
|
||||||
.send((events, messages))
|
.send((events, messages))
|
||||||
@ -281,6 +283,7 @@ impl PositionManager {
|
|||||||
.insert(self.current_tick(), pos_post_tick.clone());
|
.insert(self.current_tick(), pos_post_tick.clone());
|
||||||
self.active_position = Some(pos_post_tick);
|
self.active_position = Some(pos_post_tick);
|
||||||
|
|
||||||
|
println!("Returning: {:?}", messages);
|
||||||
return Ok((events, messages));
|
return Ok((events, messages));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -326,7 +329,7 @@ impl OrderManagerHandle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn new(pair: SymbolPair, client: Client, strategy: Box<dyn OrderStrategy>) -> Self {
|
pub fn new(pair: SymbolPair, client: Client, strategy: Box<dyn OrderStrategy>) -> Self {
|
||||||
let (sender, receiver) = channel(8);
|
let (sender, receiver) = channel(1);
|
||||||
|
|
||||||
let manager = OrderManager::new(receiver, pair, client, strategy);
|
let manager = OrderManager::new(receiver, pair, client, strategy);
|
||||||
|
|
||||||
@ -405,11 +408,15 @@ impl OrderManager {
|
|||||||
info!("Closing position #{}", position_id);
|
info!("Closing position #{}", position_id);
|
||||||
|
|
||||||
debug!("Retrieving open orders, positions and current prices...");
|
debug!("Retrieving open orders, positions and current prices...");
|
||||||
let (open_orders, order_book, open_positions) = tokio::join!(
|
// let (open_orders, order_book, open_positions) = tokio::join!(
|
||||||
self.client.active_orders(&self.pair),
|
// self.client.active_orders(&self.pair),
|
||||||
self.client.order_book(&self.pair),
|
// self.client.order_book(&self.pair),
|
||||||
self.client.active_positions(&self.pair)
|
// self.client.active_positions(&self.pair)
|
||||||
);
|
// );
|
||||||
|
|
||||||
|
let open_orders = self.client.active_orders(&self.pair).await;
|
||||||
|
let order_book = self.client.order_book(&self.pair).await;
|
||||||
|
let open_positions = self.client.active_positions(&self.pair).await;
|
||||||
|
|
||||||
let open_orders = match open_orders {
|
let open_orders = match open_orders {
|
||||||
Ok(open_orders) => open_orders,
|
Ok(open_orders) => open_orders,
|
||||||
@ -599,6 +606,7 @@ impl PairManager {
|
|||||||
messages.merge(opt_pos_messages);
|
messages.merge(opt_pos_messages);
|
||||||
messages.merge(opt_order_messages);
|
messages.merge(opt_order_messages);
|
||||||
|
|
||||||
|
println!("Messages: {:?}", messages);
|
||||||
// TODO: to move into Handler?
|
// TODO: to move into Handler?
|
||||||
if let Some(messages) = messages {
|
if let Some(messages) = messages {
|
||||||
for m in messages {
|
for m in messages {
|
||||||
|
Loading…
Reference in New Issue
Block a user