rust #10
@ -33,40 +33,6 @@ pub struct PriceManager {
|
||||
client: Client,
|
||||
}
|
||||
|
||||
pub struct PriceManagerHandle {
|
||||
sender: Sender<ActorMessage>,
|
||||
}
|
||||
|
||||
impl PriceManagerHandle {
|
||||
async fn run_price_manager(mut manager: PriceManager) {
|
||||
while let Some(msg) = manager.receiver.recv().await {
|
||||
manager.handle_message(msg).await.unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
pub fn new(pair: SymbolPair, client: Client) -> Self {
|
||||
let (sender, receiver) = channel(1);
|
||||
|
||||
let price_manager = PriceManager::new(receiver, pair, client);
|
||||
tokio::spawn(PriceManagerHandle::run_price_manager(price_manager));
|
||||
|
||||
Self { sender }
|
||||
}
|
||||
|
||||
pub async fn update(&mut self, tick: u64) -> Result<OptionUpdate, BoxError> {
|
||||
let (send, recv) = oneshot::channel();
|
||||
|
||||
self.sender
|
||||
.send(ActorMessage {
|
||||
message: Message::Update { tick },
|
||||
respond_to: send,
|
||||
})
|
||||
.await?;
|
||||
|
||||
Ok(recv.await?)
|
||||
}
|
||||
}
|
||||
|
||||
impl PriceManager {
|
||||
pub fn new(receiver: Receiver<ActorMessage>, pair: SymbolPair, client: Client) -> Self {
|
||||
PriceManager {
|
||||
@ -112,6 +78,40 @@ impl PriceManager {
|
||||
}
|
||||
}
|
||||
|
||||
pub struct PriceManagerHandle {
|
||||
sender: Sender<ActorMessage>,
|
||||
}
|
||||
|
||||
impl PriceManagerHandle {
|
||||
async fn run_price_manager(mut manager: PriceManager) {
|
||||
while let Some(msg) = manager.receiver.recv().await {
|
||||
manager.handle_message(msg).await.unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
pub fn new(pair: SymbolPair, client: Client) -> Self {
|
||||
let (sender, receiver) = channel(1);
|
||||
|
||||
let price_manager = PriceManager::new(receiver, pair, client);
|
||||
tokio::spawn(PriceManagerHandle::run_price_manager(price_manager));
|
||||
|
||||
Self { sender }
|
||||
}
|
||||
|
||||
pub async fn update(&mut self, tick: u64) -> Result<OptionUpdate, BoxError> {
|
||||
let (send, recv) = oneshot::channel();
|
||||
|
||||
self.sender
|
||||
.send(ActorMessage {
|
||||
message: Message::Update { tick },
|
||||
respond_to: send,
|
||||
})
|
||||
.await?;
|
||||
|
||||
Ok(recv.await?)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct PriceEntry {
|
||||
tick: u64,
|
||||
@ -431,14 +431,14 @@ impl OrderManager {
|
||||
// No open order, undercutting best price with limit order
|
||||
let closing_price = self.best_closing_price(&position, &order_book);
|
||||
|
||||
// TODO: hardcoded platform to Margin!
|
||||
// TODO: hardcoded platform to Derivative!
|
||||
let order_form = OrderForm::new(
|
||||
self.pair.clone(),
|
||||
OrderKind::Limit {
|
||||
price: closing_price,
|
||||
amount: position.amount().neg(),
|
||||
},
|
||||
TradingPlatform::Margin,
|
||||
TradingPlatform::Derivative,
|
||||
);
|
||||
|
||||
info!("Submitting {} order", order_form.kind());
|
||||
|
Loading…
Reference in New Issue
Block a user