ExecutedOrder -> ActiveOrder

This commit is contained in:
Giulio De Pasquale 2021-01-22 15:37:53 +00:00
parent 16a32cdce7
commit 2216910edb
4 changed files with 25 additions and 22 deletions

View File

@ -1,6 +1,6 @@
use async_trait::async_trait; use async_trait::async_trait;
use bitfinex::api::Bitfinex; use bitfinex::api::Bitfinex;
use bitfinex::orders::{ActiveOrder, OrderMeta}; use bitfinex::orders::OrderMeta;
use bitfinex::ticker::TradingPairTicker; use bitfinex::ticker::TradingPairTicker;
use log::debug; use log::debug;
use std::convert::TryInto; use std::convert::TryInto;
@ -9,7 +9,7 @@ use std::sync::Arc;
use crate::currency::SymbolPair; use crate::currency::SymbolPair;
use crate::models::{ use crate::models::{
ExecutedOrder, OrderBook, OrderBookEntry, OrderForm, OrderKind, Position, PositionState, ActiveOrder, OrderBook, OrderBookEntry, OrderForm, OrderKind, Position, PositionState,
PriceTicker, PriceTicker,
}; };
use crate::BoxError; use crate::BoxError;
@ -53,11 +53,11 @@ impl Client {
self.inner.current_prices(pair).await self.inner.current_prices(pair).await
} }
pub async fn active_orders(&self, pair: &SymbolPair) -> Result<Vec<ExecutedOrder>, BoxError> { pub async fn active_orders(&self, pair: &SymbolPair) -> Result<Vec<ActiveOrder>, BoxError> {
self.inner.active_orders(pair).await self.inner.active_orders(pair).await
} }
pub async fn submit_order(&self, order: OrderForm) -> Result<ExecutedOrder, BoxError> { pub async fn submit_order(&self, order: OrderForm) -> Result<ActiveOrder, BoxError> {
self.inner.submit_order(order).await self.inner.submit_order(order).await
} }
@ -72,8 +72,8 @@ pub trait Connector: Send + Sync {
async fn active_positions(&self, pair: &SymbolPair) -> Result<Option<Vec<Position>>, BoxError>; async fn active_positions(&self, pair: &SymbolPair) -> Result<Option<Vec<Position>>, BoxError>;
async fn current_prices(&self, pair: &SymbolPair) -> Result<TradingPairTicker, BoxError>; async fn current_prices(&self, pair: &SymbolPair) -> Result<TradingPairTicker, BoxError>;
async fn order_book(&self, pair: &SymbolPair) -> Result<OrderBook, BoxError>; async fn order_book(&self, pair: &SymbolPair) -> Result<OrderBook, BoxError>;
async fn active_orders(&self, pair: &SymbolPair) -> Result<Vec<ExecutedOrder>, BoxError>; async fn active_orders(&self, pair: &SymbolPair) -> Result<Vec<ActiveOrder>, BoxError>;
async fn submit_order(&self, order: OrderForm) -> Result<ExecutedOrder, BoxError>; async fn submit_order(&self, order: OrderForm) -> Result<ActiveOrder, BoxError>;
} }
impl Debug for dyn Connector { impl Debug for dyn Connector {
@ -144,11 +144,11 @@ impl Connector for BitfinexConnector {
Ok(ticker) Ok(ticker)
} }
async fn active_orders(&self, pair: &SymbolPair) -> Result<Vec<ExecutedOrder>, BoxError> { async fn active_orders(&self, pair: &SymbolPair) -> Result<Vec<ActiveOrder>, BoxError> {
unimplemented!() unimplemented!()
} }
async fn submit_order(&self, order: OrderForm) -> Result<ExecutedOrder, BoxError> { async fn submit_order(&self, order: OrderForm) -> Result<ActiveOrder, BoxError> {
// TODO: change trading pair formatting. awful. // TODO: change trading pair formatting. awful.
let order_form = match &self.affiliate_code { let order_form = match &self.affiliate_code {
Some(affiliate_code) => bitfinex::orders::OrderForm::new( Some(affiliate_code) => bitfinex::orders::OrderForm::new(
@ -168,7 +168,7 @@ impl Connector for BitfinexConnector {
let response = self.bfx.orders.submit_order(&order_form).await?; let response = self.bfx.orders.submit_order(&order_form).await?;
Ok(ExecutedOrder { Ok(ActiveOrder {
id: 1, id: 1,
group_id: None, group_id: None,
client_id: 0, client_id: 0,
@ -195,7 +195,10 @@ impl Connector for BitfinexConnector {
let x = self let x = self
.bfx .bfx
.book .book
.trading_pair(self.format_trading_pair(&pair), "P0".into()) .trading_pair(
self.format_trading_pair(&pair),
bitfinex::book::BookPrecision::P0,
)
.await?; .await?;
let entries = x let entries = x
@ -295,8 +298,8 @@ impl From<TradingPairTicker> for PriceTicker {
} }
} }
impl From<bitfinex::orders::ActiveOrder> for ExecutedOrder { impl From<bitfinex::orders::ActiveOrder> for ActiveOrder {
fn from(o: ActiveOrder) -> Self { fn from(o: bitfinex::orders::ActiveOrder) -> Self {
Self { Self {
id: o.id, id: o.id,
group_id: o.group_id, group_id: o.group_id,

View File

@ -13,7 +13,7 @@ use tokio::sync::oneshot;
use crate::connectors::{Client, ExchangeKind}; use crate::connectors::{Client, ExchangeKind};
use crate::currency::SymbolPair; use crate::currency::SymbolPair;
use crate::events::{ActorMessage, Event, Message}; use crate::events::{ActorMessage, Event, Message};
use crate::models::{ExecutedOrder, OrderBook, OrderForm, OrderKind, Position, PriceTicker}; use crate::models::{ActiveOrder, OrderBook, OrderForm, OrderKind, Position, PriceTicker};
use crate::strategy::{FastOrderStrategy, OrderStrategy, PositionStrategy, TrailingStop}; use crate::strategy::{FastOrderStrategy, OrderStrategy, PositionStrategy, TrailingStop};
use crate::BoxError; use crate::BoxError;
@ -317,7 +317,7 @@ impl PositionManager {
* ORDERS * ORDERS
******************/ ******************/
pub type TrackedPositionsMap = HashMap<u64, ExecutedOrder>; pub type TrackedPositionsMap = HashMap<u64, ActiveOrder>;
pub struct OrderManagerHandle { pub struct OrderManagerHandle {
sender: Sender<ActorMessage>, sender: Sender<ActorMessage>,
@ -371,7 +371,7 @@ pub struct OrderManager {
receiver: Receiver<ActorMessage>, receiver: Receiver<ActorMessage>,
tracked_positions: TrackedPositionsMap, tracked_positions: TrackedPositionsMap,
pair: SymbolPair, pair: SymbolPair,
open_orders: Vec<ExecutedOrder>, open_orders: Vec<ActiveOrder>,
client: Client, client: Client,
strategy: Box<dyn OrderStrategy>, strategy: Box<dyn OrderStrategy>,
} }

View File

@ -107,7 +107,7 @@ impl OrderBook {
} }
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub struct ExecutedOrder { pub struct ActiveOrder {
pub id: i64, pub id: i64,
pub group_id: Option<i32>, pub group_id: Option<i32>,
pub client_id: i64, pub client_id: i64,
@ -129,7 +129,7 @@ pub struct ExecutedOrder {
pub placed_id: Option<i32>, pub placed_id: Option<i32>,
} }
impl Hash for ExecutedOrder { impl Hash for ActiveOrder {
fn hash<H: Hasher>(&self, state: &mut H) { fn hash<H: Hasher>(&self, state: &mut H) {
state.write(&self.id.to_le_bytes()) state.write(&self.id.to_le_bytes())
} }

View File

@ -5,7 +5,7 @@ use std::fmt::{Debug, Formatter};
use crate::events::{Event, EventKind, EventMetadata, Message}; use crate::events::{Event, EventKind, EventMetadata, Message};
use crate::managers::{OrderManager, PositionManager, TrackedPositionsMap}; use crate::managers::{OrderManager, PositionManager, TrackedPositionsMap};
use crate::models::{ExecutedOrder, OrderForm, Position, PositionProfitState}; use crate::models::{ActiveOrder, OrderForm, Position, PositionProfitState};
use tokio::sync::oneshot; use tokio::sync::oneshot;
/*************** /***************
@ -37,8 +37,8 @@ pub trait OrderStrategy: DynClone + Send {
/// a position that has an open order associated to it. /// a position that has an open order associated to it.
fn on_position_close( fn on_position_close(
&self, &self,
order: &ExecutedOrder, order: &ActiveOrder,
tracked_positions: &HashMap<u64, ExecutedOrder>, tracked_positions: &HashMap<u64, ActiveOrder>,
) -> TrackedPositionsMap; ) -> TrackedPositionsMap;
} }
@ -194,8 +194,8 @@ impl OrderStrategy for FastOrderStrategy {
fn on_position_close( fn on_position_close(
&self, &self,
order: &ExecutedOrder, order: &ActiveOrder,
tracked_positions: &HashMap<u64, ExecutedOrder>, tracked_positions: &HashMap<u64, ActiveOrder>,
) -> TrackedPositionsMap { ) -> TrackedPositionsMap {
unimplemented!() unimplemented!()
} }