ExecutedOrder -> ActiveOrder
This commit is contained in:
parent
16a32cdce7
commit
2216910edb
@ -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,
|
||||||
|
@ -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>,
|
||||||
}
|
}
|
||||||
|
@ -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())
|
||||||
}
|
}
|
||||||
|
@ -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!()
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user