rust #10

Merged
peperunas merged 127 commits from rust into master 2021-02-18 09:42:16 +00:00
2 changed files with 44 additions and 3 deletions
Showing only changes of commit 957d3e32b8 - Show all commits

View File

@ -8,10 +8,38 @@ use bitfinex::ticker::TradingPairTicker;
use crate::currency::{Symbol, SymbolPair};
use crate::models::{Order, OrderKind, Position, PositionState};
use crate::BoxError;
use std::sync::Arc;
#[derive(Eq, PartialEq, Hash, Clone)]
pub enum ExchangeKind {
Bitfinex,
Bitfinex {
api_key: String,
api_secret: String,
affiliate_code: Option<String>,
},
}
/// You do **not** have to wrap the `Client` it in an [`Rc`] or [`Arc`] to **reuse** it,
/// because it already uses an [`Arc`] internally.
#[derive(Clone)]
pub struct Client {
inner: Arc<Box<dyn Connector>>,
}
impl Client {
pub fn new(exchange: ExchangeKind) -> Self {
let inner = match exchange {
ExchangeKind::Bitfinex {
api_key,
api_secret,
affiliate_code,
} => BitfinexConnector::new(&api_key, &api_secret).with_affiliate_code(affiliate_code),
};
Client {
inner: Arc::new(Box::new(inner)),
}
}
}
#[async_trait]

View File

@ -1,5 +1,18 @@
use crate::connectors::{Client, Connector};
use crate::models::{Order, Position};
use crate::ticker::Ticker;
use std::collections::VecDeque;
struct EventManager {}
struct PositionManager {}
struct PositionManager {
queue: VecDeque<Position>,
open_positions: Vec<Position>,
client: Client,
}
struct OrderManager {}
struct OrderManager {
queue: VecDeque<Order>,
open_orders: Vec<Order>,
client: Client,
}